🌍 Čeština ∙ Deutsch ∙ Ελληνικά ∙ English ∙ Español ∙ Français ∙ Indonesia ∙ Italiano ∙ 日本語 ∙ 한국어 ∙ polski ∙ Português ∙ Română ∙ Русский ∙ Slovenščina ∙ Українська ∙ 简体中文 ∙ 繁體中文
Uwaga: Poszukuję nowego (i potencjalnie odpłatnego) głównego autora, który pomoże rozszerzyć ten materiał do formy bardziej wszechstronnego Przewodnika. Chociaż jest on bardzo popularny, mógłby być zarówno obszerniejszy jak i bardziej pomocny. Jeśli lubisz pisać, jesteś niemalże ekspertem w tej dziedzinie i chcesz pomóc, daj mi znać na josh (0x40) holloway.com. –jlevy, Holloway
- Meta
- Podstawy
- Codzienny użytek
- Przetwarzanie plików i danych
- Debugowanie systemu
- Jednolinijkowce
- Mniej znane, ale użyteczne
- Tylko dla macOS
- Tylko dla Windows
- Inne źródła wiedzy
- Zastrzeżenie
Biegła obsługa wiersza poleceń często jest umiejętnością zaniedbywaną lub uważaną za "wiedzę tajemną", ale poprawiającą elastyczność i produktywność inżynierów w sposób oczywisty jak i bardziej subtelny. Oto zbiór informacji i wskazówek na temat użycia wiersza poleceń, które uznaliśmy za przydatne w pracy z systemami Linux. Niektóre wskazówki dotyczą podstaw, inne zaś są całkiem specyficzne dla danego zagadnienia, wyszukane lub niezbyt powszechne. Ta strona nie jest obszerna, lecz znając i pamiętając sposób użycia wszystkiego, co zostało tutaj opisane - wiesz już dużo.
Niniejszy tekst jest efektem pracy zbiorowej wielu autorów i tłumaczy. Niektóre z zagadnień początkowo pojawiły się na Quora, ale od tamtego czasu zostały przeniesione na GitHub, gdzie ludzie zdolniejsi od autora oryginalnego posta dokonali licznych poprawek. Zadaj pytanie, jeśli jest ono związane z użyciem wiersza poleceń. Dodaj coś od siebie, jeśli widzisz błąd lub uważasz, że coś można poprawić!
Zakres:
- Ten przewodnik przeznaczony jest zarówno dla początkujących jak i doświadczonych. Jego cele uwzględniają szerokość zakresu (wszystko jest ważne), konkretność (podawane są konkretne przykłady dla najczęstszych przypadków użycia) oraz zwięzłość (unika się rzeczy nieistotnych lub dygresji dostępnych gdzie indziej). Każda wskazówka jest kluczowa dla danej sytuacji lub znacznie skraca czas w stosunku do użycia innego rozwiązania.
- Dokument ten napisany został dla systemów Linux (z wyjątkiem sekcji "Tylko dla macOS" oraz "Tylko dla Windows"). Wiele pozostałych poleceń ma zastosowanie lub może być zainstalowanych w innych systemach Unix lub macOS (lub nawet w Cygwinie).
- Główny nacisk położony jest na interaktywną pracę z Bashem, aczkolwiek wiele wskazówek odnosi się do innych powłok systemowych oraz do pisania skryptów w Bashu ogólnie.
- Zawarte są tutaj zarówno "standardowe" polecenia systemów Unix jak i te wymagające instalacji dodatkowych pakietów oprogramowania -- o ile polecenia te były wystarczająco ważne, by je uwzględnić.
Uwagi:
- Dla zachowania formy pojedynczej strony, treść dołączana jest domyślnie przez odniesienia. Dysponujesz wystarczającą inteligencją, żeby poszukać dodatkowych szczegółów danego polecenia w Google. Używaj
apt
,yum
,dnf
,pacman
,pip
lubbrew
(odpowiednio), aby zainstalować nowe programy. - Używaj Explainshell żeby "rozłożyć na czynniki pierwsze" polecenia, opcje, potoki, itp.
-
Naucz się podstaw Basha. Właściwie, wpisz
man bash
i przynajmniej przejrzyj całość - jest całkiem łatwa w zrozumieniu i niezbyt długa. Inne powłoki mogą być fajne, ale Bash jest potężny i obecny praktycznie wszędzie (o ile nauczenie się wyłącznie powłoki zsh, fish, itp. na swoim własnym laptopie jest kuszące, będzie Cię ograniczać w wielu sytuacjach, takich jak użycie istniejących serwerów). -
Naucz się dobrze co najmniej jednego edytora tekstowego. Edytor
nano
jest jednym z najłatwiejszych do opanowania w podstawowych operacjach (otwieranie, edycja, zapisywanie, przeszukiwanie). Jednakże zaawansowanym użytkownikom terminala nic nie zastąpi Vima (vi
) - trudnego do nauczenia, ale zacnego, szybkiego i w pełni wyposażonego edytora. Wielu używa też klasycznego Emacsa, zwłaszcza do większych zadań. (Rzecz jasna żaden współczesny twórca oprogramowania, pracujący nad dużym projektem, raczej nie będzie używał wyłącznie edytora w trybie tekstowym i powinien znać również nowoczesne IDE i narzędzia dla trybu graficznego.) -
Znajdywanie dokumentacji:
- Dowiedz się jak czytać oficjalną dokumentację za pomocą
man
(dla dociekliwychman man
podaję numerację sekcji, np. 1 jest dla "zwykłych" poleceń, 5 jest dla plików/składni, a 8 dla administracji systemem). Odszukuj odpowiednie strony podręczników używającapropos
. - Wiedz, że niektóre komendy nie są plikami wykonywalnymi, lecz wbudowanymi poleceniami powłoki Bash. Pomoc dla nich można uzyskać za pomocą
help
ihelp -d
. Możesz się zorientować, czy dana komenda jest plikiem wykonywalnym, poleceniem wbudowanym, czy aliasem przy użyciutype komenda
. curl cheat.sh/polecenie
pokaże krótką "ściągawkę" z najczęstszymi przykładami użycia polecenia.
- Dowiedz się jak czytać oficjalną dokumentację za pomocą
-
Przyswój wiedzę o przekierowywaniu strumieni wyjścia i wejścia za pomocą operatorów
>
i<
oraz o potokach tworzonych przy użyciu|
. Wiedz, że>
nadpisuje plik wyjściowy, a>>
dodaje treść. Dowiedz się o strumieniach: standardowego wyjścia (stdout) i standardowego błędu (stderr). -
Naucz się rozwijania nazw plików przy użyciu wzorców globalnych, zawierających
*
(może też?
i[
...]
) oraz zastosowania i różnic między podwójnym"
i pojedynczym'
znakiem cudzysłowu. (Zobacz także poniżej - o rozwijaniu nazw zmiennych.) -
Zapoznaj się ze sposobami zarządzania zadaniami Basha:
&
, ctrl-z, ctrl-c,jobs
,fg
,bg
,kill
, itp. -
Poznaj
ssh
i podstawy uwierzytelniania bez haseł przy użyciussh-agent
,ssh-add
, itp. -
Podstawy zarządzania plikami:
ls
ils -l
(w szczególności dowiedz się co reprezentuje każda kolumna wyświetlana zls -l
),less
,head
,tail
oraztail -f
(a nawet lepiej,less +F
),ln
iln -s
(poznaj różnice i przewagi "dowiązania twardego" nad "dowiązaniem miękkim/symbolicznym"),chown
,chmod
,du
(szybkie podsumowanie użycia przestrzeni dyskowej:du -hs *
). Do zarządzania systemami plików:df
,mount
,fdisk
,mkfs
,lsblk
. Dowiedz się, czym jest "i-węzeł" (ls -i
lubdf -i
). -
Podstawy zarządzania połączeniami sieciowymi:
ip
lubifconfig
,dig
,traceroute
,route
. -
Naucz się i korzystaj z systemu zarządzania kontrolą wersji, takiego jak
git
. -
Dobrze poznaj wyrażenia regularne oraz różne przełączniki dla poleceń
grep
/egrep
. Warto znać opcje-i
,-o
,-v
,-A
,-B
, and-C
. -
Naucz się używać
apt-get
,yum
,dnf
lubpacman
(w zależności od dystrybucji) do odnajdywania i instalacji pakietów oprogramowania. Upewnij się także, że maszpip
, aby móc instalować narzędzia wiersza poleceń oparte o język Python (kilka omówionych poniżej najłatwiej jest zainstalować używającpip
).
-
W Bashu używaj klawisza Tab do uzupełniania listy argumentów lub wyświetlania listy dostępnych poleceń, a kombinacji ctrl-r do przeszukiwania historii wydanych poleceń (po wciśnięciu tej kombinacji wpisz kolejne litery polecenia do odnalezienia, powtórz ctrl-r, aby przełączać się pomiędzy kolejnymi pasującymi wpisami, wciśnij Enter, żeby wykonać znalezione polecenie lub strzałkę w prawo, by móc zmodyfikować bieżącą linię z poleceniem).
-
W Bashu, używaj kombinacji ctrl-w do usunięcia ostatniego wyrazu oraz ctrl-u do usunięcia zawartości od bieżącej pozycji kursora do początku linii. Używaj kombinacji alt-b i alt-f, żeby przeskakiwać "słowo po słowie", ctrl-a do umieszczenia kursora na początku linii, ctrl-e do umieszczania kursora na końcu linii, ctrl-k, żeby wymazać zawartość od bieżącej pozycji kursora do końca linii, ctrl-l do wyczyszczenia zawartości całego ekranu. Sprawdź
man readline
, by poznać wszystkie kombinacje w Bashu. Jest ich bardzo dużo. Dla przykładu alt-. skacze po wszystkich argumentach poprzednich poleceń, a alt-* rozwija wzorzec globalny. -
Alternatywnie, jeśli kochasz skróty klawiaturowe w stylu vi, użyj
set -o vi
(iset -o emacs
, aby powrócić do poprzednich ustawień). -
Do edycji długich poleceń, po ustawieniu edytora (na przykład
export EDITOR=vim
), ctrl-x ctrl-e otworzy bieżące polecenie w edytorze z możliwością edycji wieloliniowej. W trybie vi to samo zrobi escape-v. -
Żeby zobaczyć ostatnio wydane polecenia, użyj
history
. Następnie!n
(gdzien
jest numerem polecenia), żeby wykonać polecenie ponownie. Możesz także użyć wielu skrótów, z których najbardziej przydatne są prawdopodobnie!$
dla ostatniego argumentu i!!
dla ostatniego polecenia (sprawdź "HISTORY EXPANSION" w podręczniku). Jednakże, często skróty te zastępowane są przy użyciu ctrl-r i alt-.. -
Przejdź do swojego katalogu domowego za pomocą
cd
. Używaj prefiksu~
, aby dostać się do zawartości plików w ścieżkach podanych względem twojego katalogu domowego (np.~/.bashrc
). W skryptach powłokish
odwołuj się do katalogu domowego przy użyciu$HOME
. -
Cofnij się do poprzedniego katalogu roboczego przy użyciu:
cd -
. -
Jeśli zmienisz zdanie będąc już w połowie pisanego polecenia, użyj kombinacji alt-#, żeby dodać znak
#
na początku i zamienić tę linię w komentarz (lub użyj ctrl-a, #, enter). Możesz później wrócić do tego polecenia za pośrednictwem historii. -
Używaj
xargs
(lubparallel
). To potężne narzędzie. Zwróć uwagę, że możesz kontrolować zarówno liczbę elementów obsłużonych w jednej linii (-L
) jak i stopień zrównoleglenia (-P
). Jeśli nie masz pewności co do poprawności wyników operacji, najpierw użyjxargs echo
. Ponadto,-I{}
jest przydatne. Przykłady:
find . -name '*.py' | xargs grep jakas_funkcja
cat serwery | xargs -I{} ssh root@{} hostname
-
pstree -p
to pomocna prezentacja działających procesów - w postaci drzewa. -
Używaj
pgrep
ipkill
by znaleźć proces lub wysłać do niego sygnał, odwołując się po nazwie (-f
jest pomocne). -
Poznaj różne sygnały, które można wysyłać do procesów. Przykładowo, aby wstrzymać proces, użyj
kill -STOP [pid]
. Zobacz pełną listę wman 7 signal
-
Używaj
nohup
lubdisown
jeśli chcesz, żeby proces uruchomiony w tle działał w nieskończoność. -
Sprawdź, które procesy nasłuchują połączeń, przy pomocy
netstat -lntp
lubss -plat
(dla TCP; dodaj-u
dla UDP) lublsof -iTCP -sTCP:LISTEN -P -n
(które działa również w macOS). -
Zobacz także
lsof
ifuser
dla otwartych gniazd i plików. -
Zobacz
uptime
lubw
, aby dowiedzieć się jak długo system jest uruchomiony. -
Używaj
alias
do tworzenia skrótów dla często używanych poleceń. Na przykład,alias ll='ls -latr'
utworzy nowy skrótll
. -
Zachowuj często używane skróty, ustawienia powłoki oraz funkcje w
~/.bashrc
, a także upewnij się, że powłoka logowania odczytuje je przy starcie. To sprawi, że wszystkie Twoje ustawienia będą dostępne we wszystkich Twoich sesjach powłoki. -
Umieść ustawienia zmiennych środowiskowych oraz polecenia, które powinny być uruchomione przy logowaniu w
~/.bash_profile
. Osobna konfiguracja będzie wymagana dla powłok uruchamianych ze środowiska graficznego i zadań poleceniacron
. -
Synchronizuj swoje pliki konfiguracyjne (np.
.bashrc
i.bash_profile
) na różnych komputerach - używając Git. -
Wiedz, że zmienne i nazwy plików zwierające "znaki białe" należy traktować z dozą ostrożności. Umieszczaj zmienne Basha w cudzysłowach, np.
"$FOO"
. Kładź nacisk na opcje-0
lub-print0
pozwalające oddzielać nazwy plików "znakiem pustym", np.locate -0 wzorzec | xargs -0 ls -al
lubfind / -print0 -type d | xargs -0 ls -al
. W celu iteracji wewnątrz pętli "for" po nazwach plików zawierających "znaki białe", ustaw zmienną IFS tak, aby zawierała tylko "znak nowej linii" - przy pomocyIFS=$'\n'
. -
W skryptach Basha używaj
set -x
(lub wariantuset -v
, który przechwytuje strumień wejścia w formie "surowej", włącznie z nierozwiniętymi nazwami zmiennych i komentarzami) do debugowania strumienia wyjścia. Używaj trybów ścisłych, chyba że masz dobry powód by tego nie robić: użycieset -e
przerywa wykonanie w przypadku wystąpienia błędów (niezerowych kodów zakończenia). Użycieset -u
wykrywa próby skorzystania z niezainicjowanych zmiennych. Rozważ także użycieset -o pipefail
, które przerywa wykonanie w przypadku wystąpienia błędów w potokach (aczkolwiek poczytaj o tym więcej, jako że jest to nieco delikatny temat). W przypadku bardziej zaangażowanych skryptów, używaj także pułapektrap
na sygnały EXIT lub ERR. Przydatnym nawykiem jest rozpoczynanie skryptów jak poniżej, co pozwala wykryć najczęstsze błędy i przerwać wykonanie wyświetlając komunikat:
set -euo pipefail
trap "echo 'wystąpił błąd: Skrypt przestał działać poprawnie: zobacz polecenie powyżej'" ERR
- W skryptach Basha, powłoki potomne (komendy zapisane w nawiasach okrągłych) są wygodnym sposobem grupowania poleceń. Częstym przykładem użycia jest chwilowa zmiana bieżącego katalogu, np.
# wykonaj coś w bieżącym katalogu
(cd /jakis/inny/katalog && inne-polecenie)
# kontynuuj w oryginalnej lokalizacji
-
Zwróć uwagę, że w Bashu jest wiele różnych rodzajów rozwijania nazw zmiennych. Sprawdzenie, czy zmienna istnieje:
${nazwa_zmiennej:?komunikat błędu}
. Przykładowo, jeśli skrypt Basha wymaga podania jednego argumentu, po prostu napiszplik_wejsciowy=${1:?Sposób użycia: $0 plik_wejsciowy}
. Użycie wartości domyślnej, gdy zmienna jest pusta:${nazwa_zmiennej:-wartosc_domyslna}
. Aby mieć dodatkowy (opcjonalny) parametr do poprzedniego przykładu, możesz użyć czegoś takiegoplik_wyjsciowy=${2:-logfile}
. Jeśli argument$2
zostanie pominięty i tym samym będzie on pusty, wartość zmiennejplik_wyjsciowy
zostanie ustawiona nalogfile
. Rozwinięcie arytmetyczne:i=$(( (i + 1) % 5 ))
. Sekwencje:{1..10}
. Skracanie łańcuchów znakowych:${nazwa_zmiennej%przyrostek}
oraz${nazwa_zmiennej#przedrostek}
. Na przykład, jeśliplik=foo.pdf
, wtedyecho ${plik%.pdf}.txt
wyświetlifoo.txt
. -
Rozwijanie nawiasów klamrowych
{
...}
pozwala ograniczyć konieczność przepisywania powtarzalnego tekstu i zautomatyzować kombinacje elementów. Jest to pomocne w przypadkach, takich jakmv foo.{txt,pdf} jakis-katalog
(które przeniesie oba pliki),cp jakisplik{,.bak}
(które zostanie rozwinięte docp jakisplik jakisplik.bak
) lubmkdir -p test-{a,b,c}/subtest-{1,2,3}
(które rozwinie wszystkie możliwe kombinacje i utworzy strukturę katalogów). Rozwinięcie nawiasów klamrowych ma pierwszeństwo przed jakimikolwiek innymi rozwinięciami. -
Kolejność wykonywania rozwinięć jest następująca: rozwijanie nawiasów klamrowych; rozwijanie znaku tylda, rozwijanie parametrów i nazw zmiennych, rozwinięcia arytmetyczne oraz podstawianie poleceń (wykonywane "od lewej do prawej"); dzielenie wyrazów; rozwijanie nazw plików. (Przykładowo: zakresu
{1..20}
nie można wyrazić za pomocą zmiennych{$a..$b}
. Zamiast tego użyjseq
lub pętlifor
, np.seq $a $b
lubfor((i=a; i<=b; i++)); do ... ; done
.) -
Strumień wyjścia z polecenia może zostać potraktowany jak plik przy użyciu
<(jakies polecenie)
(mechanizm znany jako podstawienie procesu). Na przykład, porównanie lokalnego pliku/etc/hosts
z plikiem na maszynie zdalnej:
diff /etc/hosts <(ssh jakisserwer cat /etc/hosts)
- Pisząc skrypty, możesz zechcieć umieszczać cały kod pomiędzy nawiasami klamrowymi. Jeśli zabraknie nawiasu zamykającego, Twój skrypt nie zostanie wykonany z powodu błędu składniowego. Ma to sens wtedy, kiedy Twój skrypt ma być pobierany ze strony w sieci, ponieważ zapobiegnie to wykonaniu skryptów pobranych tylko częściowo:
{
# Tutaj jest Twój kod
}
- "Dokument lokalny" pozwala na przekierowanie kilku linii strumienia wejścia tak, jakby były wczytywane z pliku:
cat <<EOF
wejście
w kilku liniach
EOF
-
W Bashu, jednoczesne przekierowanie strumieni standardowego wyjścia i standardowego błędu można uzyskać za pomocą:
jakies-polecenie >plik_logu 2>&1
lubjakies-polecenie &>plik_logu
. Często, aby upewnić się, że polecenie nie zostawi otwartego uchwytu do pliku strumienia standardowego wejścia, wiążącego go z obecnie używanym terminalem, jako dobrą praktykę stosuje się dodanie do polecenia</dev/null
. -
Używaj
man ascii
, aby uzyskać dobrą tabelę kodów ASCII, zawierającą wartości szesnastkowe i dziesiętne. Do uzyskania ogólnych informacji o kodowaniu znaków, pomocne są poleceniaman unicode
,man utf-8
iman latin1
. -
Używaj polecenia
screen
lubtmux
do zwielokrotnienia ekranu, szczególnie przydatnego w sesjach ssh do maszyn zdalnych, aby odłączać się i ponownie podłączać do sesji.byobu
rozszerza możliwości screena lub tmuxa dostarczając więcej informacji i ułatwiając zarządzanie. Minimalistyczną alternatywą jedynie do celów utrzymania ciągłości sesji jestdtach
. -
W używaniu ssh, wiedza na temat tunelowania portów z użyciem
-L
lub-D
(i czasami-R
) jest przydatna, np. do przeglądania stron w sieci z maszyny zdalnej. -
Wprowadzenie kilku usprawnień do konfiguracji Twojego ssh może być przydatne; na przykład, poniższy
~/.ssh/config
zawiera ustawienia pozwalające uniknąć zrywania połączeń w pewnych środowiskach sieciowych, używa kompresji (co może być pomocne w użyciu scp na łączach o niskiej przepustowości), zwielokrotnia kanały dostępowe do tego samego serwera przy użyciu lokalnego pliku kontrolnego:
TCPKeepAlive=yes
ServerAliveInterval=15
ServerAliveCountMax=6
Compression=yes
ControlMaster auto
ControlPath /tmp/%r@%h:%p
ControlPersist yes
-
Kilka innych opcji, istotnych dla ssh, jest związanych z bezpieczeństwem i powinno być stosowanych z rozwagą, np. w odniesieniu do konkretnej podsieci lub serwera lub w zaufanych sieciach:
StrictHostKeyChecking=no
,ForwardAgent=yes
-
Uznaj
mosh
za alternatywę dla ssh używającą UDP, unikającą przerywania połączeń i zwiększającą wygodę (wymaga konfiguracji po stronie serwera). -
Aby zobaczyć uprawnienia do pliku w postaci ósemkowej, co jest przydatne w konfiguracji systemu, ale niedostępne w
ls
i łatwe do rozwalenia, użyj czegoś takiego
stat -c '%A %a %n' /etc/timezone
-
Aby móc interaktywnie wybierać wartości z wyjścia innego polecenia, używaj
percol
lubfzf
. -
Do interaktywnej pracy z plikami, bazującej na wyjściu z innego polecenia (takiego jak
git
), używajfpp
(PathPicker). -
Jako prostego serwera stron, serwującego wszystkie pliki z bieżącego katalogu (i podkatalogów), dostępnego dla każdego w Twojej sieci, użyj:
python -m SimpleHTTPServer 7777
(dla użycia portu 7777 w wersji Python 2) orazpython -m http.server 7777
(dla użycia portu 7777 w wersji Python 3). -
Żeby wykonać polecenie jako inny użytkownik, używaj
sudo
. Jako domyślne konto docelowe używane jest konto root; użyj-u
, aby określić konto innego użytkownika. Użyj-i
, żeby zalogować się jako docelowy użytkownik (zostaniesz poproszony o podanie Twojego hasła). -
Aby w bieżącej powłoce przełączyć się na konto innego użytkownika, używaj
su uzytkownik
lubsu - uzytkownik
. To drugie z "-" zapewnia takie ustawienia środowiska, jak zaraz po zalogowaniu docelowego użytkownika. Pominięcie nazwy użytkownika skutkuje przełączeniem się na konto root. Zostaniesz poproszony o podanie hasła do konta użytkownika, na którego się przełączasz. -
Wiedz o ograniczeniu do 128K znaków dla długości pojedynczego polecenia. Błąd mówiący "Argument list too long" występuje często, gdy wzorzec globalny dla nazw pasuje do dużej liczby plików. (Gdy tak się zdarzy, zamienniki takie jak
find
ixargs
mogą pomóc.) -
Jako podstawowego kalkulatora (i oczywiście, żeby ogólnie móc korzystać z Pythona), używaj interpretera
python
. Przykładowo:
>>> 2+3
5
-
Aby zlokalizować plik po nazwie w bieżącym katalogu,
find . -iname '*jakasnazwa*'
(lub podobnie). Aby zlokalizować znajdujący się gdziekolwiek plik po nazwie, użyjlocate jakasnazwa
(ale miej na uwadze, żeupdatedb
mógł jeszcze nie zindeksować plików utworzonych niedawno). -
Do przeszukiwania zawartości plików z kodem źródłowym lub danymi, istnieje kilka opcji bardziej zaawansowanych lub szybszych niż
grep -r
, wliczając w to (z grubsza od najstarszego do najnowszego)ack
,ag
("srebrny szukacz") orazrg
(ripgrep). -
Żeby skonwertować kod HTML do postaci tekstowej:
lynx -dump -stdin
-
Do konwersji Markdown, HTML i różnych innych formatów dokumentów, wypróbuj
pandoc
. Na przykład, aby skonwertować dokument Markdown do formatu Word:pandoc README.md --from markdown --to docx -o tymczasowy.docx
-
Jeśli musisz zająć się danymi w formacie XML,
xmlstarlet
- jest wiekowy, ale przydatny. -
Do danych w formacie JSON używaj
jq
. Do pracy interaktywnej sprawdź takżejid
orazjiq
. -
Do danych w formacie YAML używaj
shyaml
. -
Do pracy z plikami w formacie Excel lub CSV, csvkit dostarcza
in2csv
,csvcut
,csvjoin
,csvgrep
, itp. -
Do obsługi Amazon S3,
s3cmd
jest wygodny, as4cmd
jest szybszy.aws
i ulepszonysaws
od Amazona są kluczowe dla innych zadań związanych z usługami AWS. -
Poznaj
sort
iuniq
, włącznie z opcjami-u
i-d
dla uniq -- sprawdź jednolinijkowce poniżej. Sprawdź takżecomm
. -
Poznaj
cut
,paste
ijoin
do manipulacji zawartością plików tekstowych. Wiele osób używacut
, ale zapominają ojoin
. -
Poznaj
wc
do liczenia znaków nowej linii (-l
), wszystkich znaków (-m
), słów (-w
) i bajtów (-c
). -
Poznaj
tee
do równoczesnego kopiowania zawartości z stdin do pliku i stdout, np.ls -al | tee file.txt
. -
Do bardziej złożonych operacji obliczeniowych, uwzględniających grupowanie, odwracanie kolejności pól i obliczenia statystyczne, rozważ użycie
datamash
. -
Wiedz, że ustawienia regionalne mają subtelny wpływ na wiele narzędzi wiersza poleceń, wliczając w to kolejność sortowania (porównywanie) i wydajność. Większość systemów Linux przy instalacji ustawia
LANG
lub inne zmienne dla ustawień regionalnych na lokalną wartość, taką jak np. US English. Miej świadomość tego, że kolejność sortowania zmieni się, jeśli zmienisz ustawienia regionalne. I wiedz, że reguły i18n mogą spowodować, że sort lub inne polecenia będą działać wielokrotnie wolniej. W niektórych przypadkach (takich, jak ustawianie zmiennych lub stwierdzanie unikatowości opisane poniżej) można bezpiecznie w całości zignorować powolne reguły i18n i używać tradycyjnego, opartego na wartości bajtowej porządku sortowania, przy użyciuexport LC_ALL=C
. -
Możesz zmodyfikować środowisko danego polecenia, poprzedzając jego wywołanie ustawieniem zmiennej środowiskowej, np.
TZ=Pacific/Fiji date
. -
Poznaj podstawy
awk
ised
do prostej obróbki danych. Zobacz przykłady w sekcji Jednolinijkowce. -
Aby zastąpić "w miejscu" wszystkie wystąpienia danego łańcucha znaków, w jednym lub wielu plikach na raz:
perl -pi.bak -e 's/stary-łańcuch/nowy-łańcuch/g' moje-pliki-*.txt
- Do zmiany nazw wielu plików i/lub wyszukania i zastąpienia łańcuchów wewnątrz plików, wypróbuj
repren
. (W niektórych przypadkach, polecenierename
również umożliwi zmianę nazw wielu plików, ale ostrożnie, gdyż jego funkcjonalność różni się w zależności od dystrybucji Linuksa.)
# Pełna zmiana nazw plików, katalogów i zawartości foo -> bar:
repren --full --preserve-case --from foo --to bar .
# Odzyskiwanie plików z kopii bezpieczeństwa cokolwiek.bak -> cokolwiek:
repren --renames --from '(.*)\.bak' --to '\1' *.bak
# Tak jak wyżej, przy użyciu rename, jeśli jest dostępne:
rename 's/\.bak$//' *.bak
- Jak głosi strona podręcznika,
rsync
jest naprawdę szybkim i niezwykle wszechstronnym narzędziem do kopiowania plików. Znany jest z synchronizacji zawartości między maszynami, ale jest równie użyteczny lokalnie. Jeśli pozwalają na to ustawienia bezpieczeństwa, użyciersync
zamiastscp
umożliwia wznowienie transferu bez cofania się do początku. Jest on także wśród najszybszych sposobów na usuwanie dużych liczb plików:
mkdir pusty && rsync -r --delete pusty/ jakis-katalog && rmdir jakis-katalog
-
Do śledzenia postępu przetwarzania plików używaj
pv
,pycp
,pmonitor
,progress
,rsync --progress
lub w kopiowaniu na poziomie blokowym -dd status=progress
. -
Używaj
shuf
do "przetasowania" lub wyboru losowych linii z pliku. -
Poznaj opcje polecenia
sort
. Do pracy z liczbami używaj-n
lub-h
, żeby obsłużyć liczby w formacie czytelnym dla człowieka (np. wyjście zdu -h
). Dowiedz się, jak działają "klucze" (-t
i-k
). Zwróć szczególną uwagę na to, że musisz napisać-k1,1
, żeby posortować pod względem zawartości tylko pierwszego pola;-k1
oznacza sortowanie względem zawartości całej linii. Sortowanie stabilne (sort -s
) może być przydatne. Przykładowo, żeby najpierw posortować po polu numer 2, a następnie po polu numer 1, możesz użyćsort -k1,1 | sort -s -k2,2
. -
Jeśli kiedykolwiek w wierszu poleceń Basha zajdzie potrzeba umieszczenia znaku tabulacji, dosłownie (np. jako argumentu dla opcji -t do sortowania), wciśnij ctrl-v [Tab] lub wpisz
$'\t'
(to drugie rozwiązanie jest lepsze, bo możesz je skopiować i wkleić). -
Standardowymi narzędziami do "łatania" plików z kodem źródłowym są
diff
ipatch
. Sprawdź takżediffstat
dla uzyskania podsumowania z diff orazsdiff
dla porównywania zawartości obok siebie. Zwróć uwagę, żediff -r
zadziała dla całych katalogów. Użyjdiff -r drzewo1 drzewo2 | diffstat
, żeby uzyskać podsumowanie różnic. Używajvimdiff
do porównywania i edycji plików. -
W pracy z plikami binarnymi używaj
hd
,hexdump
lubxxd
do uzyskania prostych zrzutów zawartości w formie liczb szesnastkowych, abvi
,hexedit
lubbiew
do binarnej edycji. -
Także w odniesieniu do plików binarnych,
strings
(orazgrep
, itp.) pozwoli Ci znaleźć kawałki tekstu. -
Do obsługi plików różnic binarnych (kompresja delta), używaj
xdelta3
. -
Do zmiany kodowania znaków w tekście wypróbuj
iconv
. Możesz także użyćuconv
do bardziej zaawansowanych operacji; obsługuje on bardziej zaawansowane rzeczy, związane z Unicode. Przykładowo:
# Wyświetla szesnastkowe kody lub faktyczne nazwy znaków (przydatne do debugowania):
uconv -f utf-8 -t utf-8 -x '::Any-Hex;' < dane_wejsciowe.txt
uconv -f utf-8 -t utf-8 -x '::Any-Name;' < dane_wejsciowe.txt
# Konwertuje teskt na małe litery i usuwa wszystkie znaki akcentu (rozwijając i pozbywając się ich):
uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC;' < dane_wejsciowe.txt > dane_przetworzone.txt
-
Aby podzielić plik na mniejsze kawałki, sprawdź jak użyć
split
(do podziału na podstawie zadanego rozmiaru) icsplit
(do podziału na podstawie zadanego wzorca). -
Data i czas: aby uzyskać aktualną datę i czas w przydatnym formacie ISO 8601, użyj
date -u +"%Y-%m-%dT%H:%M:%SZ"
(inne opcje są kłopotliwe). Do manipulacji wyrażeniami zawierającymi datę i czas, używajdateadd
,datediff
,strptime
itp. z pakietudateutils
. -
Używaj
zless
,zmore
,zcat
orazzgrep
do pracy ze skompresowanymi plikami. -
Atrybuty plików da się ustawiać przy użyciu
chattr
i oferują one niskopoziomową alternatywę dla uprawnień do plików. Na przykład, aby uchronić plik przed przypadkowym usunięciem, ustaw mu flagę niezmienności (immutable):sudo chattr +i /wazny/katalog/lub/plik
-
Używaj
getfacl
isetfacl
, aby zachować i przywrócić uprawnienia do plików (ACL). Przykładowo:
getfacl -R /some/path > permissions.txt
setfacl --restore=permissions.txt
- Do szybkiego tworzenia pustych plików, użyj
truncate
(tworzy plik z rezerwacją miejsca),fallocate
(dla systemów plikowych ext4, xfs, btrfs oraz ocfs2),xfs_mkfile
(prawie dla każdego systemu plików, zawarty w pakiecie xfsprogs),mkfile
(dla systemów uniksowych, takich jak Solaris, Mac OS).
-
Do debugowania stron w sieci przydane są
curl
icurl -I
lub ich odpowiedniki z użyciemwget
, albo bardziej nowoczesnyhttpie
. -
Żeby poznać aktualny stan cpu/dysku, klasycznymi narzędziami są
top
(lub lepszyhtop
),iostat
iiotop
. Użyjiostat -mxz 15
dla uzyskania podstawowych informacji o użyciu CPU i szczegółowych statystyk użycia każdej partycji dyskowej oraz wglądu w ich wydajność. -
Aby uzyskać szczegóły połączeń sieciowych, używaj
netstat
iss
. -
Dla szybkiego podglądu tego, co dzieje się w systemie,
dstat
jest wybitnie przydatny. Aby uzyskać najszerszy obraz sytuacji wraz ze szczegółami, użyjglances
. -
Żeby poznać stan pamięci, uruchom i zrozum dane wyjściowe poleceń
free
ivmstat
. W szczególności pamiętaj, że pamięć "podręczna (cached)" to zarezerwowana przez jądro Linuksa pamięć podręczna dla plików, więc skutecznie jej wartość zalicza się do wartości pamięci "wolnej (free)". -
Debugowanie podsystemu Java to inna para kaloszy, ale prostą sztuczką w systemach Oracle i niektórych innych JVMach może być uruchomienie
kill -3 <pid>
, aby uzyskać pełny zrzut zawartości stosu i podsumowanie zawartości sterty (włącznie ze szczegółami nt. 'zbierania śmieci', które mogą dać wiele informacji) do strumienia standardowego błędu/logów. Z narzędzi JDK przydatne sąjps
,jstat
,jstack
,jmap
. Narzędzia SJK są bardziej zaawansowane. -
Używaj
mtr
jako lepszego narzędzia traceroute do identyfikowania problemów z siecią. -
Sprawdzenie przyczyny zapełnienia dysku przy użyciu
ncdu
oszczędza czas w porównaniu z użyciem "zwyczajnych" poleceń, takich jakdu -sh *
. -
Żeby odszukać gniazdo lub proces, które zużywają przepustowość połączenia sieciowego, wypróbuj
iftop
lubnethogs
. -
Narzędzie
ab
(dostarczane w pakiecie z Apache) pomaga w szybkim sprawdzeniu wydajności serwera stron. Do bardziej złożonych testów obciążenia, wypróbujsiege
. -
Do poważniejszego debugowania sieci,
wireshark
,tshark
lubngrep
. -
Poznaj
strace
orazltrace
. Mogą one pomóc w znalezieniu przyczyny, gdy program nie działa poprawnie, zawiesza się lub całkowicie "rozsypuje" lub gdy chcesz poznać jego ogólną wydajność. Zwróć uwagę na opcję profilowania (-c
) oraz możliwość wpięcia się w działający proces (-p
). Używaj opcji śledzenia procesów potomnych (-f
), żeby nie przeoczyć ważnych wywołań systemowych. -
Poznaj
ldd
do sprawdzania współdzielonych bibliotek, itp. — ale nigdy nie uruchamiaj go z niezaufanymi plikami. -
Dowiedz się, jak można się wpiąć w działający proces przy pomocy
gdb
i prześledzić jego użycie stosu. -
Używaj
/proc
. Czasami jest niezwykle pomocny w rozwiązywaniu trwających problemów. Przykłady:/proc/cpuinfo
,/proc/meminfo
,/proc/cmdline
,/proc/xxx/cwd
,/proc/xxx/exe
,/proc/xxx/fd/
,/proc/xxx/smaps
(gdziexxx
jest nazwą procesu lub jego numerem pid). -
Kiedy sprawdzasz, dlaczego w przeszłości coś poszło źle,
sar
może być bardzo pomocny. Pokazuje on historyczne statystyki użycia CPU, pamięci, sieci, itp. -
Do głębszych analiz systemów i wydajności, rzuć okiem na
stap
(SystemTap),perf
orazsysdig
. -
Sprawdź w jakim jesteś systemie operacyjnym, używając
uname
lubuname -a
(ogólne informacje na temat Uniksa/jądra systemu) albolsb_release -a
(informacje na temat dystrybucji Linuksa). -
Używaj
dmesg
zawsze, gdy coś się "dziwnie zachowuje" (to może oznaczać problemy ze sprzętem lub sterownikami). -
Jeśli usuwasz plik, ale nie zwalnia to oczekiwanej ilości miejsca jak np. wskazywanej przez
du
, sprawdź czy plik ten nie jest używany przez jakiś proces:lsof | grep deleted | grep "nazwa-pliku-zajmujacego-miejsce"
Kilka przykładów składania poleceń:
- Czasem niesłychanie pomocna okazuje się możliwość uzyskania z plików tekstowych tylko części wspólnej, sumy i różnicy zbiorów danych przy użyciu
sort
/uniq
. Przypuśćmy, żea
ib
są plikami tekstowymi, niezawierającymi żadnych powtórzeń. Taka operacja jest szybka i działa na plikach o dowolnym rozmiarze, do kilku gigabajtów. (Sortowanie nie jest ograniczone rozmiarem pamięci, aczkolwiek może wymagać użycia opcji-T
, jeśli/tmp
znajduje się na partycji głównej o małym rozmiarze.) Zobacz także uwagi na tematLC_ALL
powyżej oraz opcję-u
dla poleceniasort
(pominiętą poniżej dla zachowania przejrzystości).
sort a b | uniq > c # c jest sumą a i b
sort a b | uniq -d > c # c jest częścią wspólną a i b
sort a b b | uniq -u > c # c jest różnicą zbiorów a - b
- Wyświetl dwa pliki w formacie JSON, normalizując ich składnię, a następnie kolorując i dzieląc na strony wynik operacji:
diff <(jq --sort-keys . < plik1.json) <(jq --sort-keys . < plik2.json) | colordiff | less -R
-
Używaj
grep . *
, aby szybko przeanalizować zawartość wszystkich plików w katalogu (tak, by każda linia była powiązana z nazwą pliku) lubhead -100 *
(tak, by każdy plik miał nagłówek). To może być użyteczne dla katalogów zawierających ustawienia konfiguracyjne, jak w/sys
,/proc
,/etc
. -
Sumowanie wszystkich liczb zawartych w trzeciej kolumnie pliku tekstowego (to rozwiązanie jest prawdopodobnie 3X szybsze i zawarte w 3X mniejszej ilości kodu, niż odpowiednik w Pythonie):
awk '{ x += $3 } END { print x }' mojplik
- Żeby zobaczyć rozmiary/daty w drzewie plików, poniższe rozwiązanie jest podobne do rekurencyjnego
ls -l
, ale czytelniejsze niżls -lR
:
find . -type f -ls
- Powiedzmy, że masz plik tekstowy, np. log z serwera stron, zawierający pewne wartości w niektórych liniach, takie jak wartość parametru
acct_id
obecnego w adresach URL. Jeśli chcesz otrzymać zestawienie liczby zapytań dla każdegoacct_id
:
egrep -o 'acct_id=[0-9]+' access.log | cut -d= -f2 | sort | uniq -c | sort -rn
-
By śledzić zmiany w sposób ciągły, użyj
watch
, np. sprawdzanie zmian plików w kataloguwatch -d -n 2 'ls -rtlh | tail'
lub zmian ustawień sieciowych podczas naprawy ustawień Twojego połączenia wifiwatch -d -n 2 ifconfig
. -
Uruchom tę funkcję, aby otrzymać losowo wybraną wskazówkę z tego dokumentu (przetwarza Markdown i wyodrębnia jeden element):
function taocl() {
curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README-pl.md |
sed '/cowsay[.]png/d' |
pandoc -f markdown -t html |
xmlstarlet fo --html --dropdtd |
xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" |
xmlstarlet unesc | fmt -80 | iconv -t US
}
-
expr
: wykonaj działania arytmetyczne lub logiczne albo oceniaj wyrażenia regularne -
m4
: prosty edytor makr -
yes
: wyświetl łańcuch znaków wiele razy -
cal
: wygodny kalendarz -
env
: wykonaj polecenie (przydatny w skryptach) -
printenv
: wyświetl zmienne środowiskowe (przydatny w debugowaniu i skryptach) -
look
: znajdź angielskie słowa (lub linie w pliku) zaczynające się od łańcucha znaków -
cut
,paste
ijoin
: manipulacja zawartością plików -
fmt
: sformatuj linie tekstu -
pr
: sformatuj tekst na stronach/w kolumnach -
fold
: zwiń linie tekstu -
column
: sformatuj pola tekstowe do postaci wyrównanych kolumn lub tabel o stałej szerokości -
expand
iunexpand
: zamień znaki tabulacji na spacje i odwrotnie -
nl
: dodaj numerację linii -
seq
: wyświetl ciąg liczb -
bc
: kalkulator -
factor
: rozłóż liczby całkowite na czynniki -
gpg
: zaszyfruj i podpisz pliki -
toe
: tabela wpisów terminfo -
nc
: debugowanie połączeń sieciowych i przesyłanie danych -
socat
: przekazywanie połączeń i przekierowanie portów TCP (podobny donetcat
) -
slurm
: obrazowanie ruchu sieciowego -
dd
: przenoszenie danych między plikami lub urządzeniami -
file
: zidentyfikuj typ pliku -
tree
: wyświetl katalogi i podkatalogi w postaci zagnieżdżonego drzewa; jakls
, ale rekurencyjny -
stat
: informacje o pliku -
time
: wykonaj polecenie i zmierz czas jego działania -
timeout
: wykonaj polecenie przez określony czas i zatrzymaj jego działanie, gdy ten czas upłynie. -
lockfile
: utwórz plik semaforowy, który można usunąć tylko przy użyciurm -f
-
logrotate
: wykonaj rotację, skompresuj i wyślij pocztą logi. -
watch
: powtarzaj wykonanie polecenia, pokazując wyniki i/lub podkreślając zmiany -
when-changed
: wykonuje dowolne zadane polecenie, gdy tylko zauważy zmianę w pliku. Zobacz teżinotifywait
orazentr
. -
tac
: wyświetl zawartość pliku w odwrotnej kolejności -
comm
: porównaj posortowane zawartości plików, linia po linii -
strings
: wyodrębnij tekst z plików binarnych -
tr
: zamiana lub edycja znaków -
iconv
lubuconv
: zmiana kodowania znaków w tekstach -
split
icsplit
: dzielenie plików na części -
sponge
: odczytaj pełną zawartość strumienia danych wejściowych przed ich wypisaniem, przydatne przy odczycie i zapisie do tego samego pliku, np.grep -v cośtam jakis-plik | sponge jakis-plik
-
units
: obliczenia i zamiana jednostek miar; zamienia furlongi/dwa-tygodnie na twipy/mrugnięcie (zobacz także/usr/share/units/definitions.units
) -
apg
: generuje hasła, dobierając ich znaki losowo -
xz
: wysokowydajna kompresja plików -
ldd
: informacje o bibliotekach dołączanych dynamicznie -
nm
: uzyskaj symbole z plików obiektowych -
ab
lubwrk
: badanie wydajności serwerów stron -
strace
: debugowanie wywołań systemowych -
mtr
: lepszy traceroute do debugowania połączeń sieciowych -
cssh
: powłoka równoległa w trybie graficznym -
rsync
: zsynchronizuj pliki i katalogi przez SSH lub na lokalnym systemie plików -
wireshark
itshark
: przechwytywanie pakietów danych i debugowanie sieci -
ngrep
: grep dla warstwy sieciowej -
host
idig
: sprawdzanie DNSów -
lsof
: informacje o deskryptorach plików i gniazdach używanych przez proces -
dstat
: przydatne statystyki systemowe -
glances
: wysokopoziomowy podgląd użycia wielu podsystemów -
iostat
: statystyki użycia dysku -
mpstat
: statystyki użycia CPU -
vmstat
: statystyki użycia pamięci -
htop
: ulepszona wersja polecenia top -
last
: historia logowania użytkowników -
w
: sprawdzanie, kto jest zalogowany -
id
: informacje o tożsamości użytkownika/grupy -
sar
: historyczne statystyki systemowe -
iftop
ornethogs
: podgląd użycia połączeń sieciowych przez gniazdo lub proces -
ss
: statystyki użycia gniazda -
dmesg
: komunikaty błędów systemu i jego uruchomienia -
sysctl
: podejrzyj i skonfiguruj parametry jądra Linux w trakcie działania -
hdparm
: zmiana ustawień i badanie wydajności dysków SATA/ATA -
lsblk
: wyświetl urządzenia blokowe: podgląd listy dysków i partycji w postaci drzewa -
lshw
,lscpu
,lspci
,lsusb
,dmidecode
: informacje o sprzęcie, wliczając w to CPU, BIOS, RAID, podsystem grafiki, urządzenia, itd. -
lsmod
imodinfo
: wyświetl listę i szczegóły dotyczące modułów jądra. -
fortune
,ddate
orazsl
: hm, no cóż, wszystko zależy od tego, czy lokomotywy parowe i dymki z komiksów uważasz za "użyteczne"
Poniższe wpisy mają znaczenie tylko dla systemów macOS.
-
Zarządzanie pakietami oprogramowania za pomocą
brew
(Homebrew) i/lubport
(MacPorts). Można ich użyć do instalacji na macOS wielu z powyższych poleceń. -
Skopiujesz dane wyjściowe dowolnego polecenia do aplikacji pulpitowej za pomocą
pbcopy
, a dane wejściowe do polecenia wkleisz używającpbpaste
. -
Żeby użyć klawisza Option w Terminalu macOS jako klawisza alt (do użycia np. jak w powyższych kombinacjach alt-b, alt-f, itp.), otwórz Preferences -> Profiles -> Keyboard i wybierz "Use Option as Meta key".
-
Do otwarcia pliku w aplikacji pulpitowej, użyj poleceń
open
lubopen -a /Applications/Whatever.app
. -
Spotlight: szukaj plików używając
mdfind
i wyświetl metadane (takie jak informacje EXIF ze zdjęcia) przy pomocymdls
. -
Bądź świadom tego, że macOS oparty jest na systemie BSD Unix i wiele poleceń (np.
ps
,ls
,tail
,awk
,sed
) trochę się różni od tych samych poleceń w systemach Linux, na które to systemy w główny wpływ miały Uniksy podobne do System V i narzędzia GNU. Różnice można często zauważyć, przyglądając się nagłówkom podręczników, mówiącym "BSD General Commands Manual." W niektórych przypadkach, zainstalowane mogą być również wersje GNU (takie polecenia, jakgawk
igsed
jako awk i sed z pakietu narzędzi GNU). Jeżeli piszesz wieloplatformowe skrypty Bash, unikaj takich poleceń (rozważ na przykład użycie Pythona lubperl
a) albo przetestuj je dokładnie. -
Aby uzyskać informacje o wersji macOS, użyj
sw_vers
.
Poniższe wpisy mają znaczenie tylko dla systemów Windows.
-
Okiełznaj moc powłoki systemów Unix w systemach Microsoft Windows instalując Cygwin. Większość rzeczy opisanych w tym dokumencie będzie działać od razu.
-
W Windows 10 możesz użyć Windows Subsystem for Linux (WSL), który zapewnia znajome środowisko Basha z narzędziami wiersza poleceń Unix.
-
Jeśli chcesz używać głównie narzędzi programistycznych GNU (takich jak GCC) w systemach Windows, rozważ użycie MinGW i jego pakietu MSYS, który zapewnia takie narzędzia, jak bash, gawk, make i grep. MSYS nie spełnia wszystkich funkcji w porównaniu z Cygwinem. MinGW jest szczególnie przydatny do tworzenia odpowiedników narzędzi systemu Unix, działających natywnie w systemach Windows.
-
Kolejną opcją zapoznania się z systemami Unix z poziomu systemu Windows jest Cash. Miej na uwadze, że tylko nieliczne uniksowe polecenia i ich opcje są dostępne w tym środowisku.
-
Możesz wykonać i oskryptować większość zadań administracyjnych Windows z poziomu wiersza poleceń, znając i używając
wmic
. -
Natywne narzędzia wiersza poleceń Windows do zarządzania siecią, które mogą się okazać użyteczne, to między innymi
ping
,ipconfig
,tracert
inetstat
. -
Możesz wykonać wiele przydatnych zadań w Windows, używając polecenia
Rundll32
.
-
Instaluj dodatkowe programy Unix, używając zarządcy pakietów oprogramowania Cygwina.
-
Używaj
mintty
jako Twojego programu do obsługi wiersza poleceń. -
Uzyskaj dostęp do zawartości schowka Windows przez
/dev/clipboard
. -
Uruchom
cygstart
, aby otworzyć dowolny plik przy użyciu zarejestrowanej aplikacji. -
Uzyskaj dostęp do rejestru systemowego Windows używając
regtool
. -
Zauważ, że Windowsowa ścieżka do dysku
C:\
w Cygwinie staje się ścieżką/cygdrive/c
oraz, że katalog/
Cygwina pojawia się w lokalizacjiC:\cygwin
systemu Windows. Zmieniaj sposób zapisu ścieżek między Cygwinem a Windows używająccygpath
. To najbardziej przydatne w skryptach, które uruchamiają programy systemu Windows.
- awesome-shell: Wyselekcjonowana lista narzędzi powłoki i innych zasobów.
- awesome-osx-command-line: Bardziej szczegółowy przewodnik po wierszu poleceń systemu macOS.
- Tryb ścisły środkiem do tworzenia lepszych skryptów powłoki.
- shellcheck: Narzędzie do analizy statycznej skryptów powłoki. Zasadniczo, taki "odśmiecacz" dla powłok bash/sh/zsh.
- Nazwy plików i ścieżki w powłoce: Niestety skomplikowany zestaw uwag na temat prawidłowej obsługi nazw plików w skryptach powłoki.
- Data Science at the Command Line: Więcej poleceń i narzędzi przydatnych do obróbki danych, zaczerpniętych z książki pod tym samym tytułem.
Z wyjątkiem opisów drobnych zadań, kod napisany jest tak, aby był czytelny dla innych. Z mocą przychodzi odpowiedzialność. To, że coś możesz zrobić w Bashu, niekoniecznie oznacza, że powinieneś/powinnaś to zrobić! ;)
Ta praca została udostępniona na licencji Creative Commons Attribution-ShareAlike 4.0 International License.