Düzey: Orta
Tim McIntire
(tm@timmcintire.net),
Danışman, Serbest Yazar
26 Eylül 2006
Sistem yöneticileri, komut satırından UNIX® sistemindeki dosyalarla çalışmak için bazı programlar kullanabilirler. Bu eğitici yazıda, cd
, cp
ve tar
komutlarını kullanarak komut satırından UNIX dosya sisteminde dolaşmayı, dosyalarla ve dizinlerle çalışmayı öğreneceksiniz. cd
komutu dizinleri değiştirir, cp
komutu dosyaları ya da dizinleri çoğaltır ve tar
komutu, dosyaları hızla bir arşivde gruplar. Ayrıca, dosya izinleriyle çalışmayı ve basit giriş/çıkış gerçekleştirmeyi de öğreneceksiniz.
Başlamadan önce
Bu eğitici yazıdan neler öğrenebileceğinizi görün ve anlatılanlardan nasıl en iyi
şekilde yararlanabileceğinizi öğrenin.
Dört bölümden oluşan bu eğitici yazılar, UNIX®
temellerini, kullanıcı bakış açısıyla ele almaktadır. Bu ilk eğitici yazı, bir
süredir UNIX benzeri işletim sistemlerinden uzak kalmış kullanıcıların bilgilerini
tazelemeleri için iyi bir fırsat olacaktır. Windows başvuruları ve karşılaştırmaları
kullanıldığı için bu eğitici yazı, Windows® temelli yeni
UNIX kullanıcıları için de yararlıdır. Dizinin sonraki eğitici yazılarında, özel
uygulamaları (vi
gibi) ayrıntılarıyla ele alacak ve kabukla ilgili
incelikleri ve ipuçlarını tartışacağız.
Sistem yöneticileri, komut satırından bir UNIX sistemindeki dosyalarla
çalışmak için bazı programlar kullanabilirler. Burada gösterilenler dışında daha
birçok konu vardır, ancak burada anlatılanların tümü UNIX sisteminizin temel
parçalarıdır. Dosyaları ve dizinleri yeniden yerleştirmek ve yeniden adlandırmak
için mv
komutunu kullanabilirsiniz. cp
komutu, bir ya da
daha çok dosyayı ya da dizini çoğaltır. tar
adı verilen bir uygulama,
dosyaları tek bir arşivde hızla gruplayabilir. Bu eğitici yazıda, dosya sisteminin,
dosya izinleriyle çalışmanın ve basit giriş/çıkışın üzerinden geçerek, yeni UNIX
kullanıcıları için bir temel de oluşturulmaktadır.
Bu eğitici yazının amacı, yeni UNIX kullanıcılarının komut satırında rahatça
dolaşabilmelerini ve dosyalarla çalışabilmelerini sağlamaktır. Yazıda, dosyaları yöneten
genel komut satırı yardımcı programları üzerine odaklanılırken, günlük olarak
kullanmanız gereken komutların tam bir resmini vermek amacıyla dosya izinleri ve
giriş/çıkış da anlatılmaktadır.
Bu eğitici yazı için bilgisayarlar ve dosyalarla ilgili temel bir anlayışa
sahip olmanız gerekir, ancak UNIX benzeri bir işletim sisteminde deneyimli olmanız
beklenmemektedir. Dizinlerin (klasörlerin) ve dosyaların ne olduklarını anlamanız ve
UNIX benzeri işletim sistemindeki hesabınızda oturum açabilmeniz gerekir. DOS ya da
Microsoft® Windows komut satırında daha önce
çalıştıysanız, benzerlikleri fark edersiniz, ancak daha önce herhangi bir komut
satırıyla çalışmamış kullanıcılar da zorlanmayacaktır.
Bu eğitici yazıyı tamamlamak için gereksinim duyacağınız tek şey UNIX benzeri
bir işletim sistemiyle çalışan herhangi bir bilgisayarda bulunan bir kullanıcı
hesabına erişim olacaktır. Birçok UNIX benzeri işletim sistemleri arasında, IBM
AIX® işletim sistemini, Linux®,
Berkeley Software Distribution (BSD) ve Mac OS® X (komut
satırına erişim için Uçbirim kullanır) işletim sistemlerini sayabiliriz.
Başlangıç
Başlamadan önce küçük bir uyarıda bulunalım: UNIX benzeri birçok farklı dağıtım
vardır. Bunlar AIX gibi ticari dağıtımlardan, BSD ve Linux gibi ücretsiz dağıtımlara
kadar çeşitlilik gösterir. Bu eğitici yazı, neredeyse tüm dağıtımlarda bulunan
komutlar ve komut satırı seçenekleri üzerinde odaklanır; dağıtımlarınızda
farklılıklar bulursanız, elkitabı sayfalarınıza bakın (daha sonra anlatılacaktır).
Başlamak için seçtiğiniz UNIX benzeri işletim sisteminde oturum açın. Oturum
açtığınızda, otomatik olarak kullanıcı ana dizininizden başlamanız gerekir.
Örneklerde tuser
(Test Kullanıcısı) kullanıcı adı kullanılmıştır.
Belirli komutlarla çalışmadan önce man
komutunu öğrenmeniz önem
taşır. man
, elkitabı (manual) anlamına gelir; UNIX konusunda yeterli olmakla
övünen kullanıcılar için çok önemli bir araçtır. Bilgi almak istediğiniz bir
uygulamanın açıklamasını görmek için man uygulama-adı
yazın. Bu eğitici
yazının her sayfasında, yönergelerle birlikte elkitabı sayfalarına bakmanız için
öneriler verilir.
Aşağıdakini yazmayı deneyin (bu eğitici yazıdaki $
karakterinin
komut isteminize karşılık geldiğine dikkat edin; örneklerde, dolar işaretinden sonra
gördüklerinizi yazmanız gerekir):
$ man ls
Dizinler
Öğrenmeniz gereken ilk şey dosya sisteminizin üzerinden nasıl geçeceğiniz ve
dosya sistemini nasıl inceleyeceğinizdir. UNIX'te, dizinler, dosyaları hiyerarşik
bir yapıda düzenlemek üzere kullanılır. Dizinlere girmek için dizinleri tıklatmak ve
her bir dosyayı bir simge olarak görmek yerine, komut satırından bir UNIX dosya
sistemini görüntülemek ve üzerinden geçmek için bir dizi komut ve liste
kullanırsınız.
UNIX benzeri bir işletim sistemini ilk defa kullanıyorsanız, ancak önceden bir
DOS ya da Windows komut satırı kullandıysanız, ls
komutu kabaca
dir
komutuna eşdeğerdir. List Directory (Dizini Listele)
komutunun kısaltmasıdır. ls
, ayrıntılı listeler almak, gizli dosyaları
göstermek, alt dizinleri özyineli bir şekilde listelemek, vb. için çeşitli komut
satırı seçenekleriyle kullanılabilir. Aşağıdaki örnekleri girin:
$ ls
$ ls -l
$ ls -a
$ ls -R
Komut satırında yapacağınız bir sonraki işlemi düşünüyorsanız, nerede ve ne
yapmakta olduğunuzu görmenize yardımcı olması için hızlı bir şekilde ls
komutunu girebilirsiniz. Bu komutu, sisteminizdeki geçerli durumu güncelleyen grafik
kullanıcı arabirimindeki ekran yenileme gibi düşünebilirsiniz.
Dosya sisteminin üzerinden geçmek amacıyla dizinleri değiştirmek için
cd
komutunu kullanın. cd
ve gitmek istediğiniz dizinin
adını yazın. Dizinin önünde bir / karakteri yazarsanız, adını belirttiğiniz dizin
bir mutlak dizin yoludur: Dosya sisteminizin kökünden başlar. Önden /
karakteri kullanmazsanız, dizin bir göreceli dizin olur: Geçerli
çalışma dizininizden başlarsınız. Örneğin, ana dizindeyseniz (/home/tuser) ve
bir alt dizine geçmek istiyorsanız, cd
ve ardından gitmek istediğiniz
dizinin adını yazın. Örneğin, bir Documents dizininiz varsa, aşağıdakini
yazabilirsiniz:
$ cd Documents
/home/tuser/ dizininde başladığınız için bu komut sizi /home/tuser/Documents/
dizinine götürür.
Bunun tersine, bir konum belirlemek için bir mutlak yol adı kullanabilirsiniz.
Örneğin, /tmp dizinine gidebilir ve ana dizininize aşağıdaki şekilde dönebilirsiniz:
$ cd /tmp
$ cd /home/tuser
UNIX'te özel dizin adları, dosya sisteminin üzerinden geçmeyi kolaylaştırır. En
önemli üçü, geçerli dizine, geçerli dizinin üst dizinine ve kullanıcının ana dizinine
başvuruda bulunur. Geçerli dizin bir noktayla belirtilir. Örneğin, $ cd
.
yazarsanız, geçerli dizinde (/home/tuser/) kalırsınız. Bu karakter, geçerli
çalışma dizininde yürütülebilir komutları çalıştırdığınızda özellikle önem kazanır.
Varsayılan değer olarak birçok UNIX kabuğu, uygulamalar için uygulama dizinlerini
arar; ancak, geçerli çalışma dizinini aramaz. Bir dosya adının önünde ./
karakterlerini kullanarak geçerli çalışma dizininizdeki dosyalara ve uygulamalara
her zaman açıkça başvuruda bulunabilirsiniz. Ana dizinlere iki noktayla başvuruda
bulunulur. Geçerli çalışma dizininizin üst dizinine geçmek için aşağıdakileri yazın:
$ cd ..
Önceden /home/tuser dizinindeyseniz, şimdi /home içindesiniz. Üçüncü özel dizin
adını göstermek amacıyla ana dizininize dönmek için kısayolu kullanın (tilde
karakteri). Aşağıdaki komutu yazın:
$ cd ~
Geçerli dizininizi denetlemek için Print Working Directory (Çalışma
Dizinini Yazdır) komutunun kısaltması olan pwd
komutunu
kullanabilirsiniz. Bu komut size dosya sisteminin neresinde olduğunuzu bildirir ve
göreceli yol adlarını belirtirken kullanacaklarınızı belirlemenizde size yardımcı
olur. Bu komutu, dosya sisteminiz içinde geçiş yapmak için üç özel dizin adıyla,
mutlak yollarla ve göreceli yollarla kullanmayı deneyin. Her bir adımda, geçerli
konumunuzu denetlemek için pwd
komutunu kullanın.
Geçerli dizininizi denetleyin (önceki bölümde gösterilen adımları izlediyseniz,
ana dizininizde olmanız gerekir):
$ pwd
mkdir
ve rmdir
komutları sırasıyla dizin
oluşturmak ve taşımak için kullanılır. rmdir
, yalnızca dizin boş
olduğunda çalışır (dosyaları kaldırmaz).
Aşağıdaki komutları deneyin:
$ mkdir TUTORIAL
$ cd TUTORIAL
$ pwd
$ ls
Şimdi yeni oluşturduğunuz boş TUTORIAL dizininde bulunuyorsunuz.
Bu dizine ~
(tilde) karakterini kullanarak da gidebilirsiniz.
/home/tuser/TUTORIAL dizinine gitmek için şunları yazın:
$ cd ~/TUTORIAL
$ pwd
Dizinler arasında hareket etmeyi ve listeler almayı öğrendiğinize göre olağan
bir UNIX dağıtımında dizin düzenine bakmaya hazırsınız demektir. Bir UNIX dosya
sistemini birkaç şekilde düzenleyebilirsiniz. Bu eğitici yazı, çoğu UNIX benzeri
dağıtımlarda ortak olan birkaç kök düzeyindeki dizin üzerinde odaklanmaktadır. Kök
düzeyinde olan başka önemli dizinler de vardır, ancak çoğu durumda işlem yaparken bu
dizinleri kullanırsınız:
/home (ya da /users)
/etc
/bin
/sbin
/usr
/car
/tmp
/home, kullanıcı dizinlerinin bulunduğu yerdir. Örneğin, tuser
kullanıcısı /home/tuser dizininde bulunur.
/etc, başlatma komut dosyalarını ve ağ yapılandırma dosyalarını içeren sistem
genelindeki çoğu ayarın saklanması için kullanılan dizindir. Bu dizindeki dosyaların
çoğunu düzenlemek için kök erişim yetkisi gereklidir.
/bin ve /sbin, yürütülebilir sistem dosyalarını (bu eğitici yazıda öğrenmekte
olduğunuz komutlar gibi) saklamak için kullanılan dizinlerdir. /sbin,
shutdown
gibi sistem komutları için kullanılırken, /bin de kullanıcı
komutları için kullanılır.
Uygulamalar genellikle /usr dizinine kurulur. Genellikle temel dağıtımın
parçası olmayan uygulamalar /usr/local/ alt dizininde tutulur.
/var, sürekli güncellenen günlük dosyaları gibi dosyaların saklandığı dizindir.
Geçici dosyalar /tmp dizininde saklanır. Bu dizine sistemdeki tüm kullanıcılar
tarafından veri yazılabilir ve bazı sistemlerde, eski dosyalar belirli aralıklarla
kaldırılır.
Dosyalar
Komut satırından dosya sisteminde nasıl hareket edeceğinizi öğrendiğinize göre,
şimdi, dosyalarla çalışmaya başlayabilirsiniz. Bu bölümde, örnek bir dosyanın
oluşturulması, bir dosyanın kopyalanması, kaldırılması ve temel dosya izinlerinin
görüntülenmesi ve değiştirilmesi öğretilmektedir. UNIX gibi çok kullanıcılı bir
işletim sisteminde, sahiplik ve izin oluşturmayı anlamak büyük önem taşır.
Başlangıç için bu eğitici yazıda kullanabileceğiniz boş bir dosya oluşturun.
Boş bir dosya oluşturmak için touch
komutunu kullanabilirsiniz (bu
komut genellikle bir dosyaya dokunarak (touch), değiştirildiği tarihi ve erişildiği
tarihi güncellemek için kullanılır).
Kullanıcı ana dizinindeki TUTORIAL dizinine geri dönün ve aşağıdaki komutu
yazarak bir dosya oluşturun:
$ cd ~/TUTORIAL
$ touch example.txt
cp
komutu, dosyaları kopyalar. cp
komutunun ardından
kopyalamak istediğiniz dosyanın adını ve daha sonra, dosyayı kopyalamak istediğiniz
dizinin adını yazın (yeni bir dosya adı belirtmek gibi bir seçeneğiniz de vardır).
Örneğin, example.txt dosyasını /tmp/ dizinine kopyalamayı deneyin:
$ cp example.txt /tmp/
$ ls /tmp/
/tmp/ dizininde example.txt dosyasını görüyor olmalısınız. Şimdi, /tmp/
dizinindeki dosyayı geçerli dizininize kopyalayın, ancak bu defa yeni bir ad verin:
$ cp /tmp/example.txt ./example2.txt
$ ls
Bu yeni dosyayı geçerli dizininize yerleştirmek istediğinizi belirtmek üzere
nokta kullanıldığına dikkat edin. Bu durumda ./ karakterlerini kullanmak gerekli
değildir (çünkü, bir kopyalama işleminde varsayılan yol geçerli çalışma
dizininizdir), ancak yapmak istediğinizi açık bir biçimde ifade etmenize yardımcı
olur. Sonraki ls
komutu, geçerli çalışma dizininizde artık iki örnek
(example) dosyanız olduğunu gösterir.
move
komutu, mv
ile tamamlanır. Taşıma ve kopyalama
komutları için çoğu sözdizimi ve komut satırı seçenekleri aynıdır. Yeni dosyanızı
(example2.txt) geçerli dizininizin dışına, /tmp/ dizinine taşımak istiyorsanız,
aşağıdakileri yazın:
$ mv example2.txt /tmp/.
Ne yapmakta olduğunuzu açıkça göstermek için yine bir nokta işaretinin
kullanıldığına dikkat edin.
Sisteminize çeki düzen vermek için /tmp/ dizininde oluşturulan dosyaları
kaldırın. rm
komutu, dosyaları dosya sisteminizden siler. Bu komut,
dosyayı Geri Dönüşüm ya da Çöp Kutusu'na göndermeye benzemez; komut, dosya
işaretçisini sildiği için rm
komutunu dikkatli kullanın. Aşağıdakileri yazın:
$ rm /tmp/example.txt
$ rm /tmp/example2.txt
$ ls /tmp/
/tmp/ dizinindeki her iki örnek dosyasının da silinmiş olması gerekir.
Kullandığınız UNIX benzeri işletim sistemine bağlı olarak srm
ya
da can
gibi diğer silme komutlarını kullanabilirsiniz. Bu komutları
kullanıp kullanamadığınızı görmek için man srm
ve man can
yazmayı deneyin. srm
, rm
komutunun güvenli bir sürümü
olarak kullanılır; silinen dosyaların üzerine rasgele veriler yazarak bunların geri
yüklenmesini önler. can
, bazı yönlerden srm
komutunun
karşıtıdır; can
, dosyaları alır, ancak bunları, Windows Geri Dönüşüm
Kutusu'na benzer özel bir çöp dizinine taşır.
Sahiplik ve izinler
UNIX benzeri işletim sistemlerinde dosya sahipliği ve izinler önemli
kavramlardır. UNIX, en temelinden çok kullanıcılı bir sistem olarak oluşturulmuştur.
Windows da bugünkü sürümlerinde çok kullanıcılı bir sistem olarak çalışma becerisine
sahiptir, ancak Windows'un ilk kişisel bilgisayarlar ve DOS zamanlarından gelen tek
kullanıcılı bir geçmişi vardır. Bugün bile bazı Windows kullanıcıları, çok
kullanıcılı bir sistemde var olan birden çok hesap ve dosya izni konuları üzerine
fazla düşünmemektedirler. UNIX kullanıcıları için ise dosya sahipliği ve izinlerin
anlaşılması büyük önem taşır.
UNIX'te dosya sahipliği, ls -l
kullanılarak incelenebilir ve
chown
ve chgrp
komutlarıyla değiştirilebilir.
Aşağıdakileri yazarak sahipliklere bir göz atalım:
$ ls -l
-l
parametresinin belirtilmesi, dosya listesini uzun biçimde
görmek istediğinizi gösterir. Uzun biçim, izinler, sahiplik, değişiklik tarihi ve
dosya büyüklüğüyle ilgili bilgileri içerir. Aşağıdakine benzer bir dize görmeniz
gerekir:
tsystem:~/TUTORIAL tuser$ ls -l
total 0
-rw-r--r-- 1 tuser admin 0 Aug 13 15:35 example.txt
Bir dizinin ayrıntılı bir listesini oluşturduğunuzda, üçüncü ve dördüncü
sütunlarında sırasıyla bir dosyanın kullanıcı sahipliğini ve grup sahipliğini
görebilirsiniz. Bu dosya, tuser
kullanıcısına ve admin
grubuna aittir. Şimdilik, bu dosyayı böyle bırakalım; aşağıdakileri yazarak daha
fazla bilgi alabilirsiniz:
$ man chown
$ man chgrp
Bu komuta ilişkin temel sözdizimi, ilk giriş olarak kullanıcı ya da grup adını
ve ardından üzerinde çalışmak istediğiniz dosyayı ya da dosya listesini kullanır. Örneğin:
$ chown tuser example.txt
$ chgrp admin example.txt
UNIX içindeki temel dosya izinleri, her bir dosya ile ilişkilendirilen dokuz
işaretlik bir takım tarafından işlenir. Bu işaretler, üç farklı kullanıcı
kategorisinden (kullanıcı, grup ve diğer) ve üç dosya işleminden (okuma, yazma ve
yürütme) oluşur. Aşağıdaki komutu yazın:
$ ls -l
Aşağıdakine benzer bir dize görmeniz
gerekir:
-rw-r--r-- 1 tuser admin 0 Aug 13 15:35 example.txt
Bir dizine ilişkin uzun bir listeyi okurken, ilk sütun dosya izinlerini
gösterir. Bu sütunda on karakter olduğuna (dokuz değil) dikkat edin. Birinci
karakter, çalışmakta olduğunuz dosyanın tipini belirtir. Tire işareti
(-
), örneğin bu dosyanın düzenli bir dosya olduğunu gösterir.
d
, bir dizin olduğunu, düz bir dosya olmadığını bildirir. Şimdilik, her
biri -
, r
, w
ya da x
karakterlerinden biri olan diğer dokuz karakter üzerinde yoğunlaşalım. Tüm izinleri
kapatılan bir dosya şöyle görünür:
---------- 1 tuser admin 0 Aug 13 15:35 example.txt
Tüm izinleri açık olan bir dosya da aşağıdaki gibi olacaktır:
-rwxrwxrwx 1 tuser admin 0 Aug 13 15:35 example.txt
Üç rwx
takımı görürsünüz. Önceden belirttiğim gibi üç farklı
kullanıcı kategorisi (kullanıcı, grup ve diğer) vardır. Bu rwx
takımlarının her biri kategorilerden birini gösterir:
- Birinci
rwx
, user
(kullanıcı) takımının izinlerini
gösterir. Diğer bir deyişle, bu, dosyanın sahibinin dosyaya yapabileceklerini
anlatır.
- İkinci takım
group
(grup) takımı belirtir. Bu, grup üyelerinin
dosya üzerinde yapabileceklerini gösterir.
- Üçüncü takım,
other
(diğer) takımını belirtir. Bu da sistemdeki
tüm kullanıcıların, sahibi kim olursa olsun, bir dosyaya ne yapabileceklerini
gösterir.
example.txt dosyanızın geçerli izinlerine daha yakından bakalım:
-rw-r--r-- 1 tuser admin 0 Aug 13 15:35 example.txt
Üç işaretten oluşan ilk takım, bu dosyanın sahibi olan kullanıcının dosyayı
okuyabileceğini ve dosyaya yazabileceğiniz, ancak yürütemeyeceğini belirtir (bir
r
ve w
kodu vardır, ancak x
yoktur). Üç
işaretlik ikinci takımdan, bu dosyaya sahip olan grubun bu dosyayı okuyabileceğini,
ancak dosyaya yazamayacağını ya da dosyayı yürütemeyeceğini görebilirsiniz (bir
r
kodu vardır, ancak bir w
ya da x
yoktur).
Üç işaretten oluşan üçüncü takım, tüm diğer kullanıcıların dosyayı
okuyabileceklerini, ancak dosyaya yazamayacaklarını ve dosyayı yürütemeyeceklerini
gösterir (bir r
kodu vardır, ancak w
ya da x
kodu yoktur). Buradan, ayrıntılı man
sayfalarının nerede önemli
olduğunu iyi bir şekilde görebilirsiniz. Aşağıdakini yazmak için biraz ara verin:
$ man chmod
Şimdi, bu dosyada diğer kullanıcıların okumalarını istemediğiniz özel bilgilerin
olduğunu düşünün. Diğer gruplara ve tüm diğer kullanıcılara ilişkin okuma erişimini
kaldırmak isteyebilirsiniz. İzinleri değiştirmek için chmod
komutunu
kullanabilirsiniz. UNIX içindeki birçok şey gibi chmod
komutunu
kullanmanın birden çok yolu vardır; bu bölümde, bu yollardan biri üzerinde
durulmaktadır. Üç kategori (kullanıcı, grup ve diğer) üç harfle (u, g ve o)
gösterilmiştir. Üç izin tipi de (okuma, yazma ve yürütme) üç harfle (r, w ve x)
gösterilir. İzinleri değiştirmek için chmod
komutunun ardından
değiştirmek istediğiniz kategorilerin harflerini, bir artı ya da eksi işaretini
(açmak ya da kapatmak için) ve daha sonra değiştirmek istediğiniz izinlerle ilgili
harfleri kullanın. Bundan sonra, değişikliği yapmak istediğiniz dosyanın (ya da
dosyaların) adını yazın. Bunlar, aşağıdaki örnekte gösterilmiştir:
$ chmod og-r example.txt
$ ls -l
Aşağıdaki sonucu görmeniz gerekir:
-rw------- 1 tuser admin 0 Aug 13 15:35 example.txt
Bu örnekte, diğer ve grup (o ve g) kullanıcılarını belirtirsiniz ve bu
kategorilere ilişkin belirli izinleri kaldırmak istediğiniz gösteren bir eksi
işareti kullanırsınız. Daha sonra, özellikle okuma erişimini kaldırdığınızı gösteren
okuma (r) iznini kullandınız. Şimdi, sahip (tuser) dosyayı okumaya ve dosyaya
yazmaya devam edebilir, ancak sistemdeki diğer tüm kullanıcılar (üst kullanıcı [superuser]
dışında) dosyaya erişemez. Not: Üst kullanıcı (kök) tüm dosya izinlerini
geçersiz kılabilir.
Birden çok dosyayla çalışma
Dizinlerin üzerinden geçmeyi ve tek dosyaları işlemeyi öğrendiniz. Bu eğitici
yazının sonraki adımında, grup halindeki dosyalarla çalışmayı öğreneceksiniz.
Neredeyse tüm UNIX komutları, tek tek dosyalara karşılık olarak dosya listelerini
işleyebilir. Kullanmak istediğiniz her bir dosyanın adını açıkça yazarak ya da ortak
bir ad özelliğine sahip tüm dosyaları kullanmak istediğinizi gösteren bir genel
arama karakteri kullanarak dosya listelerini girebilirsiniz.
Birden çok dosyayla en yaygın çalışma yöntemi, genel arama karakterini
(*
) kullanmaktır. Herhangi bir karakterin ya da herhangi bir sayıdaki
karakterlerin yerine geçmesi için *
karakterini kullanarak bir dosya
listesi seçebilirsiniz. Açıklama amacıyla birkaç dosya daha oluşturmak için bu
komutları yazın:
$ cp example.txt example2.txt
$ cp example.txt script.sh
Şimdi, aşağıdakini yazın:
$ ls *.txt
Şimdi, yalnızca .txt uzantılı dosyaları görmeniz gerekir. Daha sonra,
aşağıdakini yazın:
$ ls exa*
Yeniden iki örnek dosyası görmeniz gerekir, ancak script.sh dosyasını
görmemelisiniz.
Birden çok dosyayla çalışabilen herhangi bir komut satırı uygulamasında genel
arama karakteri kullanılabilir.
Dosyalarla çalışan birçok komut satırı uygulamasında -R
seçeneği
vardır. -R
kullanıldığında, uygulama özyineli olarak bir dizine
ve alt dizinlerine girer ve her bir dosyada istenen komutu gerçekleştirir. Örneğin,
ana dizininize geri dönebilir ve tüm TUTORIAL dizinini kopyalayabilirsiniz:
$ cd ~
$ cp -R TUTORIAL /tmp/.
$ ls /tmp/TUTORIAL/
Şimdi, çeki düzen vermek için bu dizini kaldırın:
$ rm -R /tmp/TUTORIAL/
$ ls /tmp/
Tüm dizin, içindeki dosyalarla birlikte kaldırılır. Dikkatli olun: Özellikle
-R
ile genel arama karakterini kullanırken, planladığınızdan çok daha
fazla veriyi kolayca silebilirsiniz.
Arşivler ve sıkıştırma
Birçok günlük dosya işlemi, tek tek dosyalar, dizinler ve genel arama karakterleri
kullanılarak tamamlanabilir; ancak, arşivlemeyi ve sıkıştırmayı nasıl
kullanacağınızı öğrenmek, yedeklemeyle, dosya takımlarını diğer kullanıcıları
iletmekle ilgilenen ya da yalnızca alandan tasarruf sağlamak isteyen kullanıcılar
için önem taşır. Verileri arşivlemek ve sıkıştırmak amacıyla işletim sistemine bazı
UNIX yardımcı programları yerleştirilmiştir.
Birden çok dosyayı tek bir dosyada (bir arşiv içinde) gruplamak için kullanılan
en yaygın yöntem tar
komutunu kullanmaktır. tar
,
Tape Archiver (Manyetik Bant Arşivleyicisi) sözcüklerinin kısaltmasıdır.
Köklerini yedekleme manyetik bantlarından alır; ancak günümüzde, genellikle diskler
arasındaki işlemlerde kullanılır. TUTORIAL dizininde şimdiye kadar yaptıklarınızı
arşivlemeyi deneyin:
$ cd ~
$ tar cvf /tmp/tutorial.tar TUTORIAL
$ ls /tmp/
Şimdi, /tmp/ dizininde tutorial.tar adlı bir dosya görmeniz gerekir. Bu dosya,
hem TUTORIAL dizinini, hem de dizinin içindeki dosyaları içerir. Bu örnekte,
cvf
komut satırı seçenekleri kullanılmıştır:
c
, create
(oluştur) yerine kullanılır ve
tar
komutunun yeni bir arşiv oluşturacağını belirtir.
v
, verbose sözcüğünün kısaltmasıdır ve tar
komutunun arşive gönderilen her bir dosyanın listesini göstereceğini belirtir.
f
, dosya anlamına gelir ve tar
komutunun arşivi
bir aygıt yerine bir dosyaya yazacağını belirtir.
Daha sonra, /tmp dizinine gidin ve arşivin içeriğini çıkarın:
$ cd /tmp/
$ ls
$ tar cvf tutorial
$ ls
Birinci ls
komutunun tutorial.tar dosyasını gösterdiğine, ancak
TUTORIAL dizinini göstermediğine dikkat edin. tar
komutundan sonra
gelen ikinci ls
komutu, /tmp/ dizininde bir TUTORIAL dizininizin
olduğunu gösterir. Çeki düzen vermek amacıyla /tmp/TUTORIAL dizinini kaldırın:
$ rm -R /tmp/TUTORIAL
Bir tar dosyası oluşturduktan sonra, bunu sıkıştırmak isteyebilirsiniz. Çoğu
UNIX dağıtımında çeşitli sıkıştırma seçenekleri vardır; ancak bu eğitici yazıda,
genel olarak tarball adı verilen bir şey oluşturmak için gzip
komutunun kullanımı üzerinde durulacaktır. Tarball, sıkıştırılmış bir tar
dosyasıdır. Devam edip tutorial.tar dosyasının sıkıştırılmış bir sürümünü oluşturun
ve bu dosyanın daha az yer kaplamasını sağlayın:
$ gzip tutorial.tar
$ ls
tutorial.tar arşivleriniz sıkıştırılır ve tutorial.tar.gz olarak yeniden
adlandırılır. Bu, tarball dosyasıdır. Bu dosyanın sıkıştırmasını kaldırmak için
aşağıdakileri yazın:
$ gzip -d tutorial.tar.gz
Sonuçta sıkıştırılmamış özgün tar dosyanızı (tutorial.tar) elde edersiniz.
Dosya sistemi ve dosya büyüklükleri
Tek tek dosyalarla çalışmayı ve bunların büyüklüklerini ve içeriğini incelemeyi
öğrenmek kolaydır. Aynı teknikleri, tüm dizinlerin ve dosya sisteminin içeriğini
incelemek için de kullanabilirsiniz. UNIX'in birçok yeni sürümünde, bu bilgiler
basit numaralandırma biçimlerinde, birimleri belirten harfler kullanılarak
görüntülenebilir.
df
, Display Free (Boş Alanı Görüntüle) komutunun
kısaltmasıdır. df
komutunu basit bir şekilde yazarak; makinenizdeki her
bir dosya sisteminin disk alanı miktarıyla, kullanılan alan miktarıyla ve
kullanılabilir alan miktarıyla ilgili bilgileri alabilirsiniz. Varsayılan değer
olarak çoğu sistem, değerleri 512KB blokları şeklinde görüntüler ve bunların
okunması zordur. Bilgileri gigabayt cinsinden görüntülemek için -g
ya
da megabayt cinsinden görüntülemek için -m
parametresini kullanın. Bazı
sistemlerde, insan tarafından okunabilir anlamına gelen -h
seçeneği de vardır. Bu, df
komutunun G, M ve K gibi sonekler
kullanmasını ve her bir sayıyı üç ya da daha az basamakla görüntülemesini sağlar.
Aşağıdaki komutu yazın:
$ df -h
Basit bir sunucuda aşağıdaki örneğe benzer bir çıkış görebilirsiniz:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 7.9G 3.7G 3.9G 50% /
none 3.9G 0 3.9G 0% /dev/shm
/dev/sda3 24G 20G 1.9G 92% /export
Sisteminizde df
için -h
seçeneği varsa, bunu
ls
ile birlikte de kullanabilir. Kolay okunabilir dosya büyüklükleri
olan ayrıntılı bir liste görmek için bu komutu yazın:
$ ls -lh
du
, dosya büyüklüklerini denetlemek için üçüncü bir yöntemdir,
ancak dizin büyüklüklerini özetleme avantajı da vardır. Bazı sistemlerde
-h
seçeneğiyle de kullanılabilir; tersi durumunda, sonuçların 1024
baytlık bloklarda görüntülenmesini sağlayan -k
seçeneğini kullanın.
Sınamak istediğiniz dizinleri ve dosyaları belirtmek için -s
seçeneğini
ve bir dosya adı ya da genel arama karakteri de kullanabilirsiniz. Aşağıdaki komutu
deneyin:
$ cd ~
$ du -sk *
$ du -sh *
Bir ana dizinde aşağıdaki örneğe benzer bir çıkış görebilirsiniz:
$ du -sk *
316468 OLD
637940 MyData1
571788 Code
12356364 Build
3224480 Hardened
$ du -sh *
310M OLD
623M MyData1
559M Code
12G Build
3.1G Hardened
/dev
dizininde, başka öğelerin yanı sıra, sisteminizdeki disk
sürücülerine erişmek için kullanılan ve aygıt dosyaları adı verilen özel
dosyalar bulunur. /dev diziniyle ilgili daha fazla bilgi almak için df
komutunun çıkışına bir daha bakın. Bu çıkış her makinede farklıdır; ancak burada,
df
komutunun, bilgisayarınızdaki her bir dosya sistemine ilişkin
sonuçları gösterdiğine dikkat etmeniz önemlidir. Windows tabanlı bilgisayarlardan
farklı olarak, bağlanan her bir dosya sistemi, sağa eğik çizgiyle (/) gösterilen
sistem kökünden adreslenir. Bu, C, D, E, vb. sürücü harfleriyle diskleri ayıran
sistemlerden farklıdır.
UNIX'te, SCSI (ve SATA) diskleri genellikle /dev/sda, /dev/sdb, /dev/sdc, vb.
aygıt adlarını kullanır. CD-ROM sürücüsü için aygıt adı olarak yaygın bir şekilde
/dev/cdrom kullanılır. Bu aygıtlar, dizinlere bağlandıkları için, aygıt adı
kullanılmadan bunlara erişilebilir. Sisteminizdeki aygıtların nasıl
etiketlendiklerini öğrenmek için UNIX dağıtımınıza ilişkin belgelere bakın.
Herhangi bir aygıt, herhangi bir konuma (herhangi bir dizine) bağlanabilir.
Örneğin, CD-ROM'un /mnt/cdrom dizinine bağlanması yaygın görülen bir durumdur. Bazı
UNIX benzeri işletim sistemlerinde (birçok Linux ve Mac OS sürümünde olduğu gibi)
CD-ROM'lar otomatik olarak bağlanır, ancak mount
komutunu her iki
şekilde de öğrenmek yararlı olacaktır. Bir CD-ROM yerleştirin ve aşağıdaki komutları
yazın:
$ mount -t iso9660 /dev/cdrom /mnt/cdrom
$ df
$ ls /mnt/cdrom
Not: Bu komutlar, yalnızca sisteminizde /dev/cdrom ve /mnt/cdrom
dizinleri varsa çalışır. Bu dizinler mevcutsa, df
komutunun çıkışında
CD-ROM'un, artık dosya sisteminizin parçası olduğunu görürsünüz. ls
komutu, az önce bağlanan CD-ROM sürücüsünün içeriğini göstermelidir.
Bir aygıtı çözmek için çoğu UNIX benzeri işletim sisteminde umount
komutu kullanılır. Sözdizimde, umount
komutunun ardından bağlama
noktası belirtilir. Önceki mount
komutunuz başarıyla tamamlandıysa,
aşağıdakileri yazın:
$ umount /mnt/cdrom
$ df
$ ls /mnt/cdrom
Not: Çözme işleminin doğru biçimde gerçekleştirilmesi için bağlanan
dosya sistemi içinde olmamanız gerekir; tersi durumunda, sistem, dosya
sisteminin meşgul olduğunu bildirir. umount
komutu uygun
bir biçimde yürütüldükten sonra, df
komutu CD-ROM sürücüsünü dosya
sisteminde göstermez ve ls
komutunda, /mnt/cdrom dizininin artık boş
olduğu gösterilir (bağlanan hiçbir şey yoktur -- olağan bir dizin olmuştur).
Giriş ve çıkış
Giriş ve çıkış, genellikle basit standart terimlerle düşünülür: Klavye/fare
ve monitör/hoparlörler. UNIX'te, bir giriş ve çıkış akımı (ve bir hata akımı)
sistemine erişim, kullanıcıların ve geliştiricilerin giriş ve çıkışları verimli bir
şekilde uygulamalara ve uygulamalardan başka yerlere taşımalarına olanak verir ve
böylece insan müdahalesi en alt düzeye indirilerek karmaşık işlemlerin
hızlandırılması sağlanır. stdin
, stdout
ve
stderr
, UNIX'in komut dosyaları için ideal bir platform olmalarını
sağlayan önemli parçalardır.
Çoğu komut satırı uygulaması, girişi stdin
içinden alabilir ve
çıkışı stdout
'a yöneltebilir. stdin
, Standard Input
(Standart Giriş) anlamına gelir. stdout
, Standard Output
(Standart Çıkış) anlamındadır. Varsayılan değer olarak stdin
girişi,
klavyeden gelir (uçbiriminizde yazdıklarınız) ve stdout
çıkışı görüntü
biriminize gider (ekranınızda gördüğükleriniz). Bir ek stderr
çıkışı,
hataları yazdırır ve mesajlarda hata ayıklar; ancak, bu eğitici yazıda
stdin
ve stdout
üzerinde durulacaktır.
Yeniden yöneltme, kullanıcıların normalde stdout
'a gidecek olan
çıkışı başka bir hedefe (örneğin, bir dosyaya) göndermelerini sağlar. TUTORIAL dizin
listeniz için bir metin dosyası oluşturun:
$ cd ~/TUTORIAL
$ ls > listing.txt
$ ls
Başka bir yeniden yöneltme yöntemi >>
karakterlerinin
kullanılmasıdır. Bu, yeni bir dosya oluşturmak yerine bir dosyanın sonuna eklenir.
stderr
'i 2>
ile bir dosyaya ya da tüm çıkışı
(stdin
ve stderr
), &>
ile bir dosyaya
yeniden yöneltebilirsiniz. Yeniden yöneltme biçimlerini birleştirebilirsiniz;
örneğin, stderr
'i bir dosyanın sonuna eklemek için
2>>
komutunu kullanın.
Artık içinde metin olan bir dosyanız olduğuna göre, dosyanın içine
bakabilirsiniz. Bir dosyanın içeriğini en hızlı biçimde cat
komutuyla
inceleyebilirsiniz; bu komut, Concatenate (Art Arda Ekle) sözcüğünün kısaltmasıdır;
metni art arda eklemek için yeniden yöneltmeyle birlikte kullanılabilir. Aşağıdaki komutu yazın:
$ cat listing.txt
Eğitici yazıdaki tüm adımları gerçekleştirdiyseniz, aşağıdakine benzer bir
sonuç görmelisiniz:
example.txt
example2.txt
listing.txt
script.sh
Önceki cat
komutu, göreceli olarak küçük bir dosyada yürütüldüğü
için tüm verileri tek bir sayfada görebilirsiniz. Tek bir sayfaya sığamayacak bir
dosyayı görüntülüyorsanız, genellikle more
komutu kullanılır; çıkışı,
stdout
içinde tam veri sayfasının her görüntülenişinde duraklatır. Ara
çubuğuna bastığınızda çıkış sonraki sayfaya ilerler. Örnekte kullanmak için daha
uzun bir dosya oluşturmayı deneyin:
$ ls /etc/ > listing2.txt
$ cat listing2.txt
$ more listing2.txt
cat
komutunu kullanırsanız, dosya okunamayacak kadar hızlı kayar;
ancak, more
komutunu kullanırsanız, çıkışı adım adım ilerletmek için
ara çubuğuna basabilirsiniz.
Bir dosyanın ilk ya da son birkaç satırını hızla görüntülemek istiyorsanız,
head
ya da tail
komutunu kullanabilirsiniz. Bu komutlar,
genellikle komut dosyasının üst ya da bir günlük dosyasının alt kısmını görüntülemek
için kullanılır. Bu komutlar, kodda hata ayıklarken, çıkış dosyasının doğruluğunu
hızlı bir şekilde denetlemek için de oldukça kullanışlıdır. Aşağıdakileri yazmayı deneyin:
$ head listing2.txt
İlk birkaç satır yerine bir dosyanın son birkaç satırını görüntülemek için
tail
komutunu sınamayı deneyin:
$ tail listing2.txt
Her iki komut da varsayılan değer olarak 10 satırı görüntülemek üzere
ayarlanmıştır; ancak, istediğiniz sayıda satırın görüntülenmesi için -n
seçeneğini kullanabilirsiniz. Örneğin, aşağıdaki komutu yazabilirsiniz:
$ head -n 2 listing2.txt
İçinde daha fazla veri içeren dosyalar oluşturmaya başladığınıza göre belirli
bir metni aramak isteyebilirsiniz. grep
, aşağıdaki örnekte kullanıldığı
gibi güçlü bir arama yardımcı olanağıdır:
$ grep host listing2.txt
Bu komut, listing2.txt dosyasında host
dizisini içeren tüm
satırları görüntüler.
Dosya oluşturma adımını atlamak amacıyla bir komutun çıkışını başka bir komutta
giriş olarak kullanmak için pipe
(çubuk) karakterini (|
)
kullanabilirsiniz. Bu, başka bir yeniden yöneltme şeklidir ve uzun komut
listelerini, giriş ve çıkışı verimli bir şekilde yönetmek üzere bağlamak için
inanılmaz ölçüde güçlü bir araçtır. Aşağıdaki basit örneği deneyin:
$ ls /etc/ | grep host
Bu komut, önceden listelenen iki adımlık işlemle aynı çıkışı verir. Tek satır,
ls
komutunun çıkışını alır ve grep
komutuna ilişkin arama
girişi olarak kullanır. Burada başka bir örneği görebilirsiniz:
$ du -sh /etc/* | more
Bu durumda, her bir dosyaya ve /etc/ dizinine ilişkin disk kullanımını
(du
) denetlersiniz. Çıkış bir sayfadan daha fazladır; bu nedenle,
sonucu more
komutuna pipe
ile alarak, çıkışı, her
defasında bir sayfalık verinin görüntüleneceği şekilde duraklatmak yararlı
olacaktır.
Özet
Bu eğitici yazının üzerinden geçtikten sonra, komut satırından UNIX dosya
sisteminde gezinmek ve dosyalarla ve dizinlerle çalışmak için temel bilgiye sahip
olacaksınız. Bu metin boyunca gösterilen komutları denemeli ve ek bilgi almak
istediğiniz öğelere ilişkin elkitabı sayfalarını incelemelisiniz.
Dizinin sonraki eğitici yazılarında, özel uygulamalar (vi
gibi)
ayrıntılarıyla ele alınacak ve kabukla ilgili incelikler ve ipuçları işlenecektir.
Bu arada, test kullanıcısıyla denemeler yapın; kısa sürede kendizini, komut satırı
seçenekleriyle, farenizle gösterip tıklatarak yapabileceğinizden çok daha hızlı bir
şekilde çalışırken bulabilirsiniz.
Bilgi Edinme
-
Yeni
kullanıcılar için UNIX'e ilişkin ipuçları ve incelikler: Bu dizinin diğer
bölümlerini inceleyin.
- Open Group: Bu siteden, UNIX ve UNIX
sertifikalarıyla ilgili daha fazla bilgi öğrenebilirsiniz.
- Linux.org: UNIX benzeri açık kaynaklı bir
işletim sistemi olan Linux ile ilgili daha fazla bilgi öğrenin.
-
UNIX'in
Windows XP ve Mac OS X ile çalışmasını sağlayın (developerWorks, Nisan 2006):
Bir UNIX sistemini çapraz platform ortamıyla bütünleştirin.
- FreeBSD.org: BSD işletim sistemleriyle
ilgili daha fazla bilgi almak için bu siteyi ziyaret edin.
- Linux Journal: Linux gelişmelerini
izleyin.
- AIX ve UNIX: UNIX
becerilerinizi geliştirmek için developerWorks AIX ve UNIX bölgesini ziyaret edin.
- AIX ve UNIX'te yeni
olanlar: AIX ve UNIX ile ilgili daha fazla bilgi almak için New to AIX and UNIX
(AIX ve UNIX'te yeni olanlar) sayfasını ziyaret edin.
-
developerWorks
teknik olaylar ve web yayınları: Güncel developerWorks teknik olaylarını ve web
yayınlarını izleyin.
-
AIX 5L
Wiki: AIX ile ilgili teknik bilgilere ilişkin bir işbirliği ortamı.
- Podcasts: İlgili
ayarları yapın ve IBM teknik uzmanlarının bilgilerine ulaşın.
Ürün ve teknoloji edinme
-
IBM
deneme yazılımı: developerWorks'deki yazılımı doğrudan yükleyerek bir sonraki
geliştirme projenizi oluşturun.
Tartışma
- AIX ve UNIX forumlarına katılın:
- AIX 5L -- teknik
- Geliştiriciler için AIX Forumu
- Küme Sistemleri Yönetimi
- IBM Destek Yardımcısı
- Başarım Araçları -- teknik
- Sanallaştırma -- teknik
- Diğer
AIX ve UNIX forumları
- developerWorks bloglarına ve developerWorks topluluğuna katılın.
Tim McIntire, HPCC yazılımları, desteği ve danışmanlığı konularında bir pazar lideri olan Cluster Corporation'ın danışmanı ve kurucu ortaklarındandır. Zaman zaman IBM developerWorks ve Apple Developer Connection'a da katkıda bulunmaktadır. Tim McIntire'ın Scripps Institution of Oceanography's Digital Image Analysis Lab'daki bilgisayar bilimleri çalışmasını yönetirken yürüttüğü araştırması, Concurrency and Computation ve IEEE Transactions on Geoscience and Remote Sensing gibi çeşitli dergilerde yayınlanmıştır. Ek bilgi için TimMcIntire.net adresini ziyaret edebilirsiniz.
Düzey: Orta
Tim McIntire
(tm@timmcintire.net),
Danışman, Serbest Yazar
26 Eylül 2006
Sistem yöneticileri, komut satırından UNIX® sistemindeki dosyalarla çalışmak için bazı programlar kullanabilirler. Bu eğitici yazıda,cd
,cp
vetar
komutlarını kullanarak komut satırından UNIX dosya sisteminde dolaşmayı, dosyalarla ve dizinlerle çalışmayı öğreneceksiniz.cd
komutu dizinleri değiştirir,cp
komutu dosyaları ya da dizinleri çoğaltır vetar
komutu, dosyaları hızla bir arşivde gruplar. Ayrıca, dosya izinleriyle çalışmayı ve basit giriş/çıkış gerçekleştirmeyi de öğreneceksiniz.
Başlamadan önce
Bu eğitici yazıdan neler öğrenebileceğinizi görün ve anlatılanlardan nasıl en iyi şekilde yararlanabileceğinizi öğrenin.
Dört bölümden oluşan bu eğitici yazılar, UNIX®
temellerini, kullanıcı bakış açısıyla ele almaktadır. Bu ilk eğitici yazı, bir
süredir UNIX benzeri işletim sistemlerinden uzak kalmış kullanıcıların bilgilerini
tazelemeleri için iyi bir fırsat olacaktır. Windows başvuruları ve karşılaştırmaları
kullanıldığı için bu eğitici yazı, Windows® temelli yeni
UNIX kullanıcıları için de yararlıdır. Dizinin sonraki eğitici yazılarında, özel
uygulamaları (vi
gibi) ayrıntılarıyla ele alacak ve kabukla ilgili
incelikleri ve ipuçlarını tartışacağız.
Sistem yöneticileri, komut satırından bir UNIX sistemindeki dosyalarla
çalışmak için bazı programlar kullanabilirler. Burada gösterilenler dışında daha
birçok konu vardır, ancak burada anlatılanların tümü UNIX sisteminizin temel
parçalarıdır. Dosyaları ve dizinleri yeniden yerleştirmek ve yeniden adlandırmak
için mv
komutunu kullanabilirsiniz. cp
komutu, bir ya da
daha çok dosyayı ya da dizini çoğaltır. tar
adı verilen bir uygulama,
dosyaları tek bir arşivde hızla gruplayabilir. Bu eğitici yazıda, dosya sisteminin,
dosya izinleriyle çalışmanın ve basit giriş/çıkışın üzerinden geçerek, yeni UNIX
kullanıcıları için bir temel de oluşturulmaktadır.
Bu eğitici yazının amacı, yeni UNIX kullanıcılarının komut satırında rahatça dolaşabilmelerini ve dosyalarla çalışabilmelerini sağlamaktır. Yazıda, dosyaları yöneten genel komut satırı yardımcı programları üzerine odaklanılırken, günlük olarak kullanmanız gereken komutların tam bir resmini vermek amacıyla dosya izinleri ve giriş/çıkış da anlatılmaktadır.
Bu eğitici yazı için bilgisayarlar ve dosyalarla ilgili temel bir anlayışa sahip olmanız gerekir, ancak UNIX benzeri bir işletim sisteminde deneyimli olmanız beklenmemektedir. Dizinlerin (klasörlerin) ve dosyaların ne olduklarını anlamanız ve UNIX benzeri işletim sistemindeki hesabınızda oturum açabilmeniz gerekir. DOS ya da Microsoft® Windows komut satırında daha önce çalıştıysanız, benzerlikleri fark edersiniz, ancak daha önce herhangi bir komut satırıyla çalışmamış kullanıcılar da zorlanmayacaktır.
Bu eğitici yazıyı tamamlamak için gereksinim duyacağınız tek şey UNIX benzeri bir işletim sistemiyle çalışan herhangi bir bilgisayarda bulunan bir kullanıcı hesabına erişim olacaktır. Birçok UNIX benzeri işletim sistemleri arasında, IBM AIX® işletim sistemini, Linux®, Berkeley Software Distribution (BSD) ve Mac OS® X (komut satırına erişim için Uçbirim kullanır) işletim sistemlerini sayabiliriz.
Başlangıç
Başlamadan önce küçük bir uyarıda bulunalım: UNIX benzeri birçok farklı dağıtım vardır. Bunlar AIX gibi ticari dağıtımlardan, BSD ve Linux gibi ücretsiz dağıtımlara kadar çeşitlilik gösterir. Bu eğitici yazı, neredeyse tüm dağıtımlarda bulunan komutlar ve komut satırı seçenekleri üzerinde odaklanır; dağıtımlarınızda farklılıklar bulursanız, elkitabı sayfalarınıza bakın (daha sonra anlatılacaktır).
Başlamak için seçtiğiniz UNIX benzeri işletim sisteminde oturum açın. Oturum
açtığınızda, otomatik olarak kullanıcı ana dizininizden başlamanız gerekir.
Örneklerde tuser
(Test Kullanıcısı) kullanıcı adı kullanılmıştır.
Belirli komutlarla çalışmadan önce man
komutunu öğrenmeniz önem
taşır. man
, elkitabı (manual) anlamına gelir; UNIX konusunda yeterli olmakla
övünen kullanıcılar için çok önemli bir araçtır. Bilgi almak istediğiniz bir
uygulamanın açıklamasını görmek için man uygulama-adı
yazın. Bu eğitici
yazının her sayfasında, yönergelerle birlikte elkitabı sayfalarına bakmanız için
öneriler verilir.
Aşağıdakini yazmayı deneyin (bu eğitici yazıdaki $
karakterinin
komut isteminize karşılık geldiğine dikkat edin; örneklerde, dolar işaretinden sonra
gördüklerinizi yazmanız gerekir):
$ man ls |
Dizinler
Öğrenmeniz gereken ilk şey dosya sisteminizin üzerinden nasıl geçeceğiniz ve dosya sistemini nasıl inceleyeceğinizdir. UNIX'te, dizinler, dosyaları hiyerarşik bir yapıda düzenlemek üzere kullanılır. Dizinlere girmek için dizinleri tıklatmak ve her bir dosyayı bir simge olarak görmek yerine, komut satırından bir UNIX dosya sistemini görüntülemek ve üzerinden geçmek için bir dizi komut ve liste kullanırsınız.
UNIX benzeri bir işletim sistemini ilk defa kullanıyorsanız, ancak önceden bir
DOS ya da Windows komut satırı kullandıysanız, ls
komutu kabaca
dir
komutuna eşdeğerdir. List Directory (Dizini Listele)
komutunun kısaltmasıdır. ls
, ayrıntılı listeler almak, gizli dosyaları
göstermek, alt dizinleri özyineli bir şekilde listelemek, vb. için çeşitli komut
satırı seçenekleriyle kullanılabilir. Aşağıdaki örnekleri girin:
$ ls $ ls -l $ ls -a $ ls -R |
Komut satırında yapacağınız bir sonraki işlemi düşünüyorsanız, nerede ve ne
yapmakta olduğunuzu görmenize yardımcı olması için hızlı bir şekilde ls
komutunu girebilirsiniz. Bu komutu, sisteminizdeki geçerli durumu güncelleyen grafik
kullanıcı arabirimindeki ekran yenileme gibi düşünebilirsiniz.
Dosya sisteminin üzerinden geçmek amacıyla dizinleri değiştirmek için
cd
komutunu kullanın. cd
ve gitmek istediğiniz dizinin
adını yazın. Dizinin önünde bir / karakteri yazarsanız, adını belirttiğiniz dizin
bir mutlak dizin yoludur: Dosya sisteminizin kökünden başlar. Önden /
karakteri kullanmazsanız, dizin bir göreceli dizin olur: Geçerli
çalışma dizininizden başlarsınız. Örneğin, ana dizindeyseniz (/home/tuser) ve
bir alt dizine geçmek istiyorsanız, cd
ve ardından gitmek istediğiniz
dizinin adını yazın. Örneğin, bir Documents dizininiz varsa, aşağıdakini
yazabilirsiniz:
$ cd Documents |
/home/tuser/ dizininde başladığınız için bu komut sizi /home/tuser/Documents/ dizinine götürür.
Bunun tersine, bir konum belirlemek için bir mutlak yol adı kullanabilirsiniz. Örneğin, /tmp dizinine gidebilir ve ana dizininize aşağıdaki şekilde dönebilirsiniz:
$ cd /tmp $ cd /home/tuser |
UNIX'te özel dizin adları, dosya sisteminin üzerinden geçmeyi kolaylaştırır. En
önemli üçü, geçerli dizine, geçerli dizinin üst dizinine ve kullanıcının ana dizinine
başvuruda bulunur. Geçerli dizin bir noktayla belirtilir. Örneğin, $ cd
.
yazarsanız, geçerli dizinde (/home/tuser/) kalırsınız. Bu karakter, geçerli
çalışma dizininde yürütülebilir komutları çalıştırdığınızda özellikle önem kazanır.
Varsayılan değer olarak birçok UNIX kabuğu, uygulamalar için uygulama dizinlerini
arar; ancak, geçerli çalışma dizinini aramaz. Bir dosya adının önünde ./
karakterlerini kullanarak geçerli çalışma dizininizdeki dosyalara ve uygulamalara
her zaman açıkça başvuruda bulunabilirsiniz. Ana dizinlere iki noktayla başvuruda
bulunulur. Geçerli çalışma dizininizin üst dizinine geçmek için aşağıdakileri yazın:
$ cd .. |
Önceden /home/tuser dizinindeyseniz, şimdi /home içindesiniz. Üçüncü özel dizin adını göstermek amacıyla ana dizininize dönmek için kısayolu kullanın (tilde karakteri). Aşağıdaki komutu yazın:
$ cd ~ |
Geçerli dizininizi denetlemek için Print Working Directory (Çalışma
Dizinini Yazdır) komutunun kısaltması olan pwd
komutunu
kullanabilirsiniz. Bu komut size dosya sisteminin neresinde olduğunuzu bildirir ve
göreceli yol adlarını belirtirken kullanacaklarınızı belirlemenizde size yardımcı
olur. Bu komutu, dosya sisteminiz içinde geçiş yapmak için üç özel dizin adıyla,
mutlak yollarla ve göreceli yollarla kullanmayı deneyin. Her bir adımda, geçerli
konumunuzu denetlemek için pwd
komutunu kullanın.
Geçerli dizininizi denetleyin (önceki bölümde gösterilen adımları izlediyseniz, ana dizininizde olmanız gerekir):
$ pwd |
mkdir
ve rmdir
komutları sırasıyla dizin
oluşturmak ve taşımak için kullanılır. rmdir
, yalnızca dizin boş
olduğunda çalışır (dosyaları kaldırmaz).
Aşağıdaki komutları deneyin:
$ mkdir TUTORIAL $ cd TUTORIAL $ pwd $ ls |
Şimdi yeni oluşturduğunuz boş TUTORIAL dizininde bulunuyorsunuz.
Bu dizine ~
(tilde) karakterini kullanarak da gidebilirsiniz.
/home/tuser/TUTORIAL dizinine gitmek için şunları yazın:
$ cd ~/TUTORIAL $ pwd |
Dizinler arasında hareket etmeyi ve listeler almayı öğrendiğinize göre olağan bir UNIX dağıtımında dizin düzenine bakmaya hazırsınız demektir. Bir UNIX dosya sistemini birkaç şekilde düzenleyebilirsiniz. Bu eğitici yazı, çoğu UNIX benzeri dağıtımlarda ortak olan birkaç kök düzeyindeki dizin üzerinde odaklanmaktadır. Kök düzeyinde olan başka önemli dizinler de vardır, ancak çoğu durumda işlem yaparken bu dizinleri kullanırsınız:
/home (ya da /users) /etc /bin /sbin /usr /car /tmp |
/home, kullanıcı dizinlerinin bulunduğu yerdir. Örneğin, tuser
kullanıcısı /home/tuser dizininde bulunur.
/etc, başlatma komut dosyalarını ve ağ yapılandırma dosyalarını içeren sistem genelindeki çoğu ayarın saklanması için kullanılan dizindir. Bu dizindeki dosyaların çoğunu düzenlemek için kök erişim yetkisi gereklidir.
/bin ve /sbin, yürütülebilir sistem dosyalarını (bu eğitici yazıda öğrenmekte
olduğunuz komutlar gibi) saklamak için kullanılan dizinlerdir. /sbin,
shutdown
gibi sistem komutları için kullanılırken, /bin de kullanıcı
komutları için kullanılır.
Uygulamalar genellikle /usr dizinine kurulur. Genellikle temel dağıtımın parçası olmayan uygulamalar /usr/local/ alt dizininde tutulur.
/var, sürekli güncellenen günlük dosyaları gibi dosyaların saklandığı dizindir.
Geçici dosyalar /tmp dizininde saklanır. Bu dizine sistemdeki tüm kullanıcılar tarafından veri yazılabilir ve bazı sistemlerde, eski dosyalar belirli aralıklarla kaldırılır.
Dosyalar
Komut satırından dosya sisteminde nasıl hareket edeceğinizi öğrendiğinize göre, şimdi, dosyalarla çalışmaya başlayabilirsiniz. Bu bölümde, örnek bir dosyanın oluşturulması, bir dosyanın kopyalanması, kaldırılması ve temel dosya izinlerinin görüntülenmesi ve değiştirilmesi öğretilmektedir. UNIX gibi çok kullanıcılı bir işletim sisteminde, sahiplik ve izin oluşturmayı anlamak büyük önem taşır.
Başlangıç için bu eğitici yazıda kullanabileceğiniz boş bir dosya oluşturun.
Boş bir dosya oluşturmak için touch
komutunu kullanabilirsiniz (bu
komut genellikle bir dosyaya dokunarak (touch), değiştirildiği tarihi ve erişildiği
tarihi güncellemek için kullanılır).
Kullanıcı ana dizinindeki TUTORIAL dizinine geri dönün ve aşağıdaki komutu yazarak bir dosya oluşturun:
$ cd ~/TUTORIAL $ touch example.txt |
cp
komutu, dosyaları kopyalar. cp
komutunun ardından
kopyalamak istediğiniz dosyanın adını ve daha sonra, dosyayı kopyalamak istediğiniz
dizinin adını yazın (yeni bir dosya adı belirtmek gibi bir seçeneğiniz de vardır).
Örneğin, example.txt dosyasını /tmp/ dizinine kopyalamayı deneyin:
$ cp example.txt /tmp/ $ ls /tmp/ |
/tmp/ dizininde example.txt dosyasını görüyor olmalısınız. Şimdi, /tmp/ dizinindeki dosyayı geçerli dizininize kopyalayın, ancak bu defa yeni bir ad verin:
$ cp /tmp/example.txt ./example2.txt $ ls |
Bu yeni dosyayı geçerli dizininize yerleştirmek istediğinizi belirtmek üzere
nokta kullanıldığına dikkat edin. Bu durumda ./ karakterlerini kullanmak gerekli
değildir (çünkü, bir kopyalama işleminde varsayılan yol geçerli çalışma
dizininizdir), ancak yapmak istediğinizi açık bir biçimde ifade etmenize yardımcı
olur. Sonraki ls
komutu, geçerli çalışma dizininizde artık iki örnek
(example) dosyanız olduğunu gösterir.
move
komutu, mv
ile tamamlanır. Taşıma ve kopyalama
komutları için çoğu sözdizimi ve komut satırı seçenekleri aynıdır. Yeni dosyanızı
(example2.txt) geçerli dizininizin dışına, /tmp/ dizinine taşımak istiyorsanız,
aşağıdakileri yazın:
$ mv example2.txt /tmp/. |
Ne yapmakta olduğunuzu açıkça göstermek için yine bir nokta işaretinin kullanıldığına dikkat edin.
Sisteminize çeki düzen vermek için /tmp/ dizininde oluşturulan dosyaları
kaldırın. rm
komutu, dosyaları dosya sisteminizden siler. Bu komut,
dosyayı Geri Dönüşüm ya da Çöp Kutusu'na göndermeye benzemez; komut, dosya
işaretçisini sildiği için rm
komutunu dikkatli kullanın. Aşağıdakileri yazın:
$ rm /tmp/example.txt $ rm /tmp/example2.txt $ ls /tmp/ |
/tmp/ dizinindeki her iki örnek dosyasının da silinmiş olması gerekir.
Kullandığınız UNIX benzeri işletim sistemine bağlı olarak srm
ya
da can
gibi diğer silme komutlarını kullanabilirsiniz. Bu komutları
kullanıp kullanamadığınızı görmek için man srm
ve man can
yazmayı deneyin. srm
, rm
komutunun güvenli bir sürümü
olarak kullanılır; silinen dosyaların üzerine rasgele veriler yazarak bunların geri
yüklenmesini önler. can
, bazı yönlerden srm
komutunun
karşıtıdır; can
, dosyaları alır, ancak bunları, Windows Geri Dönüşüm
Kutusu'na benzer özel bir çöp dizinine taşır.
Sahiplik ve izinler
UNIX benzeri işletim sistemlerinde dosya sahipliği ve izinler önemli kavramlardır. UNIX, en temelinden çok kullanıcılı bir sistem olarak oluşturulmuştur. Windows da bugünkü sürümlerinde çok kullanıcılı bir sistem olarak çalışma becerisine sahiptir, ancak Windows'un ilk kişisel bilgisayarlar ve DOS zamanlarından gelen tek kullanıcılı bir geçmişi vardır. Bugün bile bazı Windows kullanıcıları, çok kullanıcılı bir sistemde var olan birden çok hesap ve dosya izni konuları üzerine fazla düşünmemektedirler. UNIX kullanıcıları için ise dosya sahipliği ve izinlerin anlaşılması büyük önem taşır.
UNIX'te dosya sahipliği, ls -l
kullanılarak incelenebilir ve
chown
ve chgrp
komutlarıyla değiştirilebilir.
Aşağıdakileri yazarak sahipliklere bir göz atalım:
$ ls -l |
-l
parametresinin belirtilmesi, dosya listesini uzun biçimde
görmek istediğinizi gösterir. Uzun biçim, izinler, sahiplik, değişiklik tarihi ve
dosya büyüklüğüyle ilgili bilgileri içerir. Aşağıdakine benzer bir dize görmeniz
gerekir:
tsystem:~/TUTORIAL tuser$ ls -l total 0 -rw-r--r-- 1 tuser admin 0 Aug 13 15:35 example.txt |
Bir dizinin ayrıntılı bir listesini oluşturduğunuzda, üçüncü ve dördüncü
sütunlarında sırasıyla bir dosyanın kullanıcı sahipliğini ve grup sahipliğini
görebilirsiniz. Bu dosya, tuser
kullanıcısına ve admin
grubuna aittir. Şimdilik, bu dosyayı böyle bırakalım; aşağıdakileri yazarak daha
fazla bilgi alabilirsiniz:
$ man chown $ man chgrp |
Bu komuta ilişkin temel sözdizimi, ilk giriş olarak kullanıcı ya da grup adını ve ardından üzerinde çalışmak istediğiniz dosyayı ya da dosya listesini kullanır. Örneğin:
$ chown tuser example.txt $ chgrp admin example.txt |
UNIX içindeki temel dosya izinleri, her bir dosya ile ilişkilendirilen dokuz işaretlik bir takım tarafından işlenir. Bu işaretler, üç farklı kullanıcı kategorisinden (kullanıcı, grup ve diğer) ve üç dosya işleminden (okuma, yazma ve yürütme) oluşur. Aşağıdaki komutu yazın:
$ ls -l |
Aşağıdakine benzer bir dize görmeniz gerekir:
-rw-r--r-- 1 tuser admin 0 Aug 13 15:35 example.txt |
Bir dizine ilişkin uzun bir listeyi okurken, ilk sütun dosya izinlerini
gösterir. Bu sütunda on karakter olduğuna (dokuz değil) dikkat edin. Birinci
karakter, çalışmakta olduğunuz dosyanın tipini belirtir. Tire işareti
(-
), örneğin bu dosyanın düzenli bir dosya olduğunu gösterir.
d
, bir dizin olduğunu, düz bir dosya olmadığını bildirir. Şimdilik, her
biri -
, r
, w
ya da x
karakterlerinden biri olan diğer dokuz karakter üzerinde yoğunlaşalım. Tüm izinleri
kapatılan bir dosya şöyle görünür:
---------- 1 tuser admin 0 Aug 13 15:35 example.txt |
Tüm izinleri açık olan bir dosya da aşağıdaki gibi olacaktır:
-rwxrwxrwx 1 tuser admin 0 Aug 13 15:35 example.txt |
Üç rwx
takımı görürsünüz. Önceden belirttiğim gibi üç farklı
kullanıcı kategorisi (kullanıcı, grup ve diğer) vardır. Bu rwx
takımlarının her biri kategorilerden birini gösterir:
- Birinci
rwx
,user
(kullanıcı) takımının izinlerini gösterir. Diğer bir deyişle, bu, dosyanın sahibinin dosyaya yapabileceklerini anlatır. - İkinci takım
group
(grup) takımı belirtir. Bu, grup üyelerinin dosya üzerinde yapabileceklerini gösterir. - Üçüncü takım,
other
(diğer) takımını belirtir. Bu da sistemdeki tüm kullanıcıların, sahibi kim olursa olsun, bir dosyaya ne yapabileceklerini gösterir.
example.txt dosyanızın geçerli izinlerine daha yakından bakalım:
-rw-r--r-- 1 tuser admin 0 Aug 13 15:35 example.txt |
Üç işaretten oluşan ilk takım, bu dosyanın sahibi olan kullanıcının dosyayı
okuyabileceğini ve dosyaya yazabileceğiniz, ancak yürütemeyeceğini belirtir (bir
r
ve w
kodu vardır, ancak x
yoktur). Üç
işaretlik ikinci takımdan, bu dosyaya sahip olan grubun bu dosyayı okuyabileceğini,
ancak dosyaya yazamayacağını ya da dosyayı yürütemeyeceğini görebilirsiniz (bir
r
kodu vardır, ancak bir w
ya da x
yoktur).
Üç işaretten oluşan üçüncü takım, tüm diğer kullanıcıların dosyayı
okuyabileceklerini, ancak dosyaya yazamayacaklarını ve dosyayı yürütemeyeceklerini
gösterir (bir r
kodu vardır, ancak w
ya da x
kodu yoktur). Buradan, ayrıntılı man
sayfalarının nerede önemli
olduğunu iyi bir şekilde görebilirsiniz. Aşağıdakini yazmak için biraz ara verin:
$ man chmod |
Şimdi, bu dosyada diğer kullanıcıların okumalarını istemediğiniz özel bilgilerin
olduğunu düşünün. Diğer gruplara ve tüm diğer kullanıcılara ilişkin okuma erişimini
kaldırmak isteyebilirsiniz. İzinleri değiştirmek için chmod
komutunu
kullanabilirsiniz. UNIX içindeki birçok şey gibi chmod
komutunu
kullanmanın birden çok yolu vardır; bu bölümde, bu yollardan biri üzerinde
durulmaktadır. Üç kategori (kullanıcı, grup ve diğer) üç harfle (u, g ve o)
gösterilmiştir. Üç izin tipi de (okuma, yazma ve yürütme) üç harfle (r, w ve x)
gösterilir. İzinleri değiştirmek için chmod
komutunun ardından
değiştirmek istediğiniz kategorilerin harflerini, bir artı ya da eksi işaretini
(açmak ya da kapatmak için) ve daha sonra değiştirmek istediğiniz izinlerle ilgili
harfleri kullanın. Bundan sonra, değişikliği yapmak istediğiniz dosyanın (ya da
dosyaların) adını yazın. Bunlar, aşağıdaki örnekte gösterilmiştir:
$ chmod og-r example.txt $ ls -l |
Aşağıdaki sonucu görmeniz gerekir:
-rw------- 1 tuser admin 0 Aug 13 15:35 example.txt |
Bu örnekte, diğer ve grup (o ve g) kullanıcılarını belirtirsiniz ve bu kategorilere ilişkin belirli izinleri kaldırmak istediğiniz gösteren bir eksi işareti kullanırsınız. Daha sonra, özellikle okuma erişimini kaldırdığınızı gösteren okuma (r) iznini kullandınız. Şimdi, sahip (tuser) dosyayı okumaya ve dosyaya yazmaya devam edebilir, ancak sistemdeki diğer tüm kullanıcılar (üst kullanıcı [superuser] dışında) dosyaya erişemez. Not: Üst kullanıcı (kök) tüm dosya izinlerini geçersiz kılabilir.
Birden çok dosyayla çalışma
Dizinlerin üzerinden geçmeyi ve tek dosyaları işlemeyi öğrendiniz. Bu eğitici yazının sonraki adımında, grup halindeki dosyalarla çalışmayı öğreneceksiniz. Neredeyse tüm UNIX komutları, tek tek dosyalara karşılık olarak dosya listelerini işleyebilir. Kullanmak istediğiniz her bir dosyanın adını açıkça yazarak ya da ortak bir ad özelliğine sahip tüm dosyaları kullanmak istediğinizi gösteren bir genel arama karakteri kullanarak dosya listelerini girebilirsiniz.
Birden çok dosyayla en yaygın çalışma yöntemi, genel arama karakterini
(*
) kullanmaktır. Herhangi bir karakterin ya da herhangi bir sayıdaki
karakterlerin yerine geçmesi için *
karakterini kullanarak bir dosya
listesi seçebilirsiniz. Açıklama amacıyla birkaç dosya daha oluşturmak için bu
komutları yazın:
$ cp example.txt example2.txt $ cp example.txt script.sh |
Şimdi, aşağıdakini yazın:
$ ls *.txt |
Şimdi, yalnızca .txt uzantılı dosyaları görmeniz gerekir. Daha sonra, aşağıdakini yazın:
$ ls exa* |
Yeniden iki örnek dosyası görmeniz gerekir, ancak script.sh dosyasını görmemelisiniz.
Birden çok dosyayla çalışabilen herhangi bir komut satırı uygulamasında genel arama karakteri kullanılabilir.
Dosyalarla çalışan birçok komut satırı uygulamasında -R
seçeneği
vardır. -R
kullanıldığında, uygulama özyineli olarak bir dizine
ve alt dizinlerine girer ve her bir dosyada istenen komutu gerçekleştirir. Örneğin,
ana dizininize geri dönebilir ve tüm TUTORIAL dizinini kopyalayabilirsiniz:
$ cd ~ $ cp -R TUTORIAL /tmp/. $ ls /tmp/TUTORIAL/ |
Şimdi, çeki düzen vermek için bu dizini kaldırın:
$ rm -R /tmp/TUTORIAL/ $ ls /tmp/ |
Tüm dizin, içindeki dosyalarla birlikte kaldırılır. Dikkatli olun: Özellikle
-R
ile genel arama karakterini kullanırken, planladığınızdan çok daha
fazla veriyi kolayca silebilirsiniz.
Arşivler ve sıkıştırma
Birçok günlük dosya işlemi, tek tek dosyalar, dizinler ve genel arama karakterleri kullanılarak tamamlanabilir; ancak, arşivlemeyi ve sıkıştırmayı nasıl kullanacağınızı öğrenmek, yedeklemeyle, dosya takımlarını diğer kullanıcıları iletmekle ilgilenen ya da yalnızca alandan tasarruf sağlamak isteyen kullanıcılar için önem taşır. Verileri arşivlemek ve sıkıştırmak amacıyla işletim sistemine bazı UNIX yardımcı programları yerleştirilmiştir.
Birden çok dosyayı tek bir dosyada (bir arşiv içinde) gruplamak için kullanılan
en yaygın yöntem tar
komutunu kullanmaktır. tar
,
Tape Archiver (Manyetik Bant Arşivleyicisi) sözcüklerinin kısaltmasıdır.
Köklerini yedekleme manyetik bantlarından alır; ancak günümüzde, genellikle diskler
arasındaki işlemlerde kullanılır. TUTORIAL dizininde şimdiye kadar yaptıklarınızı
arşivlemeyi deneyin:
$ cd ~ $ tar cvf /tmp/tutorial.tar TUTORIAL $ ls /tmp/ |
Şimdi, /tmp/ dizininde tutorial.tar adlı bir dosya görmeniz gerekir. Bu dosya,
hem TUTORIAL dizinini, hem de dizinin içindeki dosyaları içerir. Bu örnekte,
cvf
komut satırı seçenekleri kullanılmıştır:
c
,create
(oluştur) yerine kullanılır vetar
komutunun yeni bir arşiv oluşturacağını belirtir.v
, verbose sözcüğünün kısaltmasıdır vetar
komutunun arşive gönderilen her bir dosyanın listesini göstereceğini belirtir.f
, dosya anlamına gelir vetar
komutunun arşivi bir aygıt yerine bir dosyaya yazacağını belirtir.
Daha sonra, /tmp dizinine gidin ve arşivin içeriğini çıkarın:
$ cd /tmp/ $ ls $ tar cvf tutorial $ ls |
Birinci ls
komutunun tutorial.tar dosyasını gösterdiğine, ancak
TUTORIAL dizinini göstermediğine dikkat edin. tar
komutundan sonra
gelen ikinci ls
komutu, /tmp/ dizininde bir TUTORIAL dizininizin
olduğunu gösterir. Çeki düzen vermek amacıyla /tmp/TUTORIAL dizinini kaldırın:
$ rm -R /tmp/TUTORIAL |
Bir tar dosyası oluşturduktan sonra, bunu sıkıştırmak isteyebilirsiniz. Çoğu
UNIX dağıtımında çeşitli sıkıştırma seçenekleri vardır; ancak bu eğitici yazıda,
genel olarak tarball adı verilen bir şey oluşturmak için gzip
komutunun kullanımı üzerinde durulacaktır. Tarball, sıkıştırılmış bir tar
dosyasıdır. Devam edip tutorial.tar dosyasının sıkıştırılmış bir sürümünü oluşturun
ve bu dosyanın daha az yer kaplamasını sağlayın:
$ gzip tutorial.tar $ ls |
tutorial.tar arşivleriniz sıkıştırılır ve tutorial.tar.gz olarak yeniden adlandırılır. Bu, tarball dosyasıdır. Bu dosyanın sıkıştırmasını kaldırmak için aşağıdakileri yazın:
$ gzip -d tutorial.tar.gz |
Sonuçta sıkıştırılmamış özgün tar dosyanızı (tutorial.tar) elde edersiniz.
Dosya sistemi ve dosya büyüklükleri
Tek tek dosyalarla çalışmayı ve bunların büyüklüklerini ve içeriğini incelemeyi öğrenmek kolaydır. Aynı teknikleri, tüm dizinlerin ve dosya sisteminin içeriğini incelemek için de kullanabilirsiniz. UNIX'in birçok yeni sürümünde, bu bilgiler basit numaralandırma biçimlerinde, birimleri belirten harfler kullanılarak görüntülenebilir.
df
, Display Free (Boş Alanı Görüntüle) komutunun
kısaltmasıdır. df
komutunu basit bir şekilde yazarak; makinenizdeki her
bir dosya sisteminin disk alanı miktarıyla, kullanılan alan miktarıyla ve
kullanılabilir alan miktarıyla ilgili bilgileri alabilirsiniz. Varsayılan değer
olarak çoğu sistem, değerleri 512KB blokları şeklinde görüntüler ve bunların
okunması zordur. Bilgileri gigabayt cinsinden görüntülemek için -g
ya
da megabayt cinsinden görüntülemek için -m
parametresini kullanın. Bazı
sistemlerde, insan tarafından okunabilir anlamına gelen -h
seçeneği de vardır. Bu, df
komutunun G, M ve K gibi sonekler
kullanmasını ve her bir sayıyı üç ya da daha az basamakla görüntülemesini sağlar.
Aşağıdaki komutu yazın:
$ df -h |
Basit bir sunucuda aşağıdaki örneğe benzer bir çıkış görebilirsiniz:
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 7.9G 3.7G 3.9G 50% / none 3.9G 0 3.9G 0% /dev/shm /dev/sda3 24G 20G 1.9G 92% /export |
Sisteminizde df
için -h
seçeneği varsa, bunu
ls
ile birlikte de kullanabilir. Kolay okunabilir dosya büyüklükleri
olan ayrıntılı bir liste görmek için bu komutu yazın:
$ ls -lh |
du
, dosya büyüklüklerini denetlemek için üçüncü bir yöntemdir,
ancak dizin büyüklüklerini özetleme avantajı da vardır. Bazı sistemlerde
-h
seçeneğiyle de kullanılabilir; tersi durumunda, sonuçların 1024
baytlık bloklarda görüntülenmesini sağlayan -k
seçeneğini kullanın.
Sınamak istediğiniz dizinleri ve dosyaları belirtmek için -s
seçeneğini
ve bir dosya adı ya da genel arama karakteri de kullanabilirsiniz. Aşağıdaki komutu
deneyin:
$ cd ~ $ du -sk * $ du -sh * |
Bir ana dizinde aşağıdaki örneğe benzer bir çıkış görebilirsiniz:
$ du -sk * 316468 OLD 637940 MyData1 571788 Code 12356364 Build 3224480 Hardened $ du -sh * 310M OLD 623M MyData1 559M Code 12G Build 3.1G Hardened |
/dev
dizininde, başka öğelerin yanı sıra, sisteminizdeki disk
sürücülerine erişmek için kullanılan ve aygıt dosyaları adı verilen özel
dosyalar bulunur. /dev diziniyle ilgili daha fazla bilgi almak için df
komutunun çıkışına bir daha bakın. Bu çıkış her makinede farklıdır; ancak burada,
df
komutunun, bilgisayarınızdaki her bir dosya sistemine ilişkin
sonuçları gösterdiğine dikkat etmeniz önemlidir. Windows tabanlı bilgisayarlardan
farklı olarak, bağlanan her bir dosya sistemi, sağa eğik çizgiyle (/) gösterilen
sistem kökünden adreslenir. Bu, C, D, E, vb. sürücü harfleriyle diskleri ayıran
sistemlerden farklıdır.
UNIX'te, SCSI (ve SATA) diskleri genellikle /dev/sda, /dev/sdb, /dev/sdc, vb. aygıt adlarını kullanır. CD-ROM sürücüsü için aygıt adı olarak yaygın bir şekilde /dev/cdrom kullanılır. Bu aygıtlar, dizinlere bağlandıkları için, aygıt adı kullanılmadan bunlara erişilebilir. Sisteminizdeki aygıtların nasıl etiketlendiklerini öğrenmek için UNIX dağıtımınıza ilişkin belgelere bakın.
Herhangi bir aygıt, herhangi bir konuma (herhangi bir dizine) bağlanabilir.
Örneğin, CD-ROM'un /mnt/cdrom dizinine bağlanması yaygın görülen bir durumdur. Bazı
UNIX benzeri işletim sistemlerinde (birçok Linux ve Mac OS sürümünde olduğu gibi)
CD-ROM'lar otomatik olarak bağlanır, ancak mount
komutunu her iki
şekilde de öğrenmek yararlı olacaktır. Bir CD-ROM yerleştirin ve aşağıdaki komutları
yazın:
$ mount -t iso9660 /dev/cdrom /mnt/cdrom $ df $ ls /mnt/cdrom |
Not: Bu komutlar, yalnızca sisteminizde /dev/cdrom ve /mnt/cdrom
dizinleri varsa çalışır. Bu dizinler mevcutsa, df
komutunun çıkışında
CD-ROM'un, artık dosya sisteminizin parçası olduğunu görürsünüz. ls
komutu, az önce bağlanan CD-ROM sürücüsünün içeriğini göstermelidir.
Bir aygıtı çözmek için çoğu UNIX benzeri işletim sisteminde umount
komutu kullanılır. Sözdizimde, umount
komutunun ardından bağlama
noktası belirtilir. Önceki mount
komutunuz başarıyla tamamlandıysa,
aşağıdakileri yazın:
$ umount /mnt/cdrom $ df $ ls /mnt/cdrom |
Not: Çözme işleminin doğru biçimde gerçekleştirilmesi için bağlanan
dosya sistemi içinde olmamanız gerekir; tersi durumunda, sistem, dosya
sisteminin meşgul olduğunu bildirir. umount
komutu uygun
bir biçimde yürütüldükten sonra, df
komutu CD-ROM sürücüsünü dosya
sisteminde göstermez ve ls
komutunda, /mnt/cdrom dizininin artık boş
olduğu gösterilir (bağlanan hiçbir şey yoktur -- olağan bir dizin olmuştur).
Giriş ve çıkış
Giriş ve çıkış, genellikle basit standart terimlerle düşünülür: Klavye/fare
ve monitör/hoparlörler. UNIX'te, bir giriş ve çıkış akımı (ve bir hata akımı)
sistemine erişim, kullanıcıların ve geliştiricilerin giriş ve çıkışları verimli bir
şekilde uygulamalara ve uygulamalardan başka yerlere taşımalarına olanak verir ve
böylece insan müdahalesi en alt düzeye indirilerek karmaşık işlemlerin
hızlandırılması sağlanır. stdin
, stdout
ve
stderr
, UNIX'in komut dosyaları için ideal bir platform olmalarını
sağlayan önemli parçalardır.
Çoğu komut satırı uygulaması, girişi stdin
içinden alabilir ve
çıkışı stdout
'a yöneltebilir. stdin
, Standard Input
(Standart Giriş) anlamına gelir. stdout
, Standard Output
(Standart Çıkış) anlamındadır. Varsayılan değer olarak stdin
girişi,
klavyeden gelir (uçbiriminizde yazdıklarınız) ve stdout
çıkışı görüntü
biriminize gider (ekranınızda gördüğükleriniz). Bir ek stderr
çıkışı,
hataları yazdırır ve mesajlarda hata ayıklar; ancak, bu eğitici yazıda
stdin
ve stdout
üzerinde durulacaktır.
Yeniden yöneltme, kullanıcıların normalde stdout
'a gidecek olan
çıkışı başka bir hedefe (örneğin, bir dosyaya) göndermelerini sağlar. TUTORIAL dizin
listeniz için bir metin dosyası oluşturun:
$ cd ~/TUTORIAL $ ls > listing.txt $ ls |
Başka bir yeniden yöneltme yöntemi >>
karakterlerinin
kullanılmasıdır. Bu, yeni bir dosya oluşturmak yerine bir dosyanın sonuna eklenir.
stderr
'i 2>
ile bir dosyaya ya da tüm çıkışı
(stdin
ve stderr
), &>
ile bir dosyaya
yeniden yöneltebilirsiniz. Yeniden yöneltme biçimlerini birleştirebilirsiniz;
örneğin, stderr
'i bir dosyanın sonuna eklemek için
2>>
komutunu kullanın.
Artık içinde metin olan bir dosyanız olduğuna göre, dosyanın içine
bakabilirsiniz. Bir dosyanın içeriğini en hızlı biçimde cat
komutuyla
inceleyebilirsiniz; bu komut, Concatenate (Art Arda Ekle) sözcüğünün kısaltmasıdır;
metni art arda eklemek için yeniden yöneltmeyle birlikte kullanılabilir. Aşağıdaki komutu yazın:
$ cat listing.txt |
Eğitici yazıdaki tüm adımları gerçekleştirdiyseniz, aşağıdakine benzer bir sonuç görmelisiniz:
example.txt example2.txt listing.txt script.sh |
Önceki cat
komutu, göreceli olarak küçük bir dosyada yürütüldüğü
için tüm verileri tek bir sayfada görebilirsiniz. Tek bir sayfaya sığamayacak bir
dosyayı görüntülüyorsanız, genellikle more
komutu kullanılır; çıkışı,
stdout
içinde tam veri sayfasının her görüntülenişinde duraklatır. Ara
çubuğuna bastığınızda çıkış sonraki sayfaya ilerler. Örnekte kullanmak için daha
uzun bir dosya oluşturmayı deneyin:
$ ls /etc/ > listing2.txt $ cat listing2.txt $ more listing2.txt |
cat
komutunu kullanırsanız, dosya okunamayacak kadar hızlı kayar;
ancak, more
komutunu kullanırsanız, çıkışı adım adım ilerletmek için
ara çubuğuna basabilirsiniz.
Bir dosyanın ilk ya da son birkaç satırını hızla görüntülemek istiyorsanız,
head
ya da tail
komutunu kullanabilirsiniz. Bu komutlar,
genellikle komut dosyasının üst ya da bir günlük dosyasının alt kısmını görüntülemek
için kullanılır. Bu komutlar, kodda hata ayıklarken, çıkış dosyasının doğruluğunu
hızlı bir şekilde denetlemek için de oldukça kullanışlıdır. Aşağıdakileri yazmayı deneyin:
$ head listing2.txt |
İlk birkaç satır yerine bir dosyanın son birkaç satırını görüntülemek için
tail
komutunu sınamayı deneyin:
$ tail listing2.txt |
Her iki komut da varsayılan değer olarak 10 satırı görüntülemek üzere
ayarlanmıştır; ancak, istediğiniz sayıda satırın görüntülenmesi için -n
seçeneğini kullanabilirsiniz. Örneğin, aşağıdaki komutu yazabilirsiniz:
$ head -n 2 listing2.txt |
İçinde daha fazla veri içeren dosyalar oluşturmaya başladığınıza göre belirli
bir metni aramak isteyebilirsiniz. grep
, aşağıdaki örnekte kullanıldığı
gibi güçlü bir arama yardımcı olanağıdır:
$ grep host listing2.txt |
Bu komut, listing2.txt dosyasında host
dizisini içeren tüm
satırları görüntüler.
Dosya oluşturma adımını atlamak amacıyla bir komutun çıkışını başka bir komutta
giriş olarak kullanmak için pipe
(çubuk) karakterini (|
)
kullanabilirsiniz. Bu, başka bir yeniden yöneltme şeklidir ve uzun komut
listelerini, giriş ve çıkışı verimli bir şekilde yönetmek üzere bağlamak için
inanılmaz ölçüde güçlü bir araçtır. Aşağıdaki basit örneği deneyin:
$ ls /etc/ | grep host |
Bu komut, önceden listelenen iki adımlık işlemle aynı çıkışı verir. Tek satır,
ls
komutunun çıkışını alır ve grep
komutuna ilişkin arama
girişi olarak kullanır. Burada başka bir örneği görebilirsiniz:
$ du -sh /etc/* | more |
Bu durumda, her bir dosyaya ve /etc/ dizinine ilişkin disk kullanımını
(du
) denetlersiniz. Çıkış bir sayfadan daha fazladır; bu nedenle,
sonucu more
komutuna pipe
ile alarak, çıkışı, her
defasında bir sayfalık verinin görüntüleneceği şekilde duraklatmak yararlı
olacaktır.
Özet
Bu eğitici yazının üzerinden geçtikten sonra, komut satırından UNIX dosya sisteminde gezinmek ve dosyalarla ve dizinlerle çalışmak için temel bilgiye sahip olacaksınız. Bu metin boyunca gösterilen komutları denemeli ve ek bilgi almak istediğiniz öğelere ilişkin elkitabı sayfalarını incelemelisiniz.
Dizinin sonraki eğitici yazılarında, özel uygulamalar (vi
gibi)
ayrıntılarıyla ele alınacak ve kabukla ilgili incelikler ve ipuçları işlenecektir.
Bu arada, test kullanıcısıyla denemeler yapın; kısa sürede kendizini, komut satırı
seçenekleriyle, farenizle gösterip tıklatarak yapabileceğinizden çok daha hızlı bir
şekilde çalışırken bulabilirsiniz.
Bilgi Edinme
-
Yeni
kullanıcılar için UNIX'e ilişkin ipuçları ve incelikler: Bu dizinin diğer
bölümlerini inceleyin.
- Open Group: Bu siteden, UNIX ve UNIX
sertifikalarıyla ilgili daha fazla bilgi öğrenebilirsiniz.
- Linux.org: UNIX benzeri açık kaynaklı bir
işletim sistemi olan Linux ile ilgili daha fazla bilgi öğrenin.
-
UNIX'in
Windows XP ve Mac OS X ile çalışmasını sağlayın (developerWorks, Nisan 2006):
Bir UNIX sistemini çapraz platform ortamıyla bütünleştirin.
- FreeBSD.org: BSD işletim sistemleriyle
ilgili daha fazla bilgi almak için bu siteyi ziyaret edin.
- Linux Journal: Linux gelişmelerini
izleyin.
- AIX ve UNIX: UNIX
becerilerinizi geliştirmek için developerWorks AIX ve UNIX bölgesini ziyaret edin.
- AIX ve UNIX'te yeni
olanlar: AIX ve UNIX ile ilgili daha fazla bilgi almak için New to AIX and UNIX
(AIX ve UNIX'te yeni olanlar) sayfasını ziyaret edin.
-
developerWorks
teknik olaylar ve web yayınları: Güncel developerWorks teknik olaylarını ve web
yayınlarını izleyin.
-
AIX 5L
Wiki: AIX ile ilgili teknik bilgilere ilişkin bir işbirliği ortamı.
- Podcasts: İlgili ayarları yapın ve IBM teknik uzmanlarının bilgilerine ulaşın.
Ürün ve teknoloji edinme
-
IBM
deneme yazılımı: developerWorks'deki yazılımı doğrudan yükleyerek bir sonraki
geliştirme projenizi oluşturun.
Tartışma
- AIX ve UNIX forumlarına katılın:
- AIX 5L -- teknik
- Geliştiriciler için AIX Forumu
- Küme Sistemleri Yönetimi
- IBM Destek Yardımcısı
- Başarım Araçları -- teknik
- Sanallaştırma -- teknik
- Diğer AIX ve UNIX forumları
- developerWorks bloglarına ve developerWorks topluluğuna katılın.
Tim McIntire, HPCC yazılımları, desteği ve danışmanlığı konularında bir pazar lideri olan Cluster Corporation'ın danışmanı ve kurucu ortaklarındandır. Zaman zaman IBM developerWorks ve Apple Developer Connection'a da katkıda bulunmaktadır. Tim McIntire'ın Scripps Institution of Oceanography's Digital Image Analysis Lab'daki bilgisayar bilimleri çalışmasını yönetirken yürüttüğü araştırması, Concurrency and Computation ve IEEE Transactions on Geoscience and Remote Sensing gibi çeşitli dergilerde yayınlanmıştır. Ek bilgi için TimMcIntire.net adresini ziyaret edebilirsiniz. |
Bu yazının da işe yarayacagından hiç şüpem yok.