Materiał, którego tłumaczenie dzisiaj publikujemy, przeznaczony jest dla tych, którzy chcą opanować linię poleceń Linuksa. Umiejętność efektywnego wykorzystania tego narzędzia pozwala zaoszczędzić mnóstwo czasu. W szczególności porozmawiamy tutaj o powłoce Bash i 21 przydatnych poleceniach. Porozmawiamy także o tym, jak używać flag poleceń i aliasów Bash, aby przyspieszyć wpisywanie długich instrukcji.
→
Warunki
Kiedy nauczysz się pracować z wierszem poleceń Linuksa, zetkniesz się z wieloma koncepcjami pomocnymi w nawigacji. Niektóre z nich, jak „Linux” i „Unix” lub „Shell” i „terminal”, są czasami mylone. Porozmawiajmy o tych i innych ważnych terminach.
Teraz, gdy omówiliśmy już ważne terminy, chcę zaznaczyć, że będę tutaj używać zamiennie terminów „Bash”, „powłoka” i „wiersz poleceń”, a także terminów „katalog” i „folder”.
Standardowy stdin
), standardowe wyjście (standardowe wyjście, stdout
) i standardowe wyjście błędu (błąd standardowy, stderr
).
Jeśli w przykładowych poleceniach, które zostaną podane poniżej, znajdziesz coś takiego my_whatever
- oznacza to, że ten fragment należy zastąpić czymś swoim. Na przykład nazwa pliku.
Zanim przejdziemy do analizy poleceń, którym poświęcony jest ten materiał, przyjrzyjmy się ich liście i krótkiemu opisowi.
21 poleceń Basha
▍Uzyskiwanie informacji
man
: Wyświetla podręcznik użytkownika (pomoc) dla polecenia.pwd
: wyświetla informacje o katalogu roboczym.ls
: wyświetla zawartość katalogu.ps
: Umożliwia przeglądanie informacji o uruchomionych procesach.
▍Manipulacja systemem plików
cd
: zmień katalog roboczy.touch
: utwórz plik.mkdir
: utwórz katalog.cp
: Skopiuj plik.mv
: Przenieś lub usuń plik.ln
: utwórz łącze.
▍Przekierowanie we/wy i potoki
<
: przekierowaniestdin
.>
: przekierowaniestdout
.|
: potokował wyjście jednego polecenia na wejście innego polecenia.
▍Czytanie plików
head
: przeczytaj początek pliku.tail
: przeczytaj koniec pliku.cat
: Przeczytaj plik i wydrukuj jego zawartość na ekranie lub połącz pliki.
▍Usuwanie plików, zatrzymywanie procesów
rm
: Usuń plik.kill
: zatrzymaj proces.
▍Wyszukaj
grep
: szukać informacji.ag
: zaawansowane polecenie wyszukiwania.
▍Archiwizacja
tar
: tworzenie archiwów i praca z nimi.
Porozmawiajmy o tych poleceniach bardziej szczegółowo.
Szczegóły zespołu
Na początek zajmijmy się poleceniami, których wyniki wydawane są w formularzu stdout
. Zwykle wyniki te pojawiają się w oknie terminala.
▍Uzyskiwanie informacji
man command_name
: wyświetla przewodnik poleceń, czyli informacje pomocy.
pwd
: wyświetla ścieżkę do bieżącego katalogu roboczego. W trakcie pracy z wierszem poleceń użytkownik często musi dowiedzieć się, gdzie dokładnie w systemie się znajduje.
ls
: wyświetla zawartość katalogu. To polecenie jest również używane dość często.
ls -a
: Pokaż ukryte pliki. flaga zastosowana tutaj -a
polecenia ls
. Użycie flag pomaga dostosować zachowanie poleceń.
ls -l
: Wyświetla szczegółowe informacje o plikach.
Należy pamiętać, że flagi można łączyć. Na przykład - tak: ls -al
.
ps
: Wyświetl działające procesy.
ps -e
: Wyświetla informacje o wszystkich uruchomionych procesach, a nie tylko tych związanych z bieżącą powłoką użytkownika. Polecenie to jest często używane w tej formie.
▍Manipulacja systemem plików
cd my_directory
: zmień katalog roboczy na my_directory
. Aby przejść o jeden poziom wyżej w drzewie katalogów, użyj my_directory
względna ścieżka dostępu ../
.
polecenie CD
touch my_file
: tworzenie pliku my_file
wzdłuż podanej ścieżki.
mkdir my_directory
: utwórz folder my_directory
wzdłuż podanej ścieżki.
mv my_file target_directory
: przenieś plik my_file
do folderu target_directory
. Określając katalog docelowy, musisz użyć bezwzględnej ścieżki do niego (a nie konstrukcji typu ../
).
zespół mv
może być również używany do zmiany nazw plików lub folderów. Na przykład może to wyglądać tak:
mv my_old_file_name.jpg my_new_file_name.jpg
: utwórz kopię pliku
cp my_source_file target_directorymy_source_file
i umieść go w folderze target_directory
.
ln -s my_source_file my_target_file
: utwórz dowiązanie symboliczne my_target_file
na plik my_source_file
. Jeśli zmienisz łącze, oryginalny plik również ulegnie zmianie.
Jeśli plik my_source_file
zostaną wówczas usunięte my_target_file
pozostanie. Flaga -s
polecenia ln
umożliwia tworzenie linków do katalogów.
Porozmawiajmy teraz o przekierowaniu we/wy i potokach.
▍Przekierowanie we/wy i potoki
my_command < my_file
: zastępuje standardowy deskryptor pliku wejściowego (stdin
) na plik my_file
. Może to być przydatne, jeśli polecenie oczekuje na wprowadzenie danych z klawiatury, a dane te są już zapisane w pliku.
my_command > my_file
: przekierowuje wyniki polecenia, tj. to, co normalnie by się tam znalazło stdout
i wyprowadzić na ekran do pliku my_file
. Jeśli plik my_file
nie istnieje – jest tworzone. Jeśli plik istnieje, zostanie nadpisany.
Na przykład po wykonaniu polecenia ls > my_folder_contents.txt
zostanie utworzony plik tekstowy zawierający listę zawartości bieżącego katalogu roboczego.
Jeśli zamiast symbolu >
skorzystaj z konstrukcji >>
, wówczas pod warunkiem, że istnieje plik, do którego przekierowywane jest wyjście polecenia, plik ten nie zostanie nadpisany. Dane zostaną dodane na końcu tego pliku.
Przyjrzyjmy się teraz przetwarzaniu potoku danych.
Dane wyjściowe jednego polecenia są podawane na wejście innego polecenia. To jak łączenie jednej rury z drugą
first_command | second_command
: symbol przenośnika, |
, służy do wysyłania danych wyjściowych jednego polecenia do innego polecenia. Do czego wysyła polecenie znajdujące się po lewej stronie opisywanej struktury stdout
, Popaść w stdin
polecenie po prawej stronie symbolu potoku.
W systemie Linux dane można przesyłać potokowo za pomocą dowolnego dobrze sformułowanego polecenia. Często mówi się, że wszystko w Linuksie jest potokiem.
Możesz łączyć wiele poleceń za pomocą symbolu potoku. To wygląda tak:
first_command | second_command | third_command
Potok kilku poleceń można porównać do potoku
Należy pamiętać, że gdy polecenie znajduje się po lewej stronie symbolu |
, wyprowadza coś do stdout
, to, co wygeneruje, jest natychmiast dostępne jako stdin
drugi zespół. Czyli okazuje się, że wykorzystując potok mamy do czynienia z równoległym wykonywaniem poleceń. Czasami może to prowadzić do nieoczekiwanych rezultatów. Szczegóły na ten temat można przeczytać
Porozmawiajmy teraz o czytaniu danych z plików i wyświetlaniu ich na ekranie.
▍Czytanie plików
head my_file
: czyta linie z początku pliku i wyświetla je na ekranie. Możesz przeczytać nie tylko zawartość plików, ale także to, co wyprowadzają polecenia stdin
używając tego polecenia jako części potoku.
tail my_file
: czyta linie z końca pliku. Tego polecenia można również użyć w potoku.
Głowa (głowa) jest z przodu, a ogon (ogon) z tyłu
Jeśli pracujesz z danymi przy użyciu biblioteki pandas, wówczas polecenia head
и tail
powinien być ci znany. Jeżeli tak nie jest, spójrz na powyższy rysunek, a z łatwością je zapamiętasz.
Rozważ inne sposoby odczytu plików, porozmawiajmy o poleceniu cat
.
Zespół cat
albo drukuje zawartość pliku na ekranie, albo łączy wiele plików. Zależy to od tego, ile plików zostanie przekazanych do tego polecenia po wywołaniu.
polecenie kota
cat my_one_file.txt
: gdy do tego polecenia zostanie przekazany pojedynczy plik, zostanie on wyprowadzony do stdout
.
Jeśli dasz mu dwa pliki lub więcej plików, zachowuje się inaczej.
cat my_file1.txt my_file2.txt
: po otrzymaniu kilku plików jako danych wejściowych polecenie to łączy ich zawartość i wyświetla, co się wydarzyło stdout
.
Jeśli wynik łączenia plików wymaga zapisania jako nowy plik, można skorzystać z operatora >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
Porozmawiajmy teraz o tym, jak usunąć pliki i zatrzymać procesy.
▍Usuwanie plików, zatrzymywanie procesów
rm my_file
: usunąć plik my_file
.
rm -r my_folder
: usuwa folder my_folder
oraz wszystkie pliki i foldery, które zawiera. Flaga -r
wskazuje, że polecenie zostanie uruchomione w trybie rekurencyjnym.
Aby system nie pytał o potwierdzenie za każdym razem, gdy plik lub folder zostanie usunięty, użyj flagi -f
.
kill 012345
: Zatrzymuje określony działający proces, dając mu czas na bezpieczne zamknięcie.
kill -9 012345
: Wymusza zakończenie określonego uruchomionego procesu. Zobacz flagę -s SIGKILL
oznacza to samo co flaga -9
.
▍Wyszukaj
Do wyszukiwania danych można używać różnych poleceń. W szczególności - grep
, ag
и ack
. Zacznijmy naszą znajomość tych poleceń od grep
. Jest to sprawdzone i niezawodne polecenie, które jednak jest wolniejsze niż inne i nie jest tak wygodne w użyciu jak inne.
polecenie grepa
grep my_regex my_file
: wyszukiwania my_regex
в my_file
. Jeśli zostanie znalezione dopasowanie, zwracany jest cały ciąg dla każdego dopasowania. Domyślny my_regex
traktowane jako wyrażenie regularne.
grep -i my_regex my_file
: Wyszukiwanie odbywa się bez uwzględniania wielkości liter.
grep -v my_regex my_file
: zwraca wszystkie wiersze, które nie zawierają my_regex
. Flaga -v
oznacza inwersję, przypomina operatora NOT
, występujący w wielu językach programowania.
grep -c my_regex my_file
: Zwraca informację o liczbie dopasowań szukanego wzorca znalezionego w pliku.
grep -R my_regex my_folder
: wykonuje wyszukiwanie rekurencyjne we wszystkich plikach znajdujących się w określonym folderze oraz w folderach w nim zagnieżdżonych.
Porozmawiajmy teraz o zespole ag
. Przyszła później grep
, jest szybszy, wygodniej jest z nim pracować.
polecenie ag
ag my_regex my_file
: zwraca informację o numerach linii oraz samych liniach, w których znaleziono dopasowania my_regex
.
ag -i my_regex my_file
: Wyszukiwanie odbywa się bez uwzględniania wielkości liter.
Zespół ag
automatycznie przetworzyć plik .gitignore
i wyklucza z danych wyjściowych zawartość folderów lub plików wymienionych w tym pliku. To jest bardzo wygodne.
ag my_regex my_file -- skip-vcs-ignores
: zawartość plików automatycznej kontroli wersji (np .gitignore
) nie jest brany pod uwagę w wyszukiwaniu.
Ponadto, aby powiedzieć zespołowi ag
na których ścieżkach plików chcesz wykluczyć z wyszukiwania, możesz utworzyć plik .agignore
.
Na początku tej sekcji wspomnieliśmy o poleceniu ack
. Zespoły ack
и ag
bardzo podobne, można powiedzieć, że są w 99% wymienne. Jednak zespół ag
działa szybciej, dlatego to opisałem.
Porozmawiajmy teraz o pracy z archiwami.
▍Archiwizacja
tar my_source_directory
: łączy pliki z folderu my_source_directory
do jednego pliku tarball. Takie pliki są przydatne do przesyłania komuś dużych zestawów plików.
polecenie tar
Pliki tar wygenerowane przez to polecenie to pliki z rozszerzeniem .tar
(Archiwum taśm). Fakt, że słowo „taśma” (taśma) ukryte jest w nazwie polecenia i w rozszerzeniu nazw plików, które tworzy, wskazuje, jak długo to polecenie istnieje.
tar -cf my_file.tar my_source_directory
: tworzy plik tar o nazwie my_file.tar
z zawartością folderu my_source_directory
. Flaga -c
oznacza „stwórz” (stworzenie) i flagę -f
jako „plik” (plik).
Aby wyodrębnić pliki z .tar
-file, użyj polecenia tar
z flagami -x
(„ekstrakt”, ekstrakcja) i -f
(„plik”, plik).
tar -xf my_file.tar
: wyodrębnia pliki z my_file.tar
do bieżącego katalogu roboczego.
Porozmawiajmy teraz o tym, jak kompresować i dekompresować .tar
-akta.
tar -cfz my_file.tar.gz my_source_directory
: tutaj za pomocą flagi -z
(„zip”, algorytm kompresji) wskazuje, że algorytm powinien być używany do kompresji plików gzip
(GNUzip). Kompresja plików oszczędza miejsce na dysku podczas przechowywania takich plików. Jeżeli planowane jest na przykład przesłanie plików innym użytkownikom, przyczynia się to do szybszego pobierania takich plików.
Rozpakuj plik .tar.gz
możesz dodać flagę -z
do polecenia wyodrębnienia zawartości .tar
-files, które omówiliśmy powyżej. To wygląda tak:
tar -xfz my_file.tar.gz
Warto zaznaczyć, że zespół tar
Jest wiele innych przydatnych flag.
Aliasy Basha
Aliasy Bash (zwane także aliasami lub skrótami) służą do tworzenia skróconych nazw poleceń lub ich sekwencji, których użycie zamiast zwykłych poleceń przyspiesza pracę. Jeśli masz pseudonim bu
, co ukrywa polecenie python setup.py sdist bdist_wheel
, to aby wywołać to polecenie, wystarczy użyć tego aliasu.
Aby utworzyć taki alias wystarczy dodać do pliku poniższe polecenie ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
Jeśli w twoim systemie nie ma pliku ~/.bash_profile
, możesz go utworzyć samodzielnie za pomocą polecenia touch
. Po utworzeniu aliasu uruchom ponownie terminal, po czym będziesz mógł używać tego aliasu. W tym przypadku wprowadzenie dwóch znaków zastępuje wprowadzenie ponad trzech tuzinów znaków polecenia, do którego jest przeznaczone
В ~/.bash_profile
możesz dodać aliasy dla często używanych poleceń.
▍Wyniki
W tym poście omówiliśmy 21 popularnych poleceń Bash i omówiliśmy tworzenie aliasów poleceń. Jeśli interesuje Cię ten temat -
Drodzy Czytelnicy! Jakie polecenia przydatne dla początkujących dodałbyś do tych omówionych w tym artykule?
→
Źródło: www.habr.com