İçeriğe geç
academia.sh

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 -k açıklama satırlarında arama yapar; adı bilinmeyen komutu bulmanın yoludur.
  • Yerleşik komutların ayrı kılavuz sayfası yoktur; help ile belgelenirler ve doğru kaynak type -t ile 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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat