Wanneer ik de man-pagina van het find commando voor komt overeen met type het retourneert veel zoekresultaten die ik niet wil. In plaats daarvan wil ik een commando gebruiken dat alleen de zoekresultaten retourneert voor -type.

Het commando man find | grep -type werkt niet. Het retourneert:

grep: invalid option -- "t" 

Reacties

  • Wil je alleen de individuele regels van de opgemaakte man-pagina die de tekenreeks -type bevatten, of wil je bijvoorbeeld de hele of twee alineas die beschrijven wat -type doet?
  • Ik wil weten hoe ik het op beide manieren moet doen, grepping voor de afzonderlijke regels die de tekenreeks -type bevatten, zou voldoende zijn voor de manier waarop ik gewoonlijk de man-paginas doorzoek, maar teruggeven de hele paragraaf of twee die beschrijft wat -type doet, zou erg handig zijn om minstens één keer te doen.
  • Trouwens, als het bekijken van een webpagina een alternatief is, Idan Kamara van explainshell.com heeft uitstekend werk verricht door de gedeelten van manpages te extraheren die opdrachtopties beschrijven. Zie bijvoorbeeld explainshell.com/explain?cmd=find+-type+f om te zien wat de -type optie doet.

Answer

Als je een patroon wilt gebruiken dat begint met een koppelteken, gebruik dan -- voor het patroon dat u specificeert.

man find | grep -- -type 

Als u meer informatie wilt, bijvoorbeeld de hele sectie die een optie beschrijft , u zou kunnen proberen 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. 

Dit werkt echter niet voor elke optie waarnaar u zou kunnen zoeken. Bijvoorbeeld :

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

Niet erg nuttig. Erger nog, voor sommige opties zou je kunnen worden misleid door te denken dat je “de hele tekst over de optie had gelezen terwijl je dat echt niet had gedaan” t. Als u bijvoorbeeld zoekt op -delete, wordt de zeer belangrijke WAARSCHUWING weggelaten die is opgenomen als een tweede alinea onder die kop.


Mijn de aanbeveling is om een standaardoproep naar man te gebruiken met de LESS omgevingsvariabele set. Ik gebruik het vrij vaak in mijn antwoorden op deze site.

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

Voor meer informatie over hoe dit werkt, zie:

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

Als u de optie snel en interactief in de man-pagina wilt vinden, leer dan de zoekmogelijkheden van less” te gebruiken. En zie ook:

Reacties

  • Bedankt voor het plaatsen. De opdrachten in je antwoord leverden de resultaten op waarnaar ik op zoek was. Ik accepteer een antwoord na een dag of twee, dus wees geduldig.
  • @karel, geen probleem, ik ' ben erg geduldig. 🙂 Een beetje verbaasd: ik weet dat je ' start geen premie op een vraag gedurende twee dagen, maar ik denk dat de tijdslimiet voordat je een antwoord kunt accepteren slechts 15 minuten is of zo.
  • man find | sed -n '/-type/,/^$/p' geeft veel meer dan wat je hebt gepost komt overeen met -type waar dan ook in de regel … ik werk zelf aan een klein script om man of hulp te zoeken (voor ingebouwd) en gebruik momenteel awk die nog steeds weinig eigenaardigheden heeft om op te lossen .. awk -v RS= -v rx="^\\\s*$arg\\\>" '$0 ~ rx' "$file" waar arg -type zou zijn in dit geval
  • Trouwens, @Sundeep, je zou kunnen proberen om de onderliggende troff bestanden te parseren die de originele manpage-informatie met formaatinformatie bevatten, in plaats van de tekstuitvoer van het man commando.
  • @Sundeep, hier ' is het startpunt voor jou . (Zorg ervoor dat u de link in dat antwoord volgt.) Er is ' VEEL te weten over troff. Ping me in de chat als je klaar bent met duiken in het konijnenhol. 🙂

Antwoord

Of ga naar less en voer dat een zoekterm:

man 1 find | less -p " -type" 

(Dit kan mislukken, afhankelijk van wat less feed is, bijvoorbeeld als -type is vetgedrukt met backspaces.)

Reacties

  • Leid het door col -bx eerst.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *