Ben kullanımını bilmek istediğinizi varsayalım -i
Şalter grep
kaydırmadan komuta. Sadece bu komut için spesifikasyona ihtiyacım var ya da en azından önce ekranı göster. Nasıl? Söyleyebileceğiniz gibi genel olarak sadece için değil grep -i
.
Ben kullanımını bilmek istediğinizi varsayalım -i
Şalter grep
kaydırmadan komuta. Sadece bu komut için spesifikasyona ihtiyacım var ya da en azından önce ekranı göster. Nasıl? Söyleyebileceğiniz gibi genel olarak sadece için değil grep -i
.
Yanıtlar:
Bu basit sed
komutu deneyin ,
$ man grep | sed -n '/-i, --ignore-case/,+2p'
-i, --ignore-case
Ignore case distinctions in both the PATTERN and the input
files. (-i is specified by POSIX.)
Açıklama:
sed -n '/-i, --ignore-case/,+2p'
|<-Search pattern->|
Arama paternini içeren satırı, arama kalıbı hattının hemen altında bulunan 2 satırla birlikte yazdırır.
VEYA
Sadece arama pattenindeki bayrakları aşağıdaki gibi verebilirsiniz.
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *i, -/,+3p'
-i, --ignore-case
Ignore case distinctions in both the PATTERN and the input
files. (-i is specified by POSIX.)
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *V, -/,+3p'
-V, --version
Print the version number of grep to the standard output stream.
This version number should be included in all bug reports (see
below).
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *F, -/,+3p'
-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by
newlines, any of which is to be matched. (-F is specified by
POSIX.)
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *G, -/,+3p'
-G, --basic-regexp
Interpret PATTERN as a basic regular expression (BRE, see
below). This is the default.
Hızlı erişim için bu komut dosyasını .bashrc
( $HOME/.bashrc
) öğenize ekleyebilirsiniz :
mangrep(){
USAGE="mangrep <application> <switch>"
if [[ "$#" -ne "2" ]]
then
echo "Usage: $USAGE"
else
man "$1" | sed -n "/ *"$2", -/,+3p"
fi
}
Terminalde aşağıdaki komutu yazın:
man grep
Sonra eğik çizgi karakteri /yazın ve aramanızı beğen -i
, ardından yazın Enter. Bu, imleci arama dizesinin ilk tekrarında konumlandırır. Tuşuna basmak nimleci bir sonraki tekrarlamaya taşır. Shift+ nTuşuna basmak imleci bir önceki tekrarlamaya taşır.
-i
's man grep
page.But OP ile ilgili sadece açıklama istediği -i
kılavuz sayfasında bayrak.
-i
. OP tam olarak bunu istiyor.
En basit yaklaşım /@girardengo tarafından önerildiği gibi arama yapmak olsa da, daha basit bulduğum grep
yerine kullanabilirsiniz sed
:
$ man grep | grep -A 1 '^ *-i'
-i, --ignore-case
Ignore case distinctions in both the PATTERN and the input
files. (-i is specified by POSIX.)
-A N
Vasıta "eşleştirme birinden sonra N satırları yazdırma. Sadece bir hile benzer önümüzdeki birkaç satır, almak için Avinash en sed
yaklaşımı.
İçindeki arama işlevini kullanabilirsiniz man
, sadece basın "s"
, aradığınız anahtarı yazın, (-i sizin durumunuzda) ve intro tuşuna basın.
Veya bu sitenin sizin için arama yapmasına izin verebilirsiniz:
http://explainshell.com/explain?cmd=grep+-i
Terminali kullanmaktan bir süreliğine bir tarayıcıya geçmeniz gerekiyor, ancak bunun da yolları var .
Farkında olduğum en etkili yöntem man sayfasını aramaktır -i
(Bu site kodumu oluşturmakta başarısız gibi görünüyor. Demek istediğim <space><space><space>-i
). Bu 3 boşluk (daha fazla / daha az alana ihtiyacınız olabilir) ve ardından aradığınız bayrak. Neredeyse her zaman tecrübelerimde çalışıyor ve işe yaramadığı durumlarda bazı değişkenlerine geçebilirsiniz.
Bayrakların asıl dokümantasyonu genellikle girintili olduğu için çalışır. Diğer bölümlerde bayrağın diğer sözlerini bulmaktan kaçınır, çünkü genellikle onlardan önce sadece bir boşluk vardır.
Tüm cevaplar iyi olabilir, ancak bence sadece bir parça belgeye odaklanıyorsunuz, hepsi değil. Örneğin -i
, grep belgelerinin anahtarını bulmak için :
info grep Invoking Command-line\ Options Matching\ Control
Ben "grep" hakkında tüm bilgileri, "eşleşen kontrol" için belirli "komut satırı seçenekleri" nasıl "çağırmak" bulacaksınız. Ne yazık bundan daha derine gitmez, ama vardır -i
, -y
, --ignore-case
ilkler 25 hatlarında, sen yok dair makul bir şey tüm yolu aşağı kaydırmak için.
Bu çözüm daha esnektir ve ayrıca tüm bilgileri aramanıza izin verir:
info --apropos=--ignore-case
"(coreutils)join invocation" -- --ignore-case <1>
"(coreutils)uniq invocation" -- --ignore-case <2>
"(coreutils)sort invocation" -- --ignore-case
"(gettext)msggrep Invocation" -- --ignore-case, ‘msggrep’ option
"(grep)Matching Control" -- --ignore-case
(kullanmak zorunda --ignore-case
yerine -i
çok yaygın olduğu için, ama sadece her durumda bilgi çıktı işleyebilir)
Bu durumda, hem bilgi sayfasının adına hem de tam bölüme sahip olursunuz. Ah, neredeyse unutuyordum, tabbilgi sayfalarının birçoğunu da kullanabilirsiniz .
Bir man
sayfada belirli bir seçeneği bulmak için benim en sevdiğim yaklaşım, normal ifade gibi kullanmaktır \s{2,}-option
. Eldeki soru için man grep
, regex yazabilir ve yazabilirsiniz:
/\s{3,}-i
veya
/ {3,}-i
^------------- space here
Bu -i
yalnızca üç veya daha fazla boşluk izlediğinde eşleşir .
As less
için çağrı cihazı olarak varsayılan olarak kullanılır man
, kullanabileceğiniz LESS
zaman aramak için bir model geçmek ortam değişkeni less
sayfasını açar. Bu, örn . Yapmak ve sonra man ls
seçeneği aramakla --all
veya örneğin örneğin veya -a
yazarak /ve girerek aynıdır .--all
-a
Tüm bunlar şu şekilde yapılabilir:
LESS='+/--all' man ls
Veya
LESS='+/-a' man ls
Aramak istediğiniz şeyi girin /
.
Muhtemelen bu, kısa seçeneklere (örn. --all
) Kıyasla uzun seçenekler (örneğin ) için en iyi sonucu verir -a
.
Eğer isterseniz tire ile başlayan bir desen için sonuçların, kullanım
deseni önce belirtin. Kullanarak örnek :grep
man <program>
--
man find
man find | grep -- -type
Daha fazla bilgi istiyorsanız, örneğin bir seçeneği açıklayan bölümün tamamı için şunu kullanmayı deneyin 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.