Podstawy linii poleceń – Część 2

Przydatne komendy

W tym rozdziale przedstawię kilka przydatnych komend, o których istnieniu warto wiedzieć. Nie musisz znać na pamięć szczegółów ich użycia – zawsze możesz zajrzeć tutaj, lub skorzystać z argumentu /?, aby dowiedzieć się więcej o danej komendzie.

Komenda cd oraz katalog roboczy

Komendę cd, czyli change directory, już poznaliśmy. Jest to jedna z cześciej używanych komend. Powoduje ona zmianę katalogu roboczego na ten wskazany jako argument:

C:\Users\Przemek>cd Desktop C:\Users\Przemek\Desktop>
Ponieważ katalog roboczy oraz nawigacja pomiędzy katalogami to ważne zagadnienia związane z linią poleceń, komendzie cd poświęcę więcej uwagi, aby je omówić.

Katalog roboczy jest katalogiem "bazowym" wykonywania komend w linii poleceń.

Dla przykładu, jeżeli będziesz chciał skompilować klasę Java za pomocą kompilatora javac, to kompilator ten domyślnie będzie szukał pliku, który mu wskażesz, w aktualnym katalogu roboczym linii poleceń. Jeżeli utworzyłbym plik MojaKlasa.java w katalogu:

C:\Users\Przemek\Desktop\programowanie

to poniższa próba kompilacji klasy zawartej w pliku MojaKlasa.java zakończyłaby się niepowodzeniem, gdyby moim katalogiem roboczym był inny katalog:

C:\Users\Przemek\Desktop>javac MojaKlasa.java error: file not found: MojaKlasa.java

Jeżeli zmienimy katalog roboczy za pomocą komendy cd na podkatalog programowanie, to kompilacja tym razem zakończy się sukcesem:

C:\Users\Przemek\Desktop>cd programowanie C:\Users\Przemek\Desktop\programowanie>javac MojaKlasa.java C:\Users\Przemek\Desktop\programowanie>

Kolejny przykład – jeżeli skorzystasz z komendy cd, aby przejść do pewnego katalogu, to ten katalogu musi znajdować się w aktualnym katalogu roboczym. Innymi słowy, katalog, do którego chcesz przejść, musi być podkatalogiem katalogu roboczego – spójrz na poniższą strukturę katalogów:

Users
|
`-- Przemek
    |
    |-- AppData
    |
    `-- Desktop
        |
        |-- dokumenty
        |
        |-- ksiazki
        |
        `-- programowanie

Gdyby moim katalogiem roboczym w linii poleceń był katalog Desktop, to mógłbym z niego przejść bezpośrednio do katalogów: dokumenty, ksiazki, lub programowanie. Gdyby tym katalogiem był katalog Przemek, to mógłbym przejść bezpośrednio do katalogów AppData lub Desktop.

Możesz zastanawiać się teraz, czy w takim razie można przejść do katalogu, który jest kilka poziomów niżej – np. z katalogu Users do katalogu dokumenty. Tak – wystarczy podać ścieżkę do konkretnego katalogu z uwzględnieniem jego katalogów nadrzędnych, rozdzielonych znakiem backslash \:

C:\Users>cd Przemek\Desktop\dokumenty C:\Users\Przemek\Desktop\dokumenty>

Bardzo przydatnym skrótem podczas nawigowania między katalogami jest Tab – powoduje on automatyczne dokończenie wpisywanej przez nas nazwy katalogu. Możemy użyć go kilkukrotnie, aby wybrać katalog, który nas interesuje, jeżeli za pierwszym razem dopasowany został inny katalog o podobnej nazwie. Użycie tego skrótu obrazuje poniższa animacja:

Przykład skrót Tab

Katalog nadrzędny

Katalog-rodzic aktualnego katalogu, w którym się znajdujemy, czyli katalog nadrzędny, określamy w specjalny sposób – za pomocą dwóch kropek ..

Dzięki użyciu .. możemy przejść do katalogu wyżej:

C:\Users\Przemek\Desktop\dokumenty>cd .. C:\Users\Przemek\Desktop>

Z .. możemy korzystać wielokrotnie. Dla przykładu, użycie ..\.. oznacza "katalog nadrzędny katalog nadrzędnego", czyli katalog dwa poziomy wyżej. Spójrzmy na przykład – pierwsze .. oznacza katalog nadrzędny katalogu Desktop, czyli katalog Przemek, a drugie .. oznacza katalog nadrzędny katalogu Przemek, czyli Users – i do tego katalogu właśnie przejdziemy:

C:\Users\Przemek\Desktop>cd ..\.. C:\Users>

Możemy też przeplatać nazwy katalogów i użycie .. aby dotrzeć do interesującego nas katalogu:

C:\Users\Przemek\Desktop\dokumenty>cd ..\..\AppData C:\Users\Przemek\AppData>

Aktualny katalog

Aktualny katalog także oznaczamy w specjalny sposób – za pomocą jednej kropki. Czasem możemy mieć potrzebę wskazać lokalizację do pewnego pliku, a użycie .\ na początku jednoznacznie świadczy o tym, że chodzi nam o lokalizację względną do aktualnego katalogu roboczego.

Przechodzenie na inne dyski

Często nasze komputery posiadają kilka dysków. Próba przejścia do katalogu na innym dysku za pomocą komendy cd nie skutkuje powodzeniem:

C:\Users\Przemek\Desktop>cd D:\programowanie C:\Users\Przemek\Desktop>

Aby zmienić dysk, na którym pracujemy z poziomu linii poleceń, należy napisać po prostu identyfikator tego dysku wraz z dwukropkiem – bez żadnej komendy:

C:\Users\Przemek\Desktop>d: D:\programowanie>

Innym sposobem jest dodanie argumentu /d do komendy cd, który spowoduje, że dysk zostanie zmieniony:

C:\Users\Przemek\Desktop>cd /d D:\programowanie D:\programowanie>

Komenda dir

Ciężko byłoby zapamiętać nazwy wszystkich plików i katalogów na dysku, do których moglibyśmy chcieć się odnieść w linii poleceń. Na szczęście mamy do dyspozycji komendę dir, która zwraca listę katalogów i plików w podanym jako argument katalogu. Jeżeli nie podamy argumentu, to zwróci ona listę katalogów i plików w aktualnym katalogu roboczym:

C:\Users\Przemek\Desktop>dir 08.04.2020 22:01 <DIR> . 08.04.2020 22:01 <DIR> .. 08.04.2020 13:20 <DIR> dokumenty 02.04.2020 01:11 <DIR> ksiazki 08.04.2020 22:01 <DIR> programowanie 02.04.2020 14:26 600 repcheck.bat 08.04.2020 21:38 1 015 todo.txt

Zauważ, że na zwróconej liście są także . (aktualny katalog) oraz .. (wskazanie na katalog nadrzędny).

Jeżeli podamy jako argument ściężkę do katalogu, to komenda dir zwróci jego zawartość:

C:\Users\Przemek\Desktop>dir dokumenty 08.04.2020 22:08 <DIR> . 08.04.2020 22:08 <DIR> .. 08.04.2020 22:08 <DIR> artykuly 08.04.2020 22:06 <DIR> kursy

Przydatne argumenty modyfikujące sposób działania komendy dir to /b oraz /s. Pierwszy pokazuje same nazwy plików i katalogów, bez dodatkowych informacji, a drugi pokazuje pliki i katalogi także we wszystkich podkatalogach (oraz podkatalogach podkatalogów itd.). Przykład użycia obu tych argumentów:

C:\Users\Przemek\Desktop>dir /b /s C:\Users\Przemek\Desktop\dokumenty C:\Users\Przemek\Desktop\ksiazki C:\Users\Przemek\Desktop\programowanie C:\Users\Przemek\Desktop\repcheck.bat C:\Users\Przemek\Desktop\todo.txt C:\Users\Przemek\Desktop\dokumenty\artykuly C:\Users\Przemek\Desktop\dokumenty\kursy ..pozostałe wpisy pominięte..
W systemach Linux komenda o podobnym działaniu to ls (list files).

Komenda more

Jeżeli wywołamy komendę, która zwraca dużo danych, zostaną one na raz wypisane do okna linii poleceń. Czasami możemy mieć potrzebę przeglądać wyniki komendy bądź zawartość pliku strona po stronie.

Komenda more oferuje taką funkcjonalność. Przekazujemy jej dane do wyświetlenia bądź wskazujemy plik. Jeżeli dane nie zmieszczą się na jednym ekranie, na dole zobaczymy napis -- MORE --, a kolejną stronę danych będziemy mogli zobaczyć po naciśnięciu Spacji. Możemy też przeglądać wpisy linia po linii naciskając Enter. Aby zakończyć przeglądanie przedwcześnie, należy nacisnąć q (małe Q).

Spójrzmy na przykład użycia more do wyświetlenia zawartości długiego pliku:

C:\Users\Przemek\Desktop>more LiczbaZnakowWPliku.java import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class LiczbaZnakowWPliku { public static void main(String[] args) { File f = new File(pobierzLokalizacjePliku()); int liczbaZnakow = 0; try (FileReader fileReader = new FileReader(f)) { while (fileReader.read() != -1) { -- More (44%) --

Komenda more może także otrzymać dane ze standardowego wejścia, przekazane jej za pomocą przekierowania z innej komendy (o tych zagadnieniach opowiemy sobie w kolejnych rozdziałach):

C:\Users\Przemek\Desktop>dir /s /b D:\kursjava_przyklady | more D:\kursjava_przyklady\LICENSE D:\kursjava_przyklady\Nauka programowania w jezyku Java - Odpowiedzi na pytania i zadania.pdf D:\kursjava_przyklady\README.md D:\kursjava_przyklady\Rozdzial_01__Wstep D:\kursjava_przyklady\Rozdzial_02__Komentarze_i_formatowanie_kodu D:\kursjava_przyklady\Rozdzial_03__Zmienne D:\kursjava_przyklady\Rozdzial_04__Instrukcje_warunkowe D:\kursjava_przyklady\Rozdzial_05__Petle D:\kursjava_przyklady\Rozdzial_06__Tablice D:\kursjava_przyklady\Rozdzial_07__Metody D:\kursjava_przyklady\Rozdzial_08__Testowanie_kodu -- More --

Komenda echo

Komenda echo wypisuje przekazany jej jako argument tekst:

C:\Users\Przemek>echo Witaj! Witaj!

Dodatkowo, komenda ta może być stosowana do wypisywania wartości zmiennych systemowych. Zmienne systemowe przechowują wartości używane przez system operacyjny oraz różne aplikacje.

Jedną z najistotniejszych, z punktu widzenia programistów, zmiennych systemowych jest zmienna path. Określa ona ścieżki do programów, do których mamy dostęp m. in. z linii poleceń. Aby odnieść się do wartości zmiennej systemowej, otaczamy ją znakami procentu %. Możemy w ten sposób wypisać wartość zmiennej path za pomocą komendy echo:

C:\Users\Przemek\Desktop>echo %path% C:\Windows\system32;C:\Windows;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\Java\jdk-12.0.2\bin;D:\programowanie\app\apache-maven-3.6.3\bin;D:\programowanie\app\groovy-2.5.9\bin;

Komenda echo stosowana jest także w skryptach do wypisywania tekstu na ekran linii poleceń, w tym wartości zmiennych zdefiniowanych w skryptach. Może ona także przyjąć argument off lub on, który powoduje wyłączenie bądź włączenie wypisywania wywołanych komend. Kiedy to może być przydatne – zobaczymy w rozdziale o pisaniu skryptów.

Zmiennym systemowym poświęcony jest osobny rozdział.

Komenda set

Komenda set służy do przypisywania wartości zmiennym – zarówno systemowym, jak i zmiennym w skryptach, które możemy pisać dla linii poleceń.

Aby przypisać zmiennej pewną wartość, podajemy jej nazwę oddzieloną od wartości znakiem równości:

C:\Users\Przemek>echo %java_home% C:\Program Files\Java\jdk-12.0.2 C:\Users\Przemek>set java_home=nowa_wartosc C:\Users\Przemek>echo %java_home% nowa_wartosc

W powyższym przykładzie zmieniłem wartość zmiennej systemowej java_home na nowa_wartosc.

Ustawiając wartość zmiennej możemy pobrać jej aktualną wartość i dodać ją do nowej wartości. Jest to przydatne, jezeli np. chcemy dodać do zmiennej path lokalizację do pewnego programu, zachowując tym samym dotychczasowe wpisy zawarte w tej zmiennej:

C:\Users\Przemek\Desktop>echo %path% C:\Windows\system32;C:\Windows;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\Java\jdk-12.0.2\bin;D:\programowanie\app\apache-maven-3.6.3\bin;D:\programowanie\app\groovy-2.5.9\bin; C:\Users\Przemek>set path=%path%D:\programowanie\app\gradle\bin C:\Users\Przemek\Desktop>echo %path% C:\Windows\system32;C:\Windows;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\Java\jdk-12.0.2\bin;D:\programowanie\app\apache-maven-3.6.3\bin;D:\programowanie\app\groovy-2.5.9\bin;D:\programowanie\app\gradle\bin

Aby dodać nową wartość na koniec zmiennej systemowej path, komendzie set przekazałem aktualną wartość tej zmiennej za pomocą składni %nazwa_zmiennej%, po której nastąpiła ścieżka D:\programowanie\app\gradle\bin.

Wartości ustawiane w zmiennyh systemowych za pomocą komendy set są widoczne tylko w tym oknie poleceń, w którym zostały ustawione. Aby na stałe zmienić wartość zmiennej systemowej, musisz przejść do edycji zmiennych systemowych w Panelu Sterowania. Więcej o tym zagadnieniu w rozdziale o zmiennych systemowych.

Komenda clip

Komenda clip jest przydatna, gdy potrzebujemy skopiować wynik wykonania pewnej komendy do schowka, tzn. abyśmy mogli go potem wkleić do dowolnego edytora za pomocą skrótu Ctrl + v.

Dla przykładu, możemy skopiować wartość zmiennej systemowej wypisanej za pomocą komendy echo:

C:\Users\Przemek>echo %path% | clip C:\Users\Przemek>

Gdy teraz skorzystamy ze skrótu Ctrl + v np. w programie Notepad++, wklejony zostanie następujący tekst:

C:\Windows\system32;C:\Windows;
  C:\Windows\System32\WindowsPowerShell\v1.0\;
  C:\Program Files\Git\cmd;
  C:\Program Files\Java\jdk-12.0.2\bin;
  D:\programowanie\app\apache-maven-3.6.3\bin;
  D:\programowanie\app\groovy-2.5.9\bin;
  D:\programowanie\app\gradle\bin

Możemy w ten sam sposób skopiować wynik działania innych komend, np. komendy dir.

Ponownie skorzystaliśmy z | (pipe) pomiędzy dwoma komendami – powoduje to przekazanie wyniku działania jednej komendy jako dane wejściowe do drugiej, o czym dokładniej sobie opowiemy w dedykowanym temu zagadnieniu rozdziale.

Komenda cls

Komenda cls (clear screen) służy do wyczyszczenia okna linii poleceń ze wszystkich komend (oraz wyników ich działania), której do tej pory wykonaliśmy. Przydaje się, gdy chcemy "na czysto" popatrzeć na wyniki kolejnej komendy, którą wywołamy.

Załóżmy, że moje okno linii poleceń wygląda następująco:

Microsoft Windows [Version 10.0.18362.720] (c) 2019 Microsoft Corporation. Wszelkie prawa zastrzeżone. C:\Users\Przemek>echo %path% C:\Windows\system32;C:\Windows;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\Java\jdk-12.0.2\bin;D:\programowanie\app\apache-maven-3.6.3\bin;D:\programowanie\app\groovy-2.5.9\bin; C:\Users\Przemek>cls

Po zatwierdzeniu Enterem komendy cls, którą zacząłem pisać powyżej, całe okno linii poleceń będzie wyglądało następująco:

C:\Users\Przemek>

Komenda tree

Komenda tree zwraca czytelnie sformatowane drzewo wszystkich podkatalogów katalogu przekazanego jako argument, lub katalogu roboczego, jeżeli nie podamy żadnego katalogu:

D:\kursjava_przyklady\rozwiazania_do_zadan>tree Folder PATH listing for volume Windows Volume serial number is 64B5-816A C:. ├───rozdzial_1 │ ├───brak_koncowego_znaku │ └───wypisz_imie ├───rozdzial_2 │ ├───brak_main │ └───dopisz_komentarze ├───rozdzial_3 │ ├───koncowe_zadania_rozwiazania │ │ ├───liczba_znakow_w_slowie │ │ ├───obwod_trojkata_pobrane_dane │ │ ├───odwrotna_kolejnosc_pobrane_slowa │ │ ├───pole_kola_o_podanym_promieniu │ │ ├───wielkie_litery │ │ └───zadania_wynik_rzeczywisty │ └───podstawy_zmiennych_rozwiazania │ ├───aktualna_data │ ├───dodawanie_liczb │ ├───inicjaly │ ├───liczba_miesiecy_w_roku │ └───obwod_trojkata ..pozostałe wpisy pominięte..

Możemy przekazać argument /f, który spowoduje wyświetlenie także plików zawartych w katalogach:

D:\kursjava_przyklady\rozwiazania_do_zadan>tree /f Folder PATH listing for volume Windows Volume serial number is 64B5-816A C:. ├───rozdzial_1 │ ├───brak_koncowego_znaku │ │ Powitanie.java │ │ │ └───wypisz_imie │ WypiszImie.java │ ├───rozdzial_2 │ ├───brak_main │ │ HelloWorldBezMain.java │ │ │ └───dopisz_komentarze │ HelloWorld.java ..pozostałe wpisy pominięte..

Komenda where

Komenda where szuka plików, których nazwa pasuje do podanego wzorca. Pliki wyszukiwane są w podanym przez nas katalogu. Możemy przekazać argument /r aby komenda where szukała także we wszystkich podkatalogach:

D:\kursjava_przyklady\rozwiazania_do_zadan>where /r . *.java D:\kursjava_przyklady\rozwiazania_do_zadan\rozdzial_1\brak_koncowego_znaku\Powitanie.java D:\kursjava_przyklady\rozwiazania_do_zadan\rozdzial_1\wypisz_imie\WypiszImie.java D:\kursjava_przyklady\rozwiazania_do_zadan\rozdzial_2\brak_main\HelloWorldBezMain.java D:\kursjava_przyklady\rozwiazania_do_zadan\rozdzial_2\dopisz_komentarze\HelloWorld.java D:\kursjava_przyklady\rozwiazania_do_zadan\rozdzial_3\koncowe_zadania_rozwiazania\liczba_znakow_w_slowie\LiczbaZnakowWSlowie.java D:\kursjava_przyklady\rozwiazania_do_zadan\rozdzial_3\koncowe_zadania_rozwiazania\obwod_trojkata_pobrane_dane\ObwodTrojkataPobraneDane.java ..pozostałe wpisy pominięte..

Zauważ, że jako drugi argument podałem kropkę – ten argument to katalog, w którym komenda where ma rozpocząć szukanie. Kropka oznacza "aktualny katalog", czyli katalog, w którym w tej chwili znajdujemy się w linii poleceń – w tym przypadku, kropka oznacza katalog D:\kursjava_przyklady\rozwiazania_do_zadan.

Powyższa komenda szuka wszystkich plików o rozszerzeniu .java. Gwiazdka * na początku wzorca nazwy pliku oznacza "dowolny ciąg znaków".

Komenda findstr

Aby wyszukać pliki, w których znajduje się pewien ciąg znaków, skorzystaj z komendy findstr. Przydatnymi argumentami są:

  • /s – wyszukiwanie we wszystkich podkatalogach,
  • /i – wyszukiwanie bez uwzględnienia wielkości liter, tzn. frazy np. tekst i TEKST będą uznawane za takie same – domyślnie, frazy te uznawane są za różne.

Poniższy przykład wywołania komendy findstr wyszukuje tekst Hello we wszystkich plikach z rozszerzeniem .java we wszystkich podkatalogach, bez uwzględnienia wielkości znaków w szukanej frazie Hello:

D:\kursjava_przyklady\rozwiazania_do_zadan>findstr /s /i Hello *.java rozdzial_2\brak_main\HelloWorldBezMain.java:public class HelloWorldBezMain rozdzial_2\dopisz_komentarze\HelloWorld.java:public class HelloWorld {

Jako wynik komenda zwraca ścieżkę do pliku, w którym znaleziono szukaną frazę, oraz linię, w której ta fraza została znaleziona.

Ponownie skorzystaliśmy z gwiazdki * aby określić, że w tym miejscu mogą znaleźć się dowolne znaki, czyli powyższa komenda będzie szukała we wszystkich plikach z rozszerzeniem .java, niezależnie od tego, jakie te pliki mają nazwy.

Komenda type

Komenda type wyświetla na ekranie linii poleceń zawartość pliku podanego jako argument:

D:\rozdzial_1\brak_koncowego_znaku>type Powitanie.java // kompilacja programu zakonczy sie bledem, // poniewaz brakuje nawiasu klamrowego zamykajacego klase public class Powitanie { public static void main (String[] args) { System.out.println("Witam!"); }

Komendy mkdir i rmdir

Komenda mkdir tworzy katalog o podanej nazwie, a rmdir usuwa go. Możesz podać kilka oddzielonych od siebie nazw, aby utworzyć hierarchię katalogów.

Komenda:

C:\Users\Przemek\Desktop>mkdir pewien_katalog\drugi\trzeci

Spowoduje utworzenie katalogu o nazwie pewien_katalog, w którym znajdzie się katalog drugi, a ten z kolei będzie zawierał katalog trzeci.

Komenda rmdir domyślnie usuwa katalog tylko w przypadku, gdy jest on pusty:

C:\Users\Przemek\Desktop>rmdir pewien_katalog Katalog nie jest pusty.

Katalog nie został usunięty, ponieważ poprzednią komendą mkdir utworzyliśmy w nim zagnieżdżone katalogi. Aby usunąć katalog i wszystkie jego pliki i podkatalogi, użyj argumentu /s:

C:\Users\Przemek\Desktop>rmdir /s pewien_katalog pewien_katalog, Are you sure (Y/N)? Y

W trakcie działania komenda poprosiła mnie o potwierdzenie, czy aby na pewno chcę usunąć katalog pewien_katalog i całą jego zawartość – potwierdziłem wpisując znak Y i zatwierdzając Enterem.

Uwaga! Argument /s komendy rmdir jest potencjalnie destruktywny – używaj go z rozwagą.

Komenda del

Komenda rmdir z poprzedniego rozdziału dedykowana jest dla katalogów. Aby usuwać pliki, korzystamy z komendy del:

C:\Users\Przemek\Desktop>del LiczbaZnakowWPliku.java

Komendy ping i ipconfig

Komenda ping wysyła zapytanie do komputera określonego przez adres IP lub nazwę. Przydaje się, gdy chcemy sprawdzić, czy np. mamy dostęp do Internetu:

C:\Users\Przemek\Desktop>ping google.com Pinging google.com [172.217.16.14] with 32 bytes of data: Reply from 172.217.16.14: bytes=32 time=7ms TTL=57 Reply from 172.217.16.14: bytes=32 time=4ms TTL=57 Reply from 172.217.16.14: bytes=32 time=5ms TTL=57 Reply from 172.217.16.14: bytes=32 time=7ms TTL=57 Ping statistics for 172.217.16.14: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 4ms, Maximum = 7ms, Average = 5ms

Możesz dodać argument -n liczba, aby komenda ping wykonała podaną liczbę zapytań, np. -n 10 spowoduje wysłanie 10 zapytań.

Innym przydatnym zastosowaniem komendy ping jest sprawdzenie, czy z naszego komputera jesteśmy w stanie dostać się do innego komputera bądź maszyny wirtualnej. Przydaje się ona np. gdy mamy zainstalowaną aplikację do tworzenia wirtualnych maszyn (np. VirtualBox) i chcemy sprawdzić, czy mamy dostęp do maszyny wirtualnej, lub czy ona ma dostęp do naszego komputera.

Aby jednak wiedzieć, jaki adres przekazać komendzie ping, możesz skorzystać z komendy ipconfig, która zwraca listę adresów skojarzonych z Twoim komputerem (lub maszyną wirtualną):

C:\Users\Przemek\Desktop>ipconfig Windows IP Configuration Wireless LAN adapter Wi-Fi: Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : ff20::1e16:ccb2:71fe:62ee%21 IPv4 Address. . . . . . . . . . . : 192.168.0.20 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.0.1

Zaznaczony powyżej adres można przekazać jako argument do komendy ping z poziomu maszyny wirtualnej, aby sprawdzić, czy ma ona dostęp do naszego "głównego" komputera.

Komenda help

Komenda help wywołana bez żadnych argumentów zwraca listę dostępnych komend, dedykowanych dla systemu Windows:

C:\Users\Przemek>help ASSOC Displays or modifies file extension associations. ATTRIB Displays or changes file attributes. BREAK Sets or clears extended CTRL+C checking. BCDEDIT Sets properties in boot database to control boot loading. CACLS Displays or modifies access control lists (ACLs) of files. CALL Calls one batch program from another. CD Displays the name of or changes the current directory. CHCP Displays or sets the active code page number. CHDIR Displays the name of or changes the current directory. CHKDSK Checks a disk and displays a status report. CHKNTFS Displays or modifies the checking of disk at boot time. CLS Clears the screen. CMD Starts a new instance of the Windows command interpreter. COLOR Sets the default console foreground and background colors. ...reszta komenda została pominięta...

Mi wyświetliły się 84 komendy. Możesz przekazać dowolną komendę jako argument do komendy help, aby otrzymać o niej szczegółowe informacje:

C:\Users\Przemek>help color Sets the default console foreground and background colors. COLOR [attr] attr Specifies color attribute of console output ...pozostały opis został pominięty...

Komenda title

Komenda title powoduje ustawienie tytułu okna linii poleceń na to podane jako argument. Jeżeli potrzebujesz otworzyć kilka okien linii poleceń, to możesz skorzystać z tej komendy, aby nadać im nazwy, dzięki czemu łatwiej będzie Ci identyfikować konkretne okna na pasku zadań.

Linia poleceń komenda title

Zauważ, że tytuł powyższego okna zmienił się na "Okno z katalogiem Programowanie" z domyślnego "Wiersz polecenia".

Komenda exit

Komenda exit powoduje zamknięcie okna linii poleceń. Czasem wygodniej jest napisać exit i wcisnąć Enter, niż za pomocą myszy kliknąć na X w prawym górnym rogu okna, aby je zamknąć.

Zmienne systemowe a linia poleceń

Zmienne systemowe to nazwane wartości zdefiniowane w systemie operacyjnym.

Jedną z kluczowych zmiennych systemowych dla programistów jest zmienna o nazwie path. Ta zmienna określa, które z zainstalowanych w naszym systemie programów będziemy mogli używać z poziomu linii poleceń.

Dla przykładu, jednorazowo, gdy otrzymamy nowy komputer lub zainstalujemy nową wersję systemu Windows, w zmiennej path ustawiamy ścieżkę do katalogu, w którym znajduje się zainstalowane przez nas JDK, czyli Java Development Kit. Jest to zestaw programów, które programiści Java potrzebują do kompilowania i uruchamiania napisanych przez siebie aplikacji. Jeżeli ustawisz w path ścieżkę do swojej instalacji JDK, to z linii poleceń będziesz mógł m. in. kompilować programy Java za pomocą aplikacji o nazwie javac (kompilator Java) oraz uruchamiać skompilowane programy za pomocą programu java (Maszyna Wirtualna Java).

Aby sprawdzić w linii poleceń, jakie zmienne systemowe są ustawione i jakie wartości mają przypisane, możesz wywołać komendę set bez żadnych argumentów:

C:\Users\Przemek>set ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\Przemek\AppData\Roaming CommonProgramFiles=C:\Program Files\Common Files GROOVY_HOME=D:\programowanie\app\groovy-2.5.9 JAVA_HOME=C:\Program Files\Java\jdk-12.0.2 Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\Java\jdk-12.0.2\bin;D:\programowanie\app\apache-maven-3.6.3\bin;D:\programowanie\app\groovy-2.5.9\bin; ..pozostałe wpisy pominięte..

Powyżej zaprezentowałem tylko kilka ze zmiennych systemowych, jakie wyświetla komenda set.

Aby wyświetlić wartość jednej konkretnej zmiennej, skorzystaj z komendy echo, której przekażesz nazwę zmiennej otoczoną znakami procenta %:

C:\Users\Przemek>echo %java_home% C:\Program Files\Java\jdk-12.0.2

Jeżeli chcesz uruchomić aplikację z poziomu linii poleceń, do której nie ustawiłeś ścieżki w zmiennej path, to możesz to zrobić albo podając pełną ścieżkę do tej aplikacj w linii poleceń, albo przechodząc do katalogu, w którym ta aplikacja się znajduje i wpisując nazwę tego programu.

Dla przykładu, gdybym nie miał ścieżki do kompilatora języka Java w zmiennej path, mógłbym uruchomić go wpisując w linii poleceń:

C:\Users\Przemek\Desktop>"C:\Program Files\Java\jdk-12.0.2\bin\javac"

Zmiana wartości zmiennej systemowej

Jeżeli chcesz zmienić wartość zmiennej systemowej, masz dwie opcje.

Ustawianie wartości zmiennej w linii poleceń

Możesz użyć komendy set, by zmienić wartość zmiennej tylko na rzecz aktualnie uruchomionej linii poleceń – zmiana ta nie będzie widoczna w innych otwartych oknach linii poleceń, a gdy zamkniesz okno linii poleceń, w którym dokonałeś zmiany, nie będzie ona nigdzie zapamiętana. Ustawianie wartości zmiennej systemowej widzieliśmy w jednym z poprzednich rozdziałów przy okazji omawianiu komendy set:

C:\Users\Przemek>set path=%path%D:\programowanie\app\gradle\bin

Powyżej ustawiamy wartość zmiennej path – nowa wartość to złączenie aktualnej wartości tej zmiennej z nowym wpisem: D:\programowanie\app\gradle\bin. Aktualną wartość zmiennej pobieramy za pomocą składni %nazwa_zmiennej%.

Globalne ustawienie wartości zmiennej

Możesz na stałe, globalnie zmienić wartość zmiennej systemowej jeżeli w Panelu Sterowania klikniesz na System, następnie na Zaawansowane ustawienia systemu po lewej stronie, i wreszcie klikniesz przycisk Zmienne środowiskowe... w oknie, które się pojawi. Znajdziesz tam listę zmiennych systemowych i ich wartości, a także będziesz mógł je edytować bądź dodać nowe.

Panel sterowania możesz otworzyć klikając na lupę na pasku dolnym, obok znaku Windows, i wpisując Panel sterowania. Możesz też po prostu wpisać Zmienne, by od razu przejść do edycji zmiennych systemowych:

Edycja zmiennych srodowiskowych w Windows 10

Zazwyczaj będziesz korzystać właśnie z tej globalnej zmiany wartości zmiennych systemowych. Jest tylko jedna rzecz, o której musisz pamiętać: globalne zmiany wartości zmiennych systemowych nie są widoczne w aktualnie otwartych oknach linii poleceń – musisz otworzyć nowe okno linii poleceń, aby widzieć zmianę.

Dla przykładu, załóżmy, że otwieram linię poleceń i chcę korzystać w niej z programu o nazwie gradle, ale ścieżki do tego programu nie ma w zmiennej systemowej path. Otwieram więc okno edycji zmiennych systemowych i dopisuję do zmiennej path ścieżkę:

D:\programowanie\app\gradle\bin

Wracam do linii poleceń i nadal nie mogę korzystać z programu o nazwie gradle – muszę zamknąć okno linii poleceń i ponownie je otworzyć, by zmiana wprowadzona globalnie do zmiennej systemowej path była widziana w linii poleceń.

Więcej o ustawianiu zmiennych systemowych możesz dowiedzieć się z rozdziału o ustawianiu zmiennej path w moim kursie programowania w języku Java.

Standardowe wejście i wyjście (standard in / standard out)

Niektóre komendy, z których korzystamy z linii poleceń, oczekują pewnych argumentów, na podstawie których wykonują swoje zadanie, lub w trakcie działania proszą nas o podanie pewnych danych. Czasem komendy te zamiast działać na argumentach lub czekać na dane od użytkownika, mogą wczytać dane ze standardowego wejścia, a zmiast wypisać wynik działania na ekran, mogą wysłać go na standardowe wyjście.

Standardowe wejście

Standardowe wejście to źródło pewnych danych, na których komenda ma zadziałać.

Poznana wcześniej komenda more służy do przeglądania danych strona po stronie w linii poleceń. Zamiast przekazywać tej komendzie nazwę pliku jako argument, możemy przekazać jej dane ze standardowego wejścia:

C:\Users\Przemek\Desktop>more < LiczbaZnakowWPliku.java import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class LiczbaZnakowWPliku { public static void main(String[] args) { File f = new File(pobierzLokalizacjePliku()); int liczbaZnakow = 0; try (FileReader fileReader = new FileReader(f)) { while (fileReader.read() != -1) { -- More (44%) --

Zawartość pliku LiczbaZnakowWPliku.java została przekazana nie jako nazwa pliku, lecz za pomocą mechanizmu standardowego wejścia do komendy more za pomocą znaku mniejszości <.

Czym różni się taki sposób przekazywania danych od podania argumentu? Dzięki standardowemu wejściu możemy do komendy przekierowywać dane z innej komendy. Przekierowanie metod jest tematem kolejnego rozdziału.

Ponadto, komendy, które oczekują od użytkownika wprowadzenia danych w oknie linii poleceń, mogą automatycznie odczytać je ze standardowego wejścia. Spójrz na poniższy program napisany w języku Java – prosi on użytkownika o podanie imienia i wypisuje powitanie. Imię odczytywane jest ze standardowego wejścia w metodzie getString:

import java.util.Scanner;

public class Powitanie {
  public static void main(String[] args) {
    System.out.println("Podaj imie: ");
    String imie = getString();

    System.out.println("Witaj " + imie);
  }

  public static String getString() {
    return new Scanner(System.in).next();
  }
}

Jeżeli uruchomimy powyższy program nie podając źródła standardowego wejścia, to domyślnie będzie nim okno konsoli – program poprosi nas o podanie imienia, a my będzie mogli je wpisać, bezpośrednio w oknie konsoli, zatwierdzając Enterem:

C:\Users\Przemek\Desktop>java Powitanie Podaj imie: Przemek Witaj Przemek

Tekst Przemek został wpisany przeze mnie – program czekał, aż podam pewną wartość.

Ponownie uruchomimy powyższy program, lecz tym razem wskażemy plik, którego zawartość ma być źródłem standardowego wejścia. Utworzyłem plik dane.txt z jednym słowem:

Abrakadabra

Ponowne uruchomienie programu Powitanie:

C:\Users\Przemek\Desktop>java Powitanie < dane.txt Podaj imie: Witaj Abrakadabra

Zauważ, że tym razem program nie czekał na podanie przeze mnie imienia. Zamiast tego, zostało ono odczytane ze standardowego wejścia, którym, w tym przypadku, była treść pliku dane.txt.

Ważną cechą działania na standardowym wejściu jest to, że dajemy użytkownikom naszych programów możliwość działania w dwóch trybach: interaktywnym, w którym podajemy na bieżąco wartości, których program wymaga do działania, oraz w trybie, gdzie program sam odczytuje wymagane przez niego dane, które przekazaliśmy mu przekierowując źródło standardowego wejścia.

Standardowe wyjście

Standardowe wyjście to "miejsce", gdzie wynik działania komendy ma zostać przekazany.

Standardowe wyjście często przydaje się, gdy chcemy zapisać do pliku wynik działania komendy, której wywołanie skutkowałoby wypisaniem na ekran dużej ilości danych. Możemy zamiast tego przekierować wynik do pliku – wszystko, co komenda wypisałaby na ekran, zamiast tego zostanie zapisane w podanym przez nas pliku. Dzięki temu możemy później przeanalizować takie dane lub porównać je z wynikami wywołania kolejnej komendy. Spójrz na poniższy przykład:

C:\Users\Przemek\Desktop>dir > lista_plikow.txt C:\Users\Przemek\Desktop>

Komenda dir wypisuje zawartość plików i katalogów w aktualnym katalogu. Zazwyczaj produkuje ona sporo danych – ale tym razem nic nie zostało wypisane na ekran. Zamiast tego, skorzystaliśmy z przekierowania wyniku komendy do pliku za pomocą znaku większości >, po którym nastąpiła nazwa pliku. Po wykonaniu tej komendy, na moim pulpicie pojawił się plik lista_plikow.txt o następującej treści:

Volume in drive C is Windows Volume Serial Number is 64B5-816A Directory of C:\Users\Przemek\Desktop 14.04.2020 10:50 <DIR> . 14.04.2020 10:50 <DIR> .. 08.04.2020 22:08 <DIR> dokumenty 02.04.2020 01:11 <DIR> ksiazki 14.04.2020 10:51 0 lista_plikow.txt 08.04.2020 22:01 <DIR> programowanie 02.04.2020 14:26 600 repcheck.bat 2 File(s) 3 725 694 bytes 5 Dir(s) 38 682 284 032 bytes free

Gdybym nie skorzystał z przekierowania standardowego wyjścia, to powyższą treść pliku zobaczyłbym na ekranie linii poleceń.

Przekierowanie wykonania komend (pipe) oraz łączenie komend (command chaining)

Zamiast wypisywać na ekran wynik działania komendy, możemy przekazać te dane jako standardowe wejście do innej komendy. Innymi słowy, wynik działania pewnej komendy stanie się wejściem kolejnej komendy. Takie łączenie komend wykonujemy za pomocą znaku | (pipe).

Móglibyśmy na przykład wynik komendy tree przekierować do komendy more, dzięki czemu będziemy mogli przeglądać strukturę katalogów strona po stronie:

D:\javacourse\kursjava_przyklady>tree | more Folder PATH listing for volume Data Volume serial number is EAB6-1FA0 D:. ├───Rozdzial_01__Wstep ├───Rozdzial_02__Komentarze_i_formatowanie_kodu ├───Rozdzial_03__Zmienne ├───Rozdzial_04__Instrukcje_warunkowe ├───Rozdzial_05__Petle ├───Rozdzial_06__Tablice ├───Rozdzial_07__Metody ├───Rozdzial_08__Testowanie_kodu ├───Rozdzial_09__Klasy │ ├───przykladdomyslny │ ├───przykladowypakiet │ │ ├───eng │ │ └───pl │ └───wspoldzielenieobiektow -- More --

Możemy także wynik pewnej komendy w łatwy sposób wstawić do schowka, abyśmy mogli go potem wkleić do dowolnego edytora za pomocą skrótu Ctrl + v:

C:\Users\Przemek\Desktop>dir | clip C:\Users\Przemek\Desktop>

Po wywołaniu powyższej komendy, gdy otworzę np. Notepad++, po użyciu skrótu Ctrl + v do edytora wklejony zostanie wynik, która normalnie komenda dir wypisałaby na ekran.

Jeżeli masz potrzebę, możesz wielokrotnie przekierować wynik kolejnych komend:

D:\javacourse\kursjava_przyklady>dir /s /b | sort | more

Powyżej listujemy wszystkie pliki i podkatalogi, następnie sortujemy ich nazwy za pomocą komendy sort, a na końcu przekazujemy je do komendy more, by przeglądać wyniki strona po stronie.

Przekierowanie wykonania komend jest szczególnie popularne w systemach Linux, gdzie możemy za pomocą tego mechanizmu bardzo wiele osiągnąć, ponieważ mamy do dyspozycji dużo komend.

Łączenie komend (command chaining)

Poza przekierowaniem wyniku komend, możemy także zlecić wykonanie kilku komend jedna po drugiej, rozdzielając je pojedynczym lub podwójnym znakiem & (ampersand).

Jeżeli użyjemy pojedynczego znaku, kolejne komendy zostaną wykonane niezależnie od tego, czy poprzedzająca je komenda zakończyłą się sukcesem:

D:\javacourse\kursjava_przyklady>cd xyz & dir System nie może odnaleźć określonej ścieżki. Volume in drive D is Data Volume Serial Number is EAB6-1FA0 Directory of D:\javacourse\kursjava_przyklady 03.03.2020 17:09 <DIR> . 03.03.2020 17:09 <DIR> .. 24.07.2019 13:41 35 823 LICENSE 17.03.2020 22:51 778 483 Nauka programowania w jezyku Java - Odpowiedzi na pytania i zadania.pdf 24.07.2019 13:41 970 README.md 24.07.2019 13:41 <DIR> Rozdzial_01__Wstep 24.07.2019 13:41 <DIR> Rozdzial_02__Komentarze_i_formatowanie_kodu 24.07.2019 13:41 <DIR> Rozdzial_03__Zmienne 24.07.2019 13:41 <DIR> Rozdzial_04__Instrukcje_warunkowe 24.07.2019 13:41 <DIR> Rozdzial_05__Petle 24.07.2019 13:41 <DIR> Rozdzial_06__Tablice 24.07.2019 13:41 <DIR> Rozdzial_07__Metody 24.07.2019 13:41 <DIR> Rozdzial_08__Testowanie_kodu 24.07.2019 13:41 <DIR> Rozdzial_09__Klasy 03.03.2020 17:09 <DIR> Rozdzial_10__Dziedzicznie_i_polimorfizm 13.03.2020 14:18 <DIR> Rozdzial_11__Wyjatki 16.03.2020 18:33 <DIR> rozwiazania_do_zadan 3 File(s) 815 276 bytes 14 Dir(s) 33 283 215 360 bytes free

Zauważ powyżej, że pierwsza z komend to cd xyz. Katalog xyz nie istnieje, więc wynik pierwszej komendy, zaznaczony powyżej, to System nie może odnaleźć określonej ścieżki. Kolejna komenda, dir, została wykonana pomimo, że pierwsza nie zakończyła się sukcesem.

W przypadku podwójnego znaku &, następna komenda wykonana zostanie tylko wtedy, gdy poprzedzająca ją komenda zakończy się sukcesem:

D:\javacourse\kursjava_przyklady>cd xyz && dir System nie może odnaleźć określonej ścieżki. D:\javacourse\kursjava_przyklady>

Łączenie komend przydaje się w sytuacjach, gdy chcesz wykonać kilka komend bez potrzeby uruchamiania każdej z nich z osobna, jedna po drugiej.

Kopiowanie i wklejanie z/do linii poleceń

Aby kopiowanie i wklejanie opisane poniżej za pomocą skrótów klawiaturowych Ctrl + c i Ctrl + v było możliwe, upewnij się, że w Twojej linii poleceń została włączona ta funkcjonalność. Po kliknięciu prawym przyciskiem myszy na tytuł okna linii poleceń, wybierz Właściwości. Zaznacz pole Włącz skróty klawiaturowe z klawiszem Ctrl i kliknij przycisk OK:

Właściwości skróty Ctrl

Kopiowanie

Czasem możemy mieć potrzebę skopiować zawartość linii poleceń lub wynik wywołania komendy. Mamy kilka sposobów, aby to osiągnąć.

Komenda clip

Możemy skorzystać z poznanej komendy clip, która kopiuje do schowka dane ze swojego standardowego wejścia, które możemy przekazać do niej z innej komendy za pomocą przekierowania znakiem | (pipe) – spójrzmy na przykład:

C:\Users\Przemek\Desktop>tree | clip C:\Users\Przemek\Desktop>

Komenda tree zamiast wypisać swój wynik na ekran, przekazała go do komendy clip za pomocą znaku przekierowania |. Komenda clip otrzymane dane umieściła w schowku – mógłbym teraz te dane wkleić do dowolnego edytora tekstu za pomocą skrótu Ctrl + v.

Zapis wyniku komendy do pliku

Jeżeli w wyniku działania komendy na ekranie pojawia się dużo danych, możemy po prostu zapisać je do pliku za pomocą przekierowania standardowego wyjścia, korzystając ze znaku >. Przykład:

C:\Users\Przemek\Desktop>dir > lista_plikow_i_katalogow.txt C:\Users\Przemek\Desktop>

Wynik działania komendy dir został zapisany do pliku lista_plikow_i_katalogow.txt, zamiast być wyświetlony na ekranie. Plik ten nie musiał wcześniej istnieć – zostanie dla nas utworzony. Możemy otworzyć go w dowolnym edytorze i sprawdzić zapisane tam dane.

Skróty klawiaturowe

Innym sposobem na skopiowanie fragmentu treści okna linii poleceń jest zaznaczanie go kursorem myszy, a następnie użycie skrótu Ctrl + c lub, po prostu, naciśnięcie klawisza Enter:

D:\kursjava_przyklady>dir /b LICENSE Nauka programowania w jezyku Java - Odpowiedzi na pytania i zadania.pdf README.md
Rozdzial_01__Wstep Rozdzial_02__Komentarze_i_formatowanie_kodu Rozdzial_03__Zmienne Rozdzial_04__Instrukcje_warunkowe Rozdzial_05__Petle Rozdzial_06__Tablice Rozdzial_07__Metody Rozdzial_08__Testowanie_kodu Rozdzial_09__Klasy Rozdzial_10__Dziedzicznie_i_polimorfizm Rozdzial_11__Wyjatki
rozwiazania_do_zadan

Gdy zaznaczysz pewny obszar tekstu w linii poleceń, jego kolor i tło zmieni się, jak widać to na powyższym listingu – zaznaczyłem fragment wyniku komendy dir /b. Jeżeli teraz użyję skrótu Ctrl + c lub nacisnę Enter, to zaznaczenie zniknie (fragment powróci do poprzedniego koloru), a w schowku znajdzie się zaznaczony przeze mnie wcześniej tekst i będę go mógł wkleić do edytora tekstu za pomocą skrótu Ctrl + v.

Uwaga! Jeżeli pewna komenda jest w trakcie wykonywania, a Ty zaznaczysz fragment tekstu zawartego w linii poleceń, to wykonanie komendy zostanie zawieszone. Możesz nacisnąć klawisz Escape, aby anulować zaznaczenie, dzięki czemu komenda będzie kontynuować wykonanie.

Wklejanie

Aby wkleić zawartość schowka do okna linii poleceń, możesz skorzystać ze skrótu Shift + Insert lub Ctrl + v.

Miej jednak na uwadze, że wklejanie tekstu, który zawiera kilka oddzielonych od siebie linii tekstu, spowoduje, że te linie zostaną potraktowane jako komendy do wykonania – zazwyczaj nie jest to zamierzone działanie. Upewnij się, że kopiujesz jedną linię tekstu, którą chcesz następnie wkleić do okna linii poleceń.

Przydatne skróty i konfiguracja linii poleceń

W tym rozdziale przedstawię przydatne skróty klawiaturowe oraz informacje o konfigurowaniu okna linii poleceń.

Skróty klawiaturowe w linii poleceń

Korzystając z linii poleceń mamy do dyspozycji kilka bardzo przydatnych skrótów klawiaturowych.

Ostatnio używane komendy

Prawdopodobnie najważniejszymi i najczęściej używanymi skrótami klawiaturowymi użytkowników linii poleceń są strzałka w górę oraz strzałka w dół .

Jeżeli wywołasz kilka komend w linii poleceń, to możesz później za pomocą strzałki w górę przejść po kolei przez używane wcześniej komendy – zostaną ona automatycznie umieszczone w linii poleceń i będziesz mógł wywołać je ponownie lub zmodyfikować. Strzałka w górę powoduje przejście do poprzedniej komendy, a strzałka w dół do następnej .

Sprawdź działanie tych skrótów w praktyce. Wywołaj kilka komend w linii poleceń, a potem użyj strzałek, aby zobaczyć te bardzo przydatne skróty w akcji.

Aby zmodyfikować komendę, użyj strzałek aby przejść do miejsca w komendzie, które chcesz zmodyfikować. Możesz też stosować klawisze Home i End, aby przejść na początek/koniec komendy.

Historia komend

Innym sposobem, aby odnieść się do ostatnio używanych komend, jest skorzystanie z klawisza F7. Spowoduje to otworzenie małego okna z listą ostanio wywoływanych komend:

Linia poleceń skrót F7

Możesz strzałkami nawigować pomiędzy komendami, a po naciśnięciu Entera komenda zostanie wybrana i wykonana. Jeżeli nie chcesz wywołać żadnej komendy z listy, naciśnij klawisz Escape.

Dopełnianie nazw plików i katalogów

Innym bardzo często stosowanym skrótem jest Tab. Jego użycie powoduje dopełnienie wpisywanej przez nas nazwy pliku bądź katalogu. Dzięki temu nie musimy wpisywać pełnej nazwy – wystarczy wpisać kilka pierwszych liter, a następnie nacisnąć klawisz Tab – nazwa zostanie dopełniane za nas automatycznie.

Jeżeli w katalogu jest kilka plików bądź katalogów o tej samej nazwie, możesz użyć klawisza Tab ponownie, aby przejść przez dostępne pliki, aż wyświetli się ten szukany przez Ciebie. Wypróbuj ten skrót w linii poleceń, aby zobaczyć, jak funkcjonuje.

Pełny ekran

Jeżeli chcesz szybko zmienić rozmiar okna linii poleceń na pełny ekran, to skorzystaj ze skrótu Alt + Enter. Tym samym skrótem powodujesz powrót okna do poprzedniej wielkości.

Anulowanie wpisywania komendy

Jeżeli wpisujesz komendę i postanowisz, że nie chcesz jej wywołać lub chcesz wpisać inną komendę, możesz albo nacisnąć Escape, aby skasować treść wpisywanej komendy, albo Ctrl + c, aby anulować kontynuację wpisywania komendy.

Przerywanie komendy

Aby przerwać komendę, która aktualnie się wykonuje, skorzystaj ze skrótu Ctrl + c. Jeżeli to nie pomoże, użyj skrótu Ctrl + d.

Konfigurowanie okna linii poleceń

Okno linii poleceń możesz skonfigurować na wiele sposóbów otwierając okno Właściwości. Kliknij prawym przyciskiem myszy na tytuł okna linii poleceń i wybierz Właściwości.

Możesz przejrzeć dostępne tam zakładki i poeksperymentować z różnymi ustawieniami.

Wygląd linii poleceń

Przydatna może być zmiana rodzaju, wielkości, oraz koloru czcionki, a także kolor tła okna linii poleceń w zakładkach Czcionka i Kolory. Możesz dostosować wygląd okna, aby był najczytelniejszy dla Ciebie. Zmiany kolorów widoczne są dopiero po otwarciu nowego okna.

Rozmiar okna

Możesz zmienić na stałe rozmiar okna linii poleceń w zakładce Układ. Możesz także ustawić stałe miejsce, gdzie okno linii poleceń ma się pokazywać na ekranie, gdy je uruchamiasz, wypełniając w zakładce Układ wartości pól Pozycja okna (wcześniej jednak musisz odznaczyć pole Wybór pozycji okna przez system).

Przezroczyste tło okna linii poleceń

Okno lini poleceń może mieć ustawiony poziom nieprzezroczystości. Przydaje się to, jeżeli mamy czasem otwarte pod oknem linii poleceń inne okna, w których znajduje się coś, co może się nam przydać podczas pracy z linią poleceń.

Domyślnie wartość ta wynosi 100%, więc okno jest całkowicie nieprzezroczyste. Ja ustawiłem tę wartość na 85%, dzięki czemu jestem w stanie widzieć inne okna znajdujące się pod spodem linii poleceń.

Aby zmienić poziom nieprzezroczystości, otwórz okno z Właściwościami i przejdź do zakładki Kolory – na dole okna znajdziesz suwak, którym możesz ustawić tę wartość:

Ustawianie przezroczystości

Przykład okna linii poleceń z nieprzezroczystością ustawioną na 85%:

Linia poleceń przezroczystość

Proste skrypty .cmd

Poza wywoływaniem komend pojedynczo, możemy także tworzyć skrypty korzystające z komend.

Skrypty mogą wykonywać dowolne zadania, zależnie od naszych potrzeb. Możemy nawet korzystać w nich z instrukcji warunkowych, pętli, oraz funkcji. Skrypty mogą przyjmować argumenty, na podstawie których będą wykonywały swoje zadanie.

Skrypty zapisujemy jako pliki tekstowe z rozszerzeniem .cmd. Możemy pisać je w dowolnym edytorze tekstowym, takim jak Notepad++. Takie skrypty uruchamia się albo poprzez dwukrotne kliknięcie pliku, w którym są zawarte, albo poprzez linię poleceń wpisując po prostu ich nazwę i zatwierdzając Enterem – musimy jednak być w katalogu, w którym plik ze skryptem się znajduje. Ewentualnie możemy ścieżkę do katalogu ze skryptem dodać do zmiennej systemowej path, aby móc z niego korzystać z dowolnego katalogu.

Gdy w skrypcie wykonujesz pewne komendy, to są one wypisywane na ekran – czasem zależy nam tylko na wyniku komendy i chcemy ukryć samo jej wywołanie. Aby to osiągnąć, korzystamy z instrukcji @echo off.

W skryptach możemy umieszczać komentarze – są to linie, które zaczynają się od dwóch dwukropków :: lub słowa REM.

Jeżeli skrypt wykonuje pewne zadanie i nie czeka na żadne dane od użytkownika, to okno linii poleceń od razu zniknie po zakończeniu działania skryptu (jeżeli skrypt został uruchomiony przez dwukrotne kliknięcie pliku). Możemy w takim skrypcie dodać instrukcję pause, która spowoduje, że skrypt będzie czekał na naciśnięcie dowolnego klawisz, zanim zakończy działanie.

Poniżej znajduje się przykład prostego skryptu, którego używam do sprawdzenia, czy w którymś z moich repozytoriów Gita nie ma plików, których jeszcze nie zacommittowałem:

@echo off

cd /d D:\programowanie\projekty\javacourse
echo -------------------------
echo Kurs Java
echo -------------------------
git status -s
echo:

cd D:\programowanie\projekty\kurs_maven
echo -------------------------
echo Kurs Maven
echo -------------------------
git status -s
echo:

cd D:\programowanie\projekty\my-docs
echo -------------------------
echo Moje dokumenty
echo -------------------------
git status -s
echo:

pause

Na początku skryptu wyłączam wyświetlanie na ekranie wywoływanych komend za pomocą @echo off – interesuje mnie tylko wynik ich działania. Następnie, przechodzę do katalogu z repozytorium za pomocą komendy cd. W kolejnych liniach korzystam z komendy echo, aby wyświetlić informację tekstową o repozytorium, które jest aktualnie sprawdzane. Komenda git status -s to odpytanie Gita o status repozytorium – czy są w nim aktualnie jakieś niezacommittowane pliki. Po komendzie git używam komendy echo:, aby wypisać pustą linię. W kolejnych liniach robię to samo dla innych repozytoriów. Na końcu skryptu dodałem instrukcję pause, dzięki czemu po uruchomieniu skryptu, gdy wykona on swoje zadanie, poczeka, aż nacisnę dowolny klawisz, dzięki czemu będę mógł przeanalizować dane wyświetlone przez Gita.

Przykładowy wynik działania tego skryptu jest następujący:

Kurs Java
-------------------------
 M "artykuly/podstawy_linii_polecen/Podstawy linii polecen.odt"
?? artykuly/podstawy_linii_polecen/img/linia_polecen_przezroczystosc.png
?? artykuly/podstawy_linii_polecen/img/ustawianie_nieprzezroczystosci.png

-------------------------
Kurs Maven
-------------------------

-------------------------
Moje dokumenty
-------------------------

Press any key to continue . . .

Z mojego doświadczenia wynika, że skrypty dla systemu Windows pisze się rzadko, dlatego jeżeli chcesz dowiedzieć się więcej o tym zagadnieniu, zajrzyj do jednego z dwóch bardzo dobrych artykułów na ten temat:

Wikibooks: Windows Batch Scripting

Windows Batch Scripting

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Nie musisz podawać swojego imienia, e-mailu, ani strony www, aby opublikować komentarz. Komentarze muszą zostać zatwierdzone, aby były widoczne na stronie.