Podczas badania innego problemu natrafiłem na polecenie ,
locate something | xargs -I {} bash -c "if [ -d "{}" ]; then echo {}; fi"
o którym chciałem dowiedzieć się więcej. Uruchomiłem więc man xargs
i otrzymałem następujące dane wyjściowe:
XARGS(1) General Commands Manual XARGS(1)
NAME
xargs - build and execute command lines from standard input
SYNOPSIS
xargs [-0prtx] [-E eof-str] [-e[eof-str]] [--eof[=eof-str]] [--null]
[-d delimiter] [--delimiter delimiter] [-I replace-str] [-i[replace-
str]] [--replace[=replace-str]] [-l[max-lines]] [-L max-lines]
[--max-lines[=max-lines]] [-n max-args] [--max-args=max-args] [-s max-
chars] [--max-chars=max-chars] [-P max-procs] [--max-procs=max-procs]
[--interactive] [--verbose] [--exit] [--no-run-if-empty]
[--arg-file=file] [--show-limits] [--version] [--help] [command
[initial-arguments]]
DESCRIPTION
This manual page documents the GNU version of xargs...
Staram się lepiej korzystać z dokumentacji, aby dowiedzieć się o programach Linux, ale ta sekcja „Streszczenie” jest zastraszająca dla nowych użytkowników. To dosłownie wygląda jak bełkot w porównaniu do man locate
lub man free
.
Jak dotąd rozumiem, że nawiasy kwadratowe oznaczają opcjonalne, a nawiasy zagnieżdżone oznaczają opcje opcjonalne. Ale jak mam za pomocą tego wydać prawidłowe polecenie?
Nie proszę o pomoc w Xargs tutaj. Szukam pomocy w interpretacji strony podręcznika, aby zrozumieć skomplikowane polecenia. Chcę przestać tworzyć indeksowane przez Google blogi internetowe i osobistą pomoc innych osób jako moje pierwsze podejście do nauki poleceń systemu Linux.
man man
man man
przeczytaniuman intro
.Odpowiedzi:
Cóż, to mój bardzo osobisty sposób na czytanie stron podręcznika:
Manpager
Po otwarciu manpage pomocą
man
polecenia zostaną wyświetlone dane wyjściowe / wydanego przezless
lubmore
poleceń, lub jakiejkolwiek innej komendy, która zostanie ustawiony jako pager (MANPAGER).Jeśli używasz Linuksa, zapewne masz zapewnioną infrastrukturę man już skonfigurowaną do używania
/usr/bin/less -is
(chyba że zainstalowałeś jakieś minimalne dystrybucje) jakoman(1)
, wyjaśnij to w sekcji Opcje:W FreeBSD i OpenBSD jest to tylko kwestia edycji
MANPAGER
zmiennej środowiskowej, ponieważ będą one najczęściej używanemore
, a niektóre funkcje, takie jak wyszukiwanie i podświetlanie tekstu, mogą być niedostępne.Jest to dobra odpowiedź na pytanie, jakie różnice
more
,less
amost
nie tutaj (nie używanymost
). Możliwość przewijania do tyłu i przewijania do przodu strona po stronie Spacelub w obie strony linia za pomocą ↓lub ↑(także przy użyciuvi
powiązań ji k) jest niezbędna podczas przeglądania stron podręcznika. Naciśnij hpodczas używania,less
aby wyświetlić podsumowanie dostępnych poleceń.I dlatego sugeruję, abyś używał go
less
jako swojego pagera.less
mieć kilka podstawowych funkcji, które będą używane podczas tej odpowiedzi.Jak sformatowane jest polecenie?
Konwencje narzędziowe : specyfikacja grupy bazowej Open Group Issue 7 - IEEE Std 1003.1, 2013 Edition. Powinieneś odwiedzić ten link, zanim spróbujesz zrozumieć stronę podręcznika. To internetowe odniesienie opisuje składnię argumentów standardowych narzędzi i wprowadza terminologię używaną w POSIX.1-2017 do opisywania argumentów przetwarzanych przez narzędzia. Spowoduje to również pośrednie poinformowanie Cię o prawdziwym znaczeniu słów takich jak parametry, argumenty, opcja argumentów ...
Po zrozumieniu zapisów konwencji narzędziowych głowa dowolnej strony będzie wyglądać mniej tajemniczo:
Pamiętaj o tym, co chcesz zrobić.
Kiedy robiłeś swoje badania na swój temat
xargs
, zrobiłeś to celowo, prawda? Miałeś specyficzną potrzebę czytania standardowego wyjścia i wykonywania poleceń na podstawie tego wyjścia.Ale kiedy nie wiem, które polecenie chcę?
Użyj
man -k
lubapropos
(są równoważne). Jeśli nie wiem jak znaleźć plik:man -k file | grep search
. Przeczytaj opisy i znajdź taki, który będzie lepiej pasował do twoich potrzeb. Przykład:Apropos domyślnie działa z wyrażeniami regularnymi (
man apropos
przeczytaj opis i dowiedz się, co-r
działa), aw tym przykładzie szukam każdej strony podręcznej, w której opis zaczyna się od „raport”.Aby wyszukać informacje związane z odczytywaniem standardowego przetwarzania danych wejściowych / wyjściowych i osiąganiem
xargs
jako możliwej opcji:Zawsze czytaj
DESCRIPTION
przed rozpoczęciemNie spiesz się i przeczytaj opis. Po przeczytaniu opisu
xargs
polecenia dowiemy się, że:xargs
czyta ze STDIN i wykonuje potrzebne polecenie. Oznacza to również, że będziesz musiał mieć trochę wiedzy na temat działania standardowego wejścia i manipulowania nim za pomocą potoków w celu łączenia poleceń/bin/echo
. Daje to małą wskazówkę, że jeśli chcesz połączyć więcej niż jednąxargs
, nie musisz używać echa do drukowania.-0
jest sposobem zapobiegania eksplozji za pomocą separatorów znaków o wartości zerowej. Opis ostrzega, że polecenie użyte jako dane wejściowe również musi obsługiwać tę funkcję i że GNUfind
ją obsługuje. Wspaniały. Używamy dużo find zxargs
.xargs
zatrzyma się po osiągnięciu stanu wyjścia 255.Niektóre opisy są bardzo krótkie i to na ogół dlatego, że oprogramowanie działa w bardzo prosty sposób. Nawet nie myśl o pominięciu tej części strony ;)
Inne rzeczy, na które należy zwrócić uwagę ...
Wiesz, że możesz wyszukiwać pliki za pomocą
find
. Istnieje mnóstwo opcji i jeśli tylko spojrzysz naSYNOPSIS
, zostaniesz nimi przytłoczony. To tylko wierzchołek góry lodowej. Z wyłączeniemNAME
,SYNOPSIS
iDESCRIPTION
, będziesz mieć następujące sekcje:AUTHORS
: ludzie, którzy utworzyli polecenie lub pomogli w jego utworzeniu.BUGS
: wyświetla wszelkie znane wady. Mogą to być jedynie ograniczenia implementacyjne.ENVIRONMENT
: Aspekty powłoki, na które może mieć wpływ polecenie, lub zmienne, które zostaną użyte.EXAMPLES
lubNOTES
: Wyjaśniający.REPORTING BUGS
: Z kim będziesz musiał się skontaktować, jeśli znajdziesz błędy w tym narzędziu lub w jego dokumentacji.COPYRIGHT
: Osoba, która utworzyła i zrzeka się o oprogramowaniu. Wszystko związane z licencją samego oprogramowania.SEE ALSO
: Inne polecenia, narzędzia lub aspekty robocze związane z tym poleceniem i nie mieszczące się w żadnej z pozostałych sekcji.Najprawdopodobniej znajdziesz interesujące informacje na temat aspektów narzędzia w sekcji przykładów / notatek.
Przykład
W poniższych krokach wezmę
find
jako przykład, ponieważ jego pojęcia są „prostsze” niżxargs
wyjaśnienie (jedno polecenie znajduje pliki, a drugie dotyczy standardowego i potokowego wykonywania innych danych wyjściowych polecenia). Udawajmy, że nie wiemy nic (lub bardzo mało) o tym poleceniu.Mam konkretny problem: muszę szukać każdego pliku z
.jpg
rozszerzeniem i 500KiB (KiB = 1024 bajty, potocznie zwany kibibajtem) lub więcej w folderze serwera ftp.Najpierw otwórz instrukcję:
man find
.SYNOPSIS
Jest szczupły. Poszukajmy rzeczy w podręczniku: Wpisz /plus żądane słowo (size
). Zindeksuje wiele wpisów-size
, które policzą określone rozmiary. Utknąć. Nie wiem, jak wyszukiwać za pomocą „więcej niż” lub „mniej niż” danego rozmiaru, a mężczyzna mi tego nie pokazuje.Spróbujmy i poszukaj następnego wpisu znalezionego przez uderzenie n. DOBRZE. Znalazłem coś wartego uwagi:
find
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)
. Być może ten przykład pokazuje nam, że dzięki-size +100M
niemu znajdziesz pliki o rozmiarze 100 MB lub większym. Jak mogę potwierdzić? Podchodzenie do głowy strony i szukanie innych słów.Ponownie spróbujmy tego słowa
greater
. Naciśnięcie gzaprowadzi nas do głowy strony. /greater
, a pierwszy wpis to:Brzmi wspaniale. Wygląda na to, że ten blok instrukcji potwierdził nasze podejrzenia. Dotyczy to jednak nie tylko rozmiarów plików. Odnosi się to do wszystkich,
n
które można znaleźć na tej stronie (jak powiedziano: „Argumenty liczbowe można określić jako”).Dobry. Pozwól nam znaleźć sposób, aby filtrować według nazwy: g /
insensitive
. Dlaczego? Niewrażliwy? Wtf? Mamy hipotetyczny serwer FTP, gdzie ludzie „że inne OS” może dać nazwę pliku z rozszerzeniem jak.jpg
,.JPG
,.JpG
. Doprowadzi nas to do:Jednak po wyszukaniu
lname
zobaczysz, że będzie to tylko wyszukiwanie dowiązań symbolicznych. Chcemy prawdziwych plików. Następny wpis:Wspaniały. Nie muszę nawet czytać,
-name
żeby zobaczyć, że-iname
jest to wersja tego argumentu bez rozróżniania wielkości liter. Złóżmy polecenie:Komenda:
find /ftp/dir/ -size +500k -iname "*.jpg"
Co jest tutaj dorozumiane: Wiedza, że symbol wieloznaczny
?
reprezentuje „dowolny znak w jednej pozycji” i*
reprezentuje „zero lub więcej dowolnych znaków”. Ten-name
parametr daje podsumowanie tej wiedzy.Wskazówki dotyczące wszystkich poleceń
Niektóre opcje, mnemoniki i „styl składni” poruszają się po wszystkich poleceniach, przez co kupujesz trochę czasu, nie otwierając wcale strony podręcznika. Poznaje się je poprzez praktykę, a najczęściej są to:
-v
oznacza pełny.-vvv
jest odmianą „bardzo bardzo gadatliwą” w niektórych programach.tar -xzvf
,cp -Rv
.-R
i / lub-r
oznacza rekurencyjne.--help
opcji.--version
pokazuje wersję oprogramowania.-p
, narzędzia do kopiowania lub przenoszenia oznaczają „zachowaj uprawnienia”.-y
oznacza TAK lub w większości przypadków „kontynuuj bez potwierdzenia”.Pamiętaj, że powyższe nie zawsze są prawdziwe. Na przykład
-r
przełącznik może oznaczać bardzo różne rzeczy dla różnych programów. Zawsze dobrze jest sprawdzić i upewnić się, kiedy polecenie może być niebezpieczne, ale są to typowe wartości domyślne.Domyślne wartości poleceń.
Na stronie tej odpowiedzi zobaczyliśmy, że
less -is
jest to pagerman
. Domyślne zachowanie poleceń nie zawsze jest wyświetlane w oddzielnej sekcji na stronach podręcznika lub w sekcji, która jest najwyżej umieszczona.Będziesz musiał przeczytać opcje, aby dowiedzieć się o ustawieniach domyślnych, lub jeśli masz szczęście, pisanie /
pager
doprowadzi cię do tych informacji. Wymaga to również znajomości koncepcji pagera (oprogramowania przewijającego stronę podręcznika), a to jest rzecz, którą uzyskasz dopiero po przeczytaniu wielu stron podręcznika.Dlaczego to takie ważne? Otworzy to twoją percepcję, jeśli zauważysz różnice w przewijaniu i zachowaniu kolorów podczas czytania
man(1)
na przykład w systemie Linux (less -is
pager) lub FreeBSDman(1)
.A co ze
SYNOPSIS
składnią?Po uzyskaniu wszystkich informacji potrzebnych do wykonania polecenia możesz połączyć opcje, argumenty opcji i operandy, aby wykonać zadanie. Przegląd pojęć:
-t
montowania, która określa typ systemu plików (-t iso9660
,-t ext2
). „ Zrób to z zamkniętymi oczami ” lub „ nakarm zwierzęta, ale tylko lwy ”. Zwane także argumentami.cat file.txt
, operand jest plikiem w twoim bieżącym katalogu, a jego zawartość zostanie pokazana naSTDOUT
.ls
to polecenie, w którym operand jest opcjonalny. Trzy kropki po operandzie domyślnie informują, żecat
możesz działać na wielu operandach (plikach) jednocześnie. Możesz zauważyć, że niektóre polecenia ustawiły typ operandu, który będzie używany. Przykład:cat [OPTION] [FILE]...
Powiązane rzeczy z streszczenia:
Kiedy ta metoda nie zadziała?
and
,to
,for
wewnątrz manpageslftp
(i stron podręcznika) zainstalowanych, nie możesz wiedzieć, że jest to odpowiednia opcja dla bardziej wyrafinowanego klienta ftp poprzez uruchomienieman -k ftp
W niektórych przypadkach przykłady będą dość proste i będziesz musiał wykonać kilka poleceń, aby przetestować lub, w najgorszym przypadku, Google go.
Inne: Języki programowania i jego moduły:
Jeśli programujesz lub tworzysz skrypty, pamiętaj, że niektóre języki mają własne systemy stron, takie jak
perl
(perldocs
), python (pydocs
) itp., Przechowujące określone informacje o metodach / funkcjach, zmiennych, zachowaniu i inne ważne informacje o module próbujesz używać i uczyć się. Przydało mi się to, gdy tworzyłem skrypt do pobierania nieprzeczytanych wiadomości e-mail IMAP za pomocąperl Mail::IMAPClient
modułu.Będziesz musiał dowiedzieć się o tych konkretnych stronach, korzystając z
man -k
wyszukiwarki online. Przykłady:... mnóstwo innych rzeczy tutaj, z sekcjami jak zwykła strona podręcznika ...
Z pythonem:
Lub funkcja
help()
wewnątrz powłoki Pythona, jeśli chcesz przeczytać więcej szczegółów na temat jakiegoś obiektu:Bonus:
wtf
komenda może pomóc w akronimów i działa jakwhatis
gdyby nie skrótem na jego bazie znajduje się, ale to, co szukasz jest częścią bazy danych człowieka. W Debianie to polecenie jest częściąbsdgames
pakietu. Przykłady:źródło
man find | grep ...
. Lubięman command | sed -n '/^[[:space:]]*-/,/^$/p'
man
?” Dziękuję i dobrze zrobione.man
Oczywiście jako strona.Jest to całkiem ładnie wyjaśnione w
man man
:Jeśli chodzi o to, jak masz napisać prawidłowe polecenie, cóż, nie jesteś. Streszczenie jest przydatne, gdy wiesz, jak działa polecenie. Pomoże Ci odświeżyć pamięć. Aby zrozumieć, jak działa polecenie, powinieneś przeczytać stronę podręcznika. Szczególnie opisy opcji i sekcja przykładów.
Czasami streszczenie wystarczy. Na przykład w
man ls
:Innym razem jest to bezużyteczne, chyba że wiesz już, jak korzystać z danego polecenia. Na przykład
man dd
:Podsumowując, nie martw się, jeśli nie otrzymasz streszczenia. To normalne. Przeczytaj stronę podręcznika.
źródło
Kilka podstaw zrozumienia streszczenia
[foo]
reprezentuje opcjonalny argument lub parametr.[foo [ bar ] ]
używana jest składnia, możesz użyć foo i możesz dodać pasek.[ -S size ]
, co oznacza, że argument -S czeka na wymagany rozmiar.Na przykład :
foo [-S size ] filename ...
znaczy
foo
-S
może być użyty, musisz powiedziećsize
(nazwa daje podpowiedź)filename
(daje to podpowiedź, patrzman mkdir
)...
mówi, że możesz użyć wielu plików.Nadal musisz zagłębić się w stronę podręcznika, aby zrozumieć opcję (w moim przykładzie powyżej, o czym
-S size
jest)źródło
man
strony są zwykle wyświetlane wless
dzisiejszych czasach. Dzięki temu można je przeszukiwać. Nie zawracałbym sobie głowy streszczeniem, szczególnie nie dlatego, że masz określoną linię poleceń, którą chcesz zrozumieć.Naciśnij /i zacznij pisać,
-I
a następnie Enter. Pierwsze trafienie będzie w streszczeniu, drugie (użyj ndo następnego) zawiera szczegółowe wyjaśnienie-I
.źródło
Jedną kluczową rzeczą do zapamiętania jest to, że nie można spojrzeć na instrukcję tylko dla jednego polecenia, w przypadku poleceń wykonujących inne polecenia.
Dla twojego przykładowego polecenia
Potrzebujesz informacji nie tylko,
xargs
ale takżebash
i[
(może to być na stronietest
podręcznika). Możesz także potrzebować informacji o powłoce (prawdopodobnie również bash) do reguł cytowania, ponieważ twoje polecenie zawiera złożony ciąg cytowany. Mogę już powiedzieć, że cytowany argument jest nieprawidłowy (i błędny w sposób, który pojawi się tylko wtedy, gdy napotkasz plik ze spacjami w nazwie);"{}"
prawdopodobnie powinno być wewnętrzne'{}'
.Najpierw powinieneś odnieść się do strony xargs i przekonać się,
[-I replace-str]
co to-I {}
znaczy, a[command [initial-arguments]]
po cobash
i wszystko po nim. Następnie odnieś się do stronybash
podręcznika dla tego-c
, co robi itp.źródło
Dodając do wspaniałych odpowiedzi, które już zostały podane:
1) Jeśli interesuje Cię narzędzie GNU, szczególnie takie jak,
sed
agrep
czasem użycieinfo
polecenia spowoduje wyświetlenie znacznie rozszerzonej wersji informacji o poleceniu.sed
, na przykład zawiera szczegółową sekcję dotyczącą pisania wyrażeń regularnych oraz inną sekcję z kilkoma bardzo złożonymi przykładami użycia.2) To „instrukcja”. Podręcznik ma przede wszystkim pomóc ci zapamiętać szczegóły czegoś, co już rozumiesz. Jest zaprojektowany tak, abyś mógł szybko uzyskać potrzebne informacje i wyjść. (I zbyt wiele nie ma przykładów użycia lub tylko trywialne.)
Kiedy muszę nauczyć się czegoś nowego, nawet niewielki cechę komendy, która nie jest dla mnie jasne, idę do sieci i szukać przy użyciu najlepszych słów kluczowych mogę myśleć (np
Linux
xargs
) i dodać słowohowto
,examples
lubtutorial
. Jest to bardzo często dość produktywne.Zwykle używam duckduckgo, ponieważ zachowuje moją prywatność, ale jeśli potrzebuję większej kontroli nad moimi wyszukiwaniami, korzystam z Google, ponieważ mogę mu powiedzieć, aby przeszukiwał tylko jedną stronę internetową lub wyświetlał tylko wyniki z ostatniego roku. (Ma wiele innych opcji wyszukiwania zaawansowanego. Możesz je Google.;))
Kolejna wskazówka:
W przypadku poleceń, do których często się odwołuję, zapisuję stronę podręcznika w pliku tekstowym
i załaduj ten plik do innego okna w moim edytorze tekstów, aby móc przewijać w przód iw tył, kopiować i wklejać itp. Zazwyczaj plik robię tylko do odczytu, więc nie kończę go przypadkowo, ale ponieważ jest to mój kopię osobistą, mógłbym ją edytować w dowolny sposób, dodając tagi, aby łatwiej znaleźć sekcję, a nawet dodając własne notatki lub przykłady.
Jedyną wadą jest to, że oryginalna strona podręcznika może zostać zaktualizowana, a moja kopia jest statyczna.
źródło
Aby uzyskać szybką pomoc dotyczącą określonego polecenia, możesz użyć wyjaśnienia powłoki . Np. Twoje polecenie . Po uzyskaniu pierwszego wysokiego poziomu zrozumienia, jak to działa, powinieneś przejść do stron podręcznika zgodnie z zaleceniami innych odpowiedzi.
źródło
Dostępne są przydatne narzędzia, aby dowiedzieć się więcej o komendach systemu Linux:
cheat
wyświetli często używaną opcję wiersza poleceń. Możesz także dodać własne,command + option
które będą wyświetlanecheat
dla określonego polecenia.bropages
narzędzie udostępnia przykład wiersza poleceń, możliwe jest dodanie własnego przykładu lub głosowanie w górę / w dół danego przykładu po przejściu kodu weryfikacyjnegobro thanks
. Polecenie „Głosuj” pojawi się na górzebro
strony.źródło
Proponuję
tldr
kompleksowe narzędzie podobne do człowieka. Uproszczone i oparte na społeczności strony man. W Ubuntu możesz zainstalować go za pomocą przystawki, ale ma również wersje dla innych dystrybucji. Zapewnia również kilka typowych zastosowań. Zalecane w 100%.źródło
> Szukam pomocy w interpretacji strony podręcznika, aby zrozumieć skomplikowane polecenia.
Myślę, że to nieporozumienie tutaj. Linux / UNIX jest tak potężny, że można konstruować bardzo długie i skuteczne polecenia, np. Przekierowując stdout jednego polecenia (tutaj, tutaj
locate
) na stdin innego polecenia (tutaj,xargs
) za pomocą potoku (|
). Dlatego, jak słusznie powiedział Random832, nie znajdziesz ani jednej strony podręcznika wyjaśniającej, co robi twoje przykładowe polecenie.Zalecam przeczytanie przewodnika po skryptach powłoki Linuksa; zaawansowane Bash-Scripting Guide to doskonały dokument. Nie daj się zastraszyć; opanowanie Linuksa wymaga lat i jest niekończącym się procesem, ale możesz nauczyć się podstaw w rozsądnym czasie.
Następnie zapoznaj się ze stronami podręcznymi, gdy potrzebujesz poznać szczegóły konkretnego polecenia.
Kiedy już to zrozumiesz, Commandlinefu i Bash One-Liners są również warte przeczytania, aby uzyskać dobre przykłady.
źródło
Aby wyszukać coś konkretnego w poleceniach na stronie podręcznika, możesz użyć:
Ale aby wyszukać przełączniki (na przykład
-n
), musisz użyć tego w następujący sposób:źródło