Bash ile ilgili temel bilgiler
Bash'i anlamak için Bash söz dizimini anlamanız gerekir. Söz dizimini bildikten sonra, çalıştırdığınız her Bash komutuna uygulayabilirsiniz.
Bash komutunun tam söz dizimi şu şekildedir:
command [options] [arguments]
Bash, karşılaştığı ilk dizeyi komut olarak kabul eder. Aşağıdaki komutta geçerli çalışma dizininin içeriğini göstermek için Bash'in ls
("listele") komutu kullanılmıştır:
ls
Bash komutlarında genellikle bağımsız değişkenler de kullanılır. Örneğin, başka bir dizinin içeriğini listelemek için ls
komutuna bir yol adı ekleyebilirsiniz:
ls /etc
Çoğu Bash komutu, çalışma biçimini değiştirme seçeneklerine sahiptir. Bayraklar olarak da adlandırılan seçenekler, komutlara daha belirli yönergeler verir. Örneğin, adları bir noktayla başlayan dosyalar ve dizinler kullanıcıdan gizlenir ve ls
komutuyla görüntülenmez. Ancak, bir ls
komutunda -a
("tümü") bayrağını dahil edebilir ve hedef dizindeki her şeyi görebilirsiniz:
ls -a /etc
Hatta bayrakları birleştirerek komutu kısaltabilirsiniz. Örneğin Linux'un /etc dizinindeki tüm dosyaları ve dizinleri göstermek için ls -a -l /etc
şeklinde uzun bir komut girmek yerine şunu girebilirsiniz:
ls -al /etc
Bash'te kısa komutlar kullanılır. Tek bir komutla çok sayıda iş yapabilirsiniz (bu genellikle Bash tutkunlarının en çok övündükleri noktalardan biridir).
Yardım alma
Komutlarla birlikte kullanılabilecek veya kullanılması gereken seçenekler ve bağımsız değişkenler farklı olabilir. Neyse ki Bash belgeleri işletim sisteminde yerleşik olarak bulunur. Yardım bilgileri bir komut kadar yakındır. Bir komutun seçenekleri hakkında bilgi edinmek için man
("manuel") komutunu kullanabilirsiniz. Örneğin mkdir
("dizin oluştur") komutunun tüm seçeneklerini görmek için şunu yapın:
man mkdir
man
komutu, Bash'i öğrenme sürecinde en iyi arkadaşınız olacaktır. man
, herhangi bir komutun nasıl çalıştığını anlamak için ihtiyacınız olan bilgileri nasıl bulacağınızdur.
Çoğu Bash ve Linux komutu --help
seçeneğini destekler. Bu, komutun söz diziminin ve seçeneklerinin açıklamasını gösterir. Denemek için mkdir --help
yazın. Çıkış şuna benzer olacaktır:
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
-v, --verbose print a message for each created directory
-Z set SELinux security context of each created directory
to the default type
--context[=CTX] like -Z, or if CTX is specified then set the SELinux
or SMACK security context to CTX
--help display this help and exit
--version output version information and exit
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Report mkdir translation bugs to <http://translationproject.org/team/>
Full documentation at: <http://www.gnu.org/software/coreutils/mkdir>
or available locally via: info '(coreutils) mkdir invocation'
Bu komutla ulaşacağınız yardım bilgileri genellikle man
komutuna kıyasla daha kısa olacaktır.
Joker karakter kullanma
Joker karakterler Bash komutlarında bir veya daha fazla karakteri temsil eden sembollerdir. En sık kullanılan joker karakter yıldız işaretidir. Sıfır karakteri veya bir dizi karakteri temsil eder. Geçerli dizininizde yüzlerce görüntü dosyası olduğunu, ancak yalnızca PNG dosyalarını görmek istediğinizi varsayalım; dosya adları .png ile bitenler. Şu komutu kullanarak yalnızca istediğiniz dosyaları listeleyebilirsiniz:
ls *.png
Dekont
Linux, diğer işletim sistemleri gibi bir dosya adı uzantısı kavramına sahip değildir. Bu durum, PNG dosyalarının .png uzantısına sahip olmayacağı anlamına gelmez. Yalnızca Linux'un dosya adlarının .png ile bitmesi gerçeğine özel bir önemi olmadığı anlamına gelir.
Şimdi geçerli dizinde JPEG dosyaların da bulunduğunu düşünelim. Bazıları .jpg ile, bazıları ise .jpeg ile biter. Tüm JPEG dosyalarını listelemenin bir yolu aşağıdadır:
ls *.jpg *.jpeg
Bir diğer örnek de şudur:
ls *.jp*g
*
joker karakteri sıfır veya daha fazla karakterle eşleşir ancak ?
joker karakteri tek bir karakteri temsil eder. Geçerli dizinde 0001.jpg, 0002.jpg diye gidip 0009.jpg ile biten bir seri varsa aşağıdaki komut bunların hepsini listeler:
ls 000?.jpg
Çıkışı filtrelemek için joker karakter kullanmanın başka bir yöntemi de karakter grubunu temsil eden köşeli ayraçlar kullanmaktır. Aşağıdaki komut, geçerli dizinde adında nokta ve hemen sonrasında küçük J veya P harfi bulunan tüm dosyaları listeler. Bu durumda .jpg, .jpeg ve .png dosyalarını listeler ancak .gif dosyalarını listelemez:
ls *.[jp]*
Linux'da dosya adları ve bunları kullanan komutlar büyük/küçük harfe duyarlıdır. Bu nedenle, geçerli dizinde adları nokta içeren ve ardından büyük veya küçük J veya P harfi gelen tüm dosyaları listelemek için şunu girebilirsiniz:
ls *.[jpJP]*
Köşeli ayraç içindeki ifadeler karakter aralığını temsil edebilir. Örneğin aşağıdaki komut, geçerli dizinde bulunan ve adı küçük harfle başlayan tüm dosyaları listeler:
ls [a-z]*
Bu komut da ondan farklı olarak geçerli dizinde bulunan ve adı büyük harfle başlayan tüm dosyaları listeler:
ls [A-Z]*
Bu komut ise geçerli dizinde bulunan ve adı küçük veya büyük harfle başlayan tüm dosyaları listeler:
ls [a-zA-Z]*
Bu bilgileri dikkate alarak aşağıdaki komutların sonuçlarını tahmin edebilir misiniz?
ls [0-9]*
ls *[0-9]*
ls *[0-9]
Joker karakterlerden birini normal bir karakter olarak kullanmanız gerekiyorsa, bunu değişmez değer yapmanız veya ters eğik çizgi ile "kaçış" haline getirmeniz gerekir. Bu nedenle, herhangi bir nedenle bir dosya adının parçası olarak yıldız işaretine sahipseniz (asla kasıtlı olarak yapmanız gereken bir şey) aşağıdaki gibi bir komut kullanarak bunu arayabilirsiniz:
$ ls *\**