Ders 04 / 20
Yardım Kaynakları
Kılavuz sayfalarının bölüm numaraları, sayfa yapısı ve kullanım özeti gösterimi; yerleşik komutlar için yardım ve komut türünü belirleme.
İçindekiler
Önceki derste mkdir -p seçeneği kullanıldı ve ne yaptığı metinde açıklandı. Bu
sürdürülebilir bir öğrenme biçimi değildir: yüzlerce komutun onlarca seçeneği ezberlenmez.
Sistem bunu gerektirmez. Her komutun belgesi, komutun kendisiyle birlikte kurulur ve belgeler tutarlı bir yapı izler. Bu ders o yapıyı tanıtır; kursun geri kalanında seçeneklerin bir kısmı açıklanmak yerine okura bırakılacaktır.
Kılavuz Sayfaları
Kılavuz sayfası (manual page), bir komutun, dosya biçiminin veya sistem çağrısının
başvuru belgesidir. man komutuyla görüntülenir:
$ man 1 ls | sed -n '1,13p'
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is speci-
fied.
Örnekte sayfanın yalnızca ilk satırları alınmıştır; doğrudan man ls yazıldığında sayfa
bir sayfalayıcı programda açılır ve ok tuşlarıyla gezilir, q ile çıkılır. Sayfalayıcı
içinde / ile arama yapılır.
Kılavuz sayfaları standart alt başlıklar taşır. Sırasıyla en çok kullanılanlar:
- NAME — komutun adı ve tek satırlık tanımı
- SYNOPSIS — kullanım özeti
- DESCRIPTION — ayrıntılı davranış ve seçenek listesi
- EXIT STATUS — hangi durumda hangi çıkış kodunun döneceği
- FILES — komutun okuduğu veya yazdığı dosyalar
- SEE ALSO — ilgili sayfalar
Bir komutun davranışını hızlı doğrulamak için sırasıyla NAME ve SYNOPSIS, ayrıntı için DESCRIPTION okunur. Bir hatanın nedenini araştırırken EXIT STATUS ve FILES bölümleri çoğu zaman doğrudan yanıt verir.
Kullanım Özetini Okumak
SYNOPSIS satırı bir gösterim düzeni kullanır ve bu düzen tüm kılavuz sayfalarında aynıdır:
| Gösterim | Anlamı |
|---|---|
düz metin |
Aynen yazılır |
[...] |
Köşeli parantez içindekiler isteğe bağlıdır |
... |
Kendinden önceki öge yinelenebilir |
a|b |
Seçeneklerden biri |
BÜYÜK HARF |
Yerine değer konacak yer tutucu |
Buna göre ls [OPTION]... [FILE]... satırı şunu söyler: ls sıfır veya daha çok seçenek
ve sıfır veya daha çok dosya adı alır; ikisi de zorunlu değildir. Argümansız ls
çalışabilir; bu, DESCRIPTION’daki “varsayılan olarak bulunulan dizin” ifadesiyle
tutarlıdır.
Karşılaştırma için başka bir komutun özeti:
$ mkdir --help | head -9
Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.
Mandatory arguments to long options are mandatory for short options too.
-m, --mode=MODE set file mode (as in chmod), not a=rwx - umask
-p, --parents no error if existing, make parent directories as needed,
with their file modes unaffected by any -m option.
-v, --verbose print a message for each created directory
-Z set SELinux security context of each created directory
DIRECTORY... köşeli parantez içinde değildir: en az bir dizin adı zorunludur. Önceki
derste kullanılan -p seçeneğinin iki ayrı işlevi de burada yazılıdır — eksik üst
dizinleri oluşturmak ve var olan dizinde hata vermemek.
--help seçeneği kılavuz sayfasının yerini tutmaz; çoğu komutta yalnızca seçenek listesi
verir. Buna karşılık her zaman hızlıdır ve kılavuz sayfaları kurulu olmayan sistemlerde
tek kaynaktır.
Bölüm Numaraları
Kılavuz tek bir küme değil, numaralı bölümlere ayrılmıştır. Aynı ad birden çok bölümde bulunabilir ve farklı şeyleri anlatır.
| Bölüm | İçerik |
|---|---|
| 1 | Kullanıcı komutları |
| 2 | Sistem çağrıları |
| 3 | Kütüphane işlevleri |
| 4 | Özel dosyalar ve aygıtlar |
| 5 | Dosya biçimleri ve yapılandırma dosyaları |
| 6 | Oyunlar |
| 7 | Çeşitli: kurallar, gösterimler, kavramlar |
| 8 | Sistem yönetimi komutları |
Bölüm ayrımının ne işe yaradığı tek bir adla gösterilebilir:
$ whatis passwd passwd (1) - change user password passwd (1ssl) - OpenSSL application commands passwd (5) - the password file
passwd hem bir komuttur hem de bir dosya biçimidir. Listedeki girdiler sistemde kurulu
paketlere bağlıdır; kurulu olmayan bir yazılımın sayfası görünmez. Ortadaki satırdaki
1ssl gibi son ekli bölüm adları, bir yazılımın kendi sayfalarını ayrı bir alt bölümde
tutmasından gelir.
man passwd yalnızca ilk bulunanı — bölüm 1’i — gösterir. Dosya biçimini görmek için
bölüm açıkça verilir:
$ man 5 passwd | sed -n '1,10p'
PASSWD(5) File Formats and Configuration PASSWD(5)
NAME
passwd - the password file
DESCRIPTION
/etc/passwd contains one line for each user account, with seven fields
delimited by colons (":"). These fields are:
o login name
Sayfa başlığındaki PASSWD(5) gösterimi, hangi bölümde olunduğunu her satırda
yineler. Belgelerde printf(3) veya open(2) gibi yazımlara rastlanır; parantez içindeki
sayı bölüm numarasıdır ve hangi printften söz edildiğini belirler — kabuk komutu mu,
kütüphane işlevi mi.
Kullanıcı hesabı dosyasının bu bölümdeki tanımı, kullanıcılar ve izinler konusunda doğrudan kullanılacaktır.
Ad Bilinmediğinde Arama
Kılavuz, komutun adı biliniyorsa işe yarar. Ad bilinmiyorsa açıklamalarda arama yapılır:
$ man -k 'list directory' | head -3 dir (1) - list directory contents ls (1) - list directory contents vdir (1) - list directory contents
man -k (eşdeğeri apropos) tüm kılavuz sayfalarının NAME satırlarında arama yapar.
man -f (eşdeğeri whatis) ise tam ad eşleşmesi arar. İkisi de önceden hazırlanmış bir
dizine bakar; dizin oluşturulmamışsa sonuç boş döner.
Arama yalnızca tek satırlık açıklamaları tarar, sayfaların tamamını değil. Bu nedenle sonuç kümesi dar olur ve arama terimi genel tutulmalıdır.
Yerleşik Komutların Belgesi
Önceki derste yerleşik komutların ayrı bir program olmadığı görülmüştü. Bunun belgeleme
açısından bir sonucu vardır: yerleşik komutların ayrı kılavuz sayfası yoktur, çünkü ayrı
bir program yoktur. Belgeleri kabuğun kendi sayfasında ve kabuğun help yerleşiğindedir.
$ help type | sed -n '1,6p'
type: type [-afptP] name [name ...]
Display information about command type.
For each NAME, indicate how it would be interpreted if used as a
command name.
Doğru kaynağı seçmek için önce adın türü belirlenir:
$ type -t ls cd if file builtin keyword
-t seçeneği yalnızca türü yazdırır. Üç yanıt üç ayrı yardım kaynağına karşılık gelir:
file için man, builtin için help, keyword için kabuğun kılavuz sayfası. if
bir komut değil, kabuğun dilbilgisine ait bir anahtar sözcüktür; denetim yapıları
Kabuk Programlama kursunun konusudur.
Belgelerin Sınırı
Kılavuz sayfaları başvuru belgesidir, öğretici değildir. Bir komutun tüm seçeneklerini eksiksiz sayarlar ama hangi seçeneğin ne zaman kullanılacağını çoğunlukla söylemezler. Ayrıca belgeler sistemdeki sürüme aittir: bir seçenek kılavuzda yoksa, o sistemde gerçekten yoktur — başka bir sistemde bulunuyor olması durumu değiştirmez.
Bu iki sınır, kılavuzun ne için kullanılacağını belirler. “Bu komut ne yapar” sorusuna kılavuz yanıt verir; “bu işi hangi komutla yaparım” sorusuna genellikle vermez. İkinci soru bu kursun konusudur.
Özet
- Kılavuz sayfaları NAME, SYNOPSIS, DESCRIPTION, EXIT STATUS, FILES ve SEE ALSO gibi standart alt başlıklar taşır.
- Kullanım özetinde köşeli parantez isteğe bağlılığı, üç nokta yinelenebilirliği, büyük harfli adlar yer tutucuyu gösterir.
- Kılavuz numaralı bölümlere ayrılmıştır; aynı ad farklı bölümlerde farklı şeyleri
anlatır ve
ad(bölüm)gösterimi hangisinin kastedildiğini belirtir. man -kaçıklama satırlarında arama yapar; adı bilinmeyen komutu bulmanın yoludur.- Yerleşik komutların ayrı kılavuz sayfası yoktur;
helpile belgelenirler ve doğru kaynaktype -tile belirlenir.
Sonraki Adım
type komutu bir adın karşılığını bulurken belirli bir arama yapar ve önceki derste bir
komut “bulunamadı” hatası verirken de aynı arama başarısız olmuştu. Sonraki ders bu
aramanın kuralını açar: kabuk çalıştırılabilir dosyayı hangi dizinlerde, hangi sırayla
arar, bu sıra nasıl değiştirilir ve neden bulunulan dizin bu listeye eklenmez.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.