Kiedy przeglądam stronę podręcznika man polecenia find dla pasuje do type zwraca wiele wyników wyszukiwania, których nie chcę. Zamiast tego chcę użyć polecenia, które zwraca tylko wyniki wyszukiwania dla -type.

Polecenie man find | grep -type nie działa. Zwraca:

grep: invalid option -- "t" 

Komentarze

  • Czy chcesz tylko pojedyncze wiersze sformatowanej strony podręcznika które zawierają ciąg -type, czy chcesz, powiedzmy, cały akapit lub dwa opisujące, co robi -type?
  • Chcę wiedzieć, jak to zrobić w obie strony, wyszukanie poszczególnych wierszy zawierających ciąg -type wystarczyłoby na sposób, w jaki zwykle przeszukuję strony podręcznika, jednak zwracanie cały akapit lub dwa opisujące to, co -type robi, przydałyby się przynajmniej raz.
  • Przy okazji, jeśli przeglądanie strony internetowej jest alternatywą, Idan Kamara z Translatehell.com wykonał świetną robotę, wyodrębniając fragmenty stron man, które opisują opcje poleceń. Zobacz na przykład wyjaśniahell.com/explain?cmd=find+-type+f , aby zobaczyć, co dokładnie -type tak.

Odpowiedź

Jeśli chcesz wyszukiwać wzorzec zaczynający się od łącznika, użyj -- przed określonym wzorcem.

man find | grep -- -type 

Jeśli chcesz uzyskać więcej informacji, na przykład całą sekcję opisującą opcję , mógłbyś spróbować użyć Sed:

$ man find | sed -n "/-mindepth/,/^$/p" -mindepth levels Do not apply any tests or actions at levels less than levels (a non-negative integer). -mindepth 1 means process all files except the command line arguments. 

Jednak to nie zadziała dla każdej opcji, którą możesz wyszukać. Na przykład :

$ man find | sed -n "/^[[:space:]]*-type/,/^$/p" -type c File is of type c: 

Niezbyt pomocne. Co gorsza, w przypadku niektórych opcji możesz zostać wprowadzony w błąd, myśląc, że „czytaj cały tekst o opcji, chociaż naprawdę tego nie zrobiłeś” t. Na przykład wyszukiwanie -delete pomija bardzo ważne OSTRZEŻENIE zawarte jako drugi akapit pod tym nagłówkiem.


Mój zaleceniem jest użycie standardowego wywołania man z ustawioną zmienną środowiskową LESS. Używam go dość często w moich odpowiedziach na tej stronie.

LESS="+/^[[:space:]]*-type" man find 

Aby dowiedzieć się więcej, jak to działa, zobacz:

LESS="+/^[[:space:]]*LESS " man less LESS="+/\+cmd" man less LESS="+/\/" man less 

Jeśli chcesz po prostu szybko i interaktywnie znaleźć opcję na stronie podręcznika, naucz się korzystać z funkcji wyszukiwania less„. Oraz zobacz także:

Komentarze

  • Dziękuję za wysłanie. Polecenia w Twojej odpowiedzi zwróciły wyniki, których szukałem. Zaakceptuję odpowiedź za dzień lub dwa, więc proszę o cierpliwość.
  • @karel, nie ma problemu, ' jestem bardzo cierpliwy. 🙂 Trochę zdziwiony: wiem, że możesz nie rozpocznij nagrody za pytanie przez dwa dni, ale uważam, że limit czasu, po którym możesz zaakceptować odpowiedź, wynosi około 15 minut.
  • man find | sed -n '/-type/,/^$/p' daje dużo więcej niż to, co opublikowałeś dopasuje -type w dowolnym miejscu w wierszu … sam pracuję nad małym skryptem, aby wyszukać podręcznik lub pomoc (dla wbudowanych) i obecnie używam awk który wciąż ma kilka dziwactw do rozwiązania. awk -v RS= -v rx="^\\\s*$arg\\\>" '$0 ~ rx' "$file" gdzie arg byłoby -type w ten przypadek
  • BTW, @Sundeep, możesz spróbować przeanalizować podstawowe pliki troff zawierające informacje o oryginalnej stronie podręcznika wraz z informacją o formacie zamiast tekstu wyjściowego polecenia man.
  • @Sundeep, tutaj ' jest dla Ciebie punktem wyjścia . (Koniecznie skorzystaj z linku w tej odpowiedzi). ' jest DUŻO informacji o troff. Pinguj do mnie na czacie, kiedy skończysz nurkować w króliczej norze. 🙂

Odpowiedz

Lub potokiem do less i podaj że wyszukiwane hasło:

man 1 find | less -p " -type" 

(Może się to nie udać w zależności od tego, co dokładnie less jest kanałem), np. jeśli -type został pogrubiony ze znakami wstecznymi.)

Komentarze

  • Prześlij dalej przez col -bx pierwszy.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *