man Sayfalarında Yolumuzu Bulma
Not
Okumadıysanız POSIX, SUS ve LSB ve Linux Kernel Arayüzü sayfalarına önce bakmanızı öneririm.
Linux projesi kapsamında yürütülen man-pages projesinin amacı programcılara sunulan C API’ını dokümante etmektir [1]:
The Linux man-pages project documents the Linux kernel and C library interfaces that are employed by user-space programs. With respect to the C library, the primary focus is the GNU C library (glibc), although, where known, documentation of variations in other C libraries available for Linux is also included.
Linux sistem programlama yapacaksak man sayfaları hep önümüzde durmalı. man-pages ayrı bir proje ve bu proje 2004 yılından beri The Linux Programming Interface kitabının yazarı Michael Kerrisk tarafından yürütülmektedir. man sayfası kavramı Linux’a özgü değil, Unix zamanından beri hayatımızda [2]. man, manual kelimesinin kısaltılması, yani kullanım kılavuzu olarak düşünebiliriz. Bu sayfalar hem programcılara hem de kullanıcılara doküman sağlıyorlar. Hadi gelin bakalım!
Yerel man sayfaları
Ubuntu gibi birçok Linux dağıtımı man sayfaları yüklü olarak gelmektedir. Eğer
BASH gibi bir shell’i açıp, man yazdığınız zaman bir hata almıyor ve önünüze
çeşitli seçenekler dokülüyorsa sizde man programı ve muhtemelen ilgili
dokümanlar yüklü demektir. Eğer hata alıyorsanız kullandığınız dağıtım ile
ilgili internette bir arama yapın. man programı ile man-pages içerisinde
kolayca gezinip, arama yapabileceğiz.
man ls yazdığınız zaman ls komutunun dokümantasyonunu görüyorsunuz örneğin.
Doküman açıldıktan sonra h tuşuna basarak man programının içerisinde yani
dokümanların içerisinde gezinme ile ilgili yardım alabilirsiniz. / ile de
doküman içerisinde arama yapabilirsiniz. man man yazarak da man programı
hakkında bilgi alabilirsiniz (manception ?).
Section(s)
Man sayfaları section denen bölümlere ayrılmıştır. Bir kelime birden fazla
section’da geçebilir. Eğer man programı, aynı kelimeyi birden fazla yerde
bulursa tek bir sonuç döner ve nereden sonuç döneceği ise (yani hangi sırada
arama yapacağı) /etc/manpath.config içerisinde belirtilmiştir (en azından
Ubuntu’da bu dosya belirtiliyor.)
Dikkat
man sayfasının ilk sonucu dönmesi yanıltıcı olabilir, diğer dokümanları
göremeyebilirsiniz, o yüzden okumaya devam edin…
Her section’nun bir numarası vardır. Ad ve açıklamalar şu şekildedir:
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions, e.g. /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g.
man(7), groff(7), man-pages(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
Not
Bunlar temel section isimleridir. 3perl gibi başka section isimleri olabilir ama
biz genelde section 1, 2, 3 dokümanları kullanacağız. 2 numaralı section kernele
yapabileceğimiz sistem çağrılarını anlatmaktadır.
Örneğin man 1 chmod bizlere chmod isimli kabuk komutunu anlatırken
man 2 chmod ise C API tarafından sunulan chmod() fonksiyonunu anlatmaktadır.
man 2 chmod:
CHMOD(2) Linux Programmer's Manual CHMOD(2)
NAME
chmod, fchmod, fchmodat - change permissions of a file
SYNOPSIS
#include <sys/stat.h>
int chmod(const char *pathname, mode_t mode);
int fchmod(int fd, mode_t mode);
...
CHMOD(2) içerisindeki 2, bize section numarasını gösteriyor.
man 1 chmod:
CHMOD(1) User Commands CHMOD(1)
NAME
chmod - change file mode bits
SYNOPSIS
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
DESCRIPTION
This manual page documents the GNU version of chmod. chmod changes the
file mode bits of each given file according to mode, which can be ei‐
Bir kelime ile ilgili tüm section’ları farklı biçimlerde bulabiliriz:
$ man -f chmod
chmod (2) - change permissions of a file
chmod (1) - change file mode bits
$ whatis chmod
chmod (2) - change permissions of a file
chmod (1) - change file mode bits
$ apropos chmod
chmod (1) - change file mode bits
chmod (2) - change permissions of a file
fchmod (2) - change permissions of a file
fchmodat (2) - change permissions of a file
man -f ile whatis ve man -k ile aprops aynı anlamdadır. man -a chmod
derseniz chmod ile ilgili tüm dokümanları arka arkaya okuyabilirsiniz.
GNU Info System
man sayfaları kadar yaygın olmasa da GNU Info System bir başka dokümantasyon
aracıdır. man’a göre sunduğu çeşitli avantajlar da vardır. [3] HTML’in
icadından önce, 1986 yılında ortaya çıkmasına rağmen buradaki dokümanlar
birbirleri ile linkler üzerinden bağlıdır. info ls yazarak neye benzediğini
görebilirsiniz. Özellikle make gibi GNU araçlarında info make yazmak daha
iyi bir dokümantasyon sunabilir.
x in dokümanında man x yeterli gelmiyorsa, info x ile bakmakta fayda var.
Daha iyisi bazen çıkıyor. GNU Info en kötü man sayfasını gösteriyor.
GUI Yardım Araçları
GNOME üzerindeyseniz yelp man:chmod.2 veya yelp info:cpio (GNU Info)
yazabilirsiniz. Plasma (KDE) üzerindeyseniz khelpcenter kullanabilirsiniz.
Şahsen GUI yardım araçlarını pek kullanmıyorum. Klasik man pages
kullanmayacaksam online olanlar daha çok hoşuma gidiyor.
Online
man sayfalarına online olarak da (hem de güzel formatlanmış şekilde) erişmek mümkün. Örneğin man7.org sayfası resmi online Linux man sayfasıdır. Kişisel olarak mankier.com, tldr, and the Arch Linux online man pages sitelerini de beğeniyorum. Kaynaklar kısmında daha geniş ve güncel bir liste tutmaya çalışıyorum.