Když grepem manuálová stránka příkazu find pro odpovídá type vrací mnoho výsledků vyhledávání, které nechci. Místo toho chci použít příkaz, který vrátí pouze výsledky hledání pro -type.

Příkaz man find | grep -type nefunguje. Vrátí:

grep: invalid option -- "t" 

Komentáře

  • Chcete pouze jednotlivé řádky naformátované manuálové stránky které obsahují řetězec -type, nebo chcete, řekněme, celý odstavec nebo dva, které popisují, co -type dělá?
  • Chci vědět, jak to udělat oběma způsoby, stačilo by grepování na jednotlivé řádky, které obsahují řetězec -type pro způsob, jakým obvykle prohledávám manuálové stránky, avšak návrat celý odstavec nebo dva odstavce, které popisují, co -type dělá, by bylo velmi užitečné udělat alespoň jednou.
  • BTW, pokud je alternativou zobrazení webové stránky, Idan Kamara na vysvětlivce.com odvedl skvělou práci při extrahování částí manuálových stránek, které popisují možnosti příkazů. Podívejte se například na vysvětluje shell.com/explain?cmd=find+-type+f , abyste zjistili, co -type možnost ano.

Odpovědět

Chcete-li pozdravit vzor začínající pomlčkou, použijte -- před vzorem, který určíte.

man find | grep -- -type 

Pokud chcete více informací, například celá část popisující možnost , můžete zkusit použít 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. 

To však nebude fungovat pro všechny možnosti, které byste mohli hledat. Například :

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

Není moc užitečné. Horší je, že u některých možností byste mohli být uvedeni v omyl v tom, že si přečtete celý text o této možnosti, když jste ji opravdu neměli. t. Například vyhledávání -delete vynechá velmi důležité UPOZORNĚNÍ obsažené jako druhý odstavec pod tímto nadpisem.


Moje doporučení je použít standardní volání man se sadou proměnných prostředí LESS. Ve svých odpovědích na tomto webu jej používám poměrně často.

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

Další informace o tom, jak to funguje, naleznete na:

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

Pokud chcete tuto možnost rychle a interaktivně najít na stránce manuálu, naučte se používat less možnosti vyhledávání. A viz také:

Komentáře

  • Děkujeme za zveřejnění. Příkazy ve vaší odpovědi vrátily výsledky, které jsem hledal. Odpověď přijmu po dni nebo dvou, takže prosím buďte trpěliví.
  • @karel, žádný problém, jsem ' velmi trpělivý. 🙂 Trochu zmatený: Vím, že můžete ' nezačínám odměnu za dva dny, ale domnívám se, že časový limit, než přijmete odpověď, je pouhých 15 minut.
  • man find | sed -n '/-type/,/^$/p' dává mnohem víc než to, co jste zveřejnili bude odpovídat -type kdekoli v řádku … sám pracuji na malém skriptu, abych vyhledal člověka nebo pomohl (pro vestavěné) a aktuálně používám awk který má stále několik vtipů k vyřešení .. awk -v RS= -v rx="^\\\s*$arg\\\>" '$0 ~ rx' "$file" kde arg by byl -type v v tomto případě
  • BTW, @Sundeep, možná budete chtít místo textového výstupu zkusit analyzovat podkladové troff soubory obsahující informace o původní stránce manuálu s informacemi o formátu příkazu man.
  • @Sundeep, zde ' je výchozím bodem pro vás . (Ujistěte se, že používáte odkaz v této odpovědi.) ' Je spousta informací o troff. Ping na chatu, až skončíte s králičí nivou. 🙂

Odpovědět

Nebo přesměrovat na less a feed že hledaný výraz:

man 1 find | less -p " -type" 

(To může selhat v závislosti na tom, co přesně je less zdroj, např. pokud -type byl zvýrazněn backspace.)

Komentáře

  • Propojte to col -bx první.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *