Bu, man sayfalarını okumak için çok kişisel bir yolum:
İşveren
man
Komutu kullanarak bir manpage açtığınızda , çıktı less
veya more
komutları veya çağrı cihazınız (yönetici) olarak ayarlanacak diğer herhangi bir komut tarafından gösterilecek / gösterilecektir .
Eğer Linux kullanıyorsanız, muhtemelen kullanmak için önceden yapılandırılmış olan insan altyapınızla birlikte /usr/bin/less -is
(bazı minimal dağıtımlar yapmadıysanız ) man(1)
, Seçenekler bölümünde açıklayın:
-P pager
Specify which pager to use. This option overrides the MANPAGER environment variable,
which in turn overrides the PAGER variable. By default, man uses /usr/bin/less -is.
FreeBSD ve OpenBSD'de, MANPAGER
çoğunlukla kullanacağından ortam değişkenini düzenleme meselesidir more
ve arama ve metin vurgulama gibi bazı özellikler eksik olabilir.
Hangi farklılıkların more
olduğu less
ve buradamost
sahip olmadığı (hiç kullanılmamış ) sorusuna iyi bir cevap var . Geriye gidin ve sayfanın öne kaydırmak yeteneği ya doğrultusunda her iki yönden veya (ayrıca, kullanan bağlamaları ve klavuz sayfalarını gezinirken) esastır. Kullanılabilir komutların özetini görmek için kullanırken tuşuna basın .most
Space↓↑vi
jkhless
İşte bu yüzden less
size erkek çağrı cihazı olarak kullanmanızı tavsiye ediyorum . less
bu cevapta kullanılacak bazı temel özelliklere sahip olacak.
Bir komut nasıl formatlanır?
Yardımcı Program Kuralları : Açık Grup Tabanı Spesifikasyonları Sayı 7 - IEEE Std 1003.1, 2013 Sürümü. Bir manpage anlamaya çalışmadan önce bu bağlantıyı ziyaret etmelisiniz. Bu çevrimiçi referans, standart uygulamaların argüman sözdizimini açıklar ve yardımcı programlar tarafından işlenen argümanları tanımlamak için POSIX.1-2017 boyunca kullanılan terminolojiyi tanıtır. Bu aynı zamanda dolaylı olarak, parametreler, argümanlar, argüman seçeneği gibi kelimelerin gerçek anlamı hakkında sizi bilgilendirecektir.
Herhangi bir sayfanın başı, hizmet sözleşmelerinin gösterimini anladıktan sonra size daha az şifreli görünecektir:
utility_name[-a][-b][-c option_argument]
[-d|-e][-f[option_argument]][operand...]
Ne yapmak istediğinizi aklınızda bulundurun.
xargs
Hakkınızdaki araştırmanızı yaparken bir amaç için yaptınız, değil mi? Standart çıktı okumak ve o çıktıya dayalı komut çalıştırmak için özel bir gereksiniminiz vardı.
Ama hangi komutu istediğimi bilmediğimde?
man -k
Veya kullanın apropos
(eşdeğerdir). Bir dosyayı bulmak için nasıl bilmiyorsanız: man -k file | grep search
. Açıklamaları okuyun ve ihtiyaçlarınızı daha iyi karşılayacak birini bulun. Örnek:
apropos -r '^report'
bashbug (1) - report a bug in bash
df (1) - report file system disk space usage
e2freefrag (8) - report free space fragmentation information
filefrag (8) - report on file fragmentation
iwgetid (8) - Report ESSID, NWID or AP/Cell Address of wireless network
kbd_mode (1) - report or set the keyboard mode
lastlog (8) - reports the most recent login of all users or of a given user
pmap (1) - report memory map of a process
ps (1) - report a snapshot of the current processes.
pwdx (1) - report current working directory of a process
uniq (1) - report or omit repeated lines
vmstat (8) - Report virtual memory statistics
Apropos, varsayılan olarak düzenli ifadelerle çalışır ( man apropos
açıklamayı okuyun ve ne yaptığını öğrenin -r
) ve bu örnekte açıklamanın "rapor" ile başladığı her bir manpage arıyorum.
Standart giriş / çıkış işlemlerini okuma ve xargs
olası bir seçenek olarak ulaşma ile ilgili bilgileri aramak için :
man -k command| grep input
xargs (1) - build and execute command lines from standard input
Her zaman DESCRIPTION
başlamadan önce okuyun
Biraz zaman ayırın ve açıklamayı okuyun. Sadece xargs
komutun açıklamasını okuyarak şunu öğreneceğiz:
xargs
STDIN'den okur ve gerekli komutu yerine getirir. Bu aynı zamanda standart girdilerin nasıl çalıştığı ve bunun borulardan zincir komutlarına nasıl geçirileceği hakkında biraz bilgi sahibi olmanız gerektiği anlamına gelir.
- Varsayılan davranış gibi davranmaktır
/bin/echo
. Bu size küçük bir ipucu verir xargs
, birden fazla zincir gerekiyorsa, yazdırmak için yankı kullanmanıza gerek kalmaz.
- Ayrıca unix dosya adlarının boş ve yeni satırlar içerebileceğini, bunun bir problem olabileceğini ve argümanın
-0
boş karakter ayraçları kullanarak nesnelerin patlamasını önlemenin bir yolu olduğunu da öğrendik . Açıklama, girdi olarak kullanılan komutun da bu özelliği find
desteklemesi gerektiği ve GNU'nun bunu desteklediği konusunda sizi uyarır . Harika. Birlikte çok buluyoruz xargs
.
xargs
255 çıkış durumuna ulaşılırsa duracaktır.
Bazı açıklamalar çok kısadır ve bunun nedeni genellikle yazılımın çok basit bir şekilde çalışmasıdır. Manpage'in bu bölümünü atlamayı bile düşünme ;)
Dikkat edilecek diğer şeyler ...
Dosyaları kullanarak arama yapabileceğinizi biliyorsunuz find
. Bir sürü seçenek var ve eğer sadece bakarsanız, SYNOPSIS
onlar tarafından boğulacaksınız. Bu sadece buzdağının görünen kısmı. Dışında NAME
, SYNOPSIS
ve DESCRIPTION
, aşağıdaki bölümlere sahip olacaksınız:
AUTHORS
: emrin oluşturulmasında yaratan veya yardımda bulunan insanlar.
BUGS
: bilinen tüm hataları listeler. Sadece uygulama kısıtlamaları olabilir.
ENVIRONMENT
: Kabuğunuzun komuttan etkilenebileceği yönler veya kullanılacak değişkenler.
EXAMPLES
veya NOTES
: Açıklayıcı.
REPORTING BUGS
: Bu araçta ya da belgelerinde hata bulursanız kiminle iletişim kurmanız gerekecek.
COPYRIGHT
: Yazılımı oluşturan ve yazılımdan feragat eden kişi. Tüm yazılım lisansı ile ilgili.
SEE ALSO
: Bu komutla ilgili olan ve diğer bölümlerin hiçbirine uymayan diğer komutlar, araçlar veya çalışma yönleri.
Muhtemelen örnekler / notlar bölümünde bir aracın istediğiniz yönleri hakkında ilginç bilgiler bulacaksınız.
Örnek
Aşağıdaki adımlarda find
bir örnek olarak ele alacağım , çünkü kavramları xargs
açıklamaktan “basit” . Sadece bu komut hakkında hiçbir şey (veya çok az) bilmediğimizi iddia edelim .
Belirli bir sorun var: .jpg
Uzantılı ve her dosya için 500KiB (KiB = 1024 bayt, genellikle kibibyte denir) veya daha fazla bir ftp sunucusu klasörü içinde arama yapmak zorundayım.
İlk olarak, kılavuzu açmak: man find
. SYNOPSIS
İncedir. Kılavuzun içindeki şeyleri arayalım: /İstediğiniz sözcüğü yazın ( size
). -size
Belirli boyutları sayan birçok girişi dizine ekler. Takılmak. Belirli bir boyutta "daha" veya "daha az" ile nasıl arama yapılacağını bilmiyorum ve adam bana bunu göstermiyor.
Bir deneyelim ve bir sonraki girişi tıklayarak bulalım n. TAMAM. İlginç bir şey buldum: find
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)
. Belki bu örnek bize -size +100M
onunla birlikte 100 MB veya daha fazla dosya bulacağını gösteriyor . Nasıl onaylayabilirim? Manpage'in başına gidip başka kelimeler arayarak.
Yine, kelimeyi deneyelim greater
. Basılması gbizi mankenin başına getirecektir. /greater
, ve ilk giriş:
Numeric arguments can be specified as
+n for **greater** than n,
-n for less than n,
n for exactly n.
Kulağa harika geliyor. Kılavuzun bu bloğunda şüpheli olduğumuzu doğruladık gibi görünüyor. Ancak, bu yalnızca dosya boyutları için geçerli değildir. n
Bu sayfada bulunabilecek olanlara uygulanacaktır (cümlenin söylediği gibi: "Sayısal argümanlar" olarak belirtilebilir).
İyi. Bize adına göre filtreleme için bir yol bulmak edelim: g /insensitive
. Neden? Duyarsız? O ne lan? Biz, "bu diğer işletim" insanlar olarak uzantılı bir dosya adı verebilir varsayımsal ftp sunucusu, sahip .jpg
, .JPG
, .JpG
. Bu bizi yönlendirecek:
-ilname pattern
Like -lname, but the match is case insensitive. If the -L
option or the -follow option is in effect, this test returns
false unless the symbolic link is broken.
Ancak, aradıktan sonra lname
bunun sadece sembolik linkleri arayacağını göreceksiniz. Gerçek dosyalar istiyoruz. Bir sonraki giriş:
-iname pattern
Like -name, but the match is case insensitive. For example, the
patterns `fo*' and `F??' match the file names `Foo', `FOO',
`foo', `fOo', etc. In these patterns, unlike filename expan‐
sion by the shell, an initial '.' can be matched by `*'. That
is, find -name *bar will match the file `.foobar'. Please note
that you should quote patterns as a matter of course, otherwise
the shell will expand any wildcard characters in them.
Harika. Bu argümanın büyük / küçük harf duyarsız versiyonunu -name
görmek için okumaya bile ihtiyacım yok -iname
. Komutu birleştirelim:
Komut: find /ftp/dir/ -size +500k -iname "*.jpg"
Burada örtük olan: Jokerin ?
"tek bir pozisyondaki herhangi bir karakteri" ve *
"sıfır veya daha fazla herhangi bir karakteri" temsil ettiği bilgisi. -name
Parametresi bu bilginin bir özetini verecektir.
Tüm komutlar için geçerli ipuçları
Bazı seçenekler, anımsatıcılar ve "sözdizimi tarzı", tüm komutlar arasında dolaşarak man sayfasını hiç açmak zorunda kalmadan, biraz zaman kazanmanızı sağlar. Bunlar pratik tarafından öğrenilir ve en yaygın olanları şunlardır:
- Genellikle,
-v
ayrıntılı anlamına gelir. -vvv
bazı yazılımlarda "çok çok ayrıntılı" bir varyasyondur.
- POSIX standardını takiben, genellikle bir tire argümanı istiflenebilir. Örnek:
tar -xzvf
, cp -Rv
.
- Genellikle
-R
ve / veya -r
özyinelemeli anlamına gelir.
- Neredeyse tüm komutlar seçenekle ilgili kısa bir yardım alır
--help
.
--version
Yazılımın sürümünü gösterir.
-p
, kopyalamak veya taşımak yardımcı programları "izinleri korumak" anlamına gelir.
-y
EVET veya çoğu durumda "onay almadan devam et" anlamına gelir.
Yukarıdakilerin de her zaman doğru olmadığını unutmayın. Örneğin, -r
anahtar, farklı yazılımlar için çok farklı anlamlara gelebilir . Bir komutun ne zaman tehlikeli olabileceğini kontrol etmek ve emin olmak her zaman iyi bir fikirdir, ancak bunlar genel varsayılanlardır.
Varsayılan komut değerleri.
Bu cevabın çağrı cihazı yığın olarak biz gördük less -is
ait çağrı cihazı olduğunu man
. Komutların varsayılan davranışı her zaman man sayfalarındaki ayrı bir bölümde veya en üstte bulunan bölümde gösterilmez.
Varsayılanları bulmak için seçenekleri okumak zorunda kalacaksınız veya şanslıysanız, yazmak /pager
sizi bu bilgilere yönlendirecektir. Bu aynı zamanda çağrı cihazı kavramını bilmenizi gerektirir (manpage'i kaydıran yazılım) ve bu sadece çok sayıda man sayfası okuduktan sonra edineceğiniz bir şeydir.
Bu neden önemli? Örneğin man(1)
, Linux ( less -is
çağrı cihazı) veya FreeBSD'de okurken kaydırma ve renk davranışında farklılıklar bulursanız, algınızı açacaktır man(1)
.
Peki ya SYNOPSIS
sözdizimi?
Komutu yürütmek için gereken tüm bilgileri aldıktan sonra, işinizi yapmak için seçenekleri, seçenek argümanlarını ve işlenenleri satır içi olarak birleştirebilirsiniz. Kavramlara genel bakış:
- Seçenekler, komut davranışını belirleyen anahtarlardır. " Bunu yap " " bunu yapma " ya da " böyle davran ". Genellikle anahtarları denir.
- Seçenek argümanları çoğu durumda
-t
, bir dosya sisteminin ( -t iso9660
, -t ext2
) tipini belirten mount gibi bir seçenek ikili (açık / kapalı) olmadığında kullanılır . " Bunu kapalı gözlerle yap " ya da " hayvanları besle, sadece aslanları besle ". Ayrıca argümanlar da denir.
- İşlenenler, bu komutun yerine getirilmesini istediğiniz şeylerdir. Eğer kullanırsanız
cat file.txt
, işlenen geçerli dizinde içinde bir dosya olduğunu ve İt's içerikleri gösterilecektir STDOUT
. ls
Bir işlenenin isteğe bağlı olduğu bir komuttur. İşlenenden sonraki üç nokta cat
, aynı anda birden fazla işlenen (dosya) üzerinde etkili olabileceğinizi söyler . Bazı komutların hangi tür işleneni kullanacağını belirlediğini fark edebilirsiniz. Örnek:cat [OPTION] [FILE]...
İlgili özet bilgileri:
Bu yöntem ne zaman işe yaramaz?
- Örneği olmayan man sayfaları
- Seçeneklerin kısa bir açıklaması olan manpages
- Eğer gibi genel anahtar kelimeler kullandığınızda
and
, to
, for
man sayfalarını içeride
- Yüklenmemiş man sayfaları. Belli gözüküyor ama eğer
lftp
(ve onun manpages) kurulu değilse, çalıştırarak daha karmaşık bir ftp istemcisi olarak bunun uygun bir seçenek olduğunu bilemezsiniz.man -k ftp
Bazı durumlarda, örnekler oldukça basit olacak ve Google’ı test etmek için ya da en kötü durum senaryosunda bazı komutları yerine getirmeniz gerekecek.
Diğer: Programlama dilleri ve modülleri:
Eğer programlama ya da sadece komut dosyaları oluşturuyorsanız, bazı diller gibi, o kendi Elyordamsayfalarının sistemlerine sahip olduğunu akılda tutmak perl
( perldocs
,) piton ( pydocs
modülü hakkında yöntemler / funcions, değişkenler, davranış ve diğer önemli bilgiler hakkında özel bilgiler olan, vb), kullanmaya ve öğrenmeye çalışıyorsun. perl Mail::IMAPClient
Modül kullanılarak okunmamış IMAP e-postalarını indirmek için bir komut dosyası oluştururken bu benim için yararlı oldu .
Bu belirli man sayfalarını man -k
çevrimiçi kullanarak veya arayarak çözmeniz gerekecektir . Örnekler:
[root@host ~]# man -k doc | grep perl
perldoc (1) - Look up Perl documentation in Pod format
[root@host ~]# perldoc Mail::IMAPClient
IMAPCLIENT(1) User Contributed Perl Documentation IMAPCLIENT(1)
NAME
Mail::IMAPClient - An IMAP Client API
SYNOPSIS
use Mail::IMAPClient;
my $imap = Mail::IMAPClient->new(
Server => ’localhost’,
User => ’username’,
Password => ’password’,
Ssl => 1,
Uid => 1,
);
... tonlarca başka şey var, normal bir sayfa gibi bölümlerle ...
Python ile:
[root@host ~]# pydoc sys
Help on built-in module sys:
NAME
sys
FILE
(built-in)
MODULE DOCS
http://www.python.org/doc/current/lib/module-sys.html
DESCRIPTION
This module provides access to some objects used or maintained by the
interpreter and to functions that interact strongly with the interpreter.
...again, another full-featured manpage with interesting info...
Veya, help()
bazı nesnelerin daha fazla ayrıntısını okumak istiyorsanız python kabuğunun içindeki işlev:
nwildner@host:~$ python3.6
Python 3.6.7 (default, Oct 21 2018, 08:08:16)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> help(round)
Help on built-in function round in module builtins:
round(...)
round(number[, ndigits]) -> number
Round a number to a given precision in decimal digits (default 0 digits).
This returns an int when called with one argument, otherwise the
same type as the number. ndigits may be negative.
Bonus:wtf
Komut kısaltmalar size yardımcı olabilir ve onu olarak çalışıyor whatis
Üstünde kısaltma veritabanı bulunursa, ama ne arıyorsunuz adam veritabanının parçası ise. Debian'da bu komut bsdgames
paketin bir parçasıdır . Örnekler:
nwildner@host:~$ wtf rtfm
RTFM: read the fine/fucking manual
nwildner@host:~$ wtf afaik
AFAIK: as far as I know
nwildner@host:~$ wtf afak
Gee... I don't know what afak means...
nwildner@host:~$ wtf tcp
tcp: tcp (7) - TCP protocol.
nwildner@host:~$ wtf systemd
systemd: systemd (1) - systemd system and service manager