Yeni kullanıcılar için UNIX ipuçları ve incelikler, Bölüm 1

0
butch
IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

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.

Bu dizi hakkında

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.



Bu eğitici yazı hakkında

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.



Amaçlar

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.


Önkoşullar

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.



Sistem gereksinimleri

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.

man

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.

ls

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.



cd

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



Özel dizin adları

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 ~ 



pwd

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, rmdir

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



Dizin düzeni

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.

touch

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

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.



mv

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.



rm

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.

chown, chgrp

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



chmod

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.

Genel arama karakterleri

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.



Özyineleme

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.

tar

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



gzip

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

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



ls -lh

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

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

/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.



mount

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.



umount

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.

stdin, stdout

Ç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

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.



cat

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 



more

Ö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.



head ve tail

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 



grep

İç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.



pipe

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.


Kaynaklar

Bilgi Edinme

Ü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


Yazar hakkında

Tim McIntire'ın
	fotoğrafı

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.

Görüşler

0
Tugba
Çok faydalı bir şey bu. Unix üzerine döküman ve kitap okumak, Linux hakkında bir şeyler öğrenmede çok işe yarıyor.

Bu yazının da işe yarayacagından hiç şüpem yok.
0
Satanique
Katılıyorum faydalı olur efendim...
0
cbc
ufak bir ipucu. icerisinde * kullandiginiz komutlari calistirmadan once basina "echo" ekleyin. boylece * in neler olarak acildigini gorursunuz.
0
Satanique
Size katılıyorum. Yerinde olur.
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Linux çalıştıran bilgisayarınızın performansını müzikal olarak gözetleyin

butch

Emre Sevinç tarafından dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

Geniş bir Linux kümesinin kurulması, Bölüm 1: Giriş ve Donanım Konfigürasyonu

tongucyumruk

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

GTK+ ile ilgili temel bilgiler, Bölüm 2: GTK+ nasıl kullanılır?

butch

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

Ajax ve XML: Beş adet çok iyi Ajax pencere bileşeni

tongucyumruk

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.

UNIX Dilinde Konuşma, Bölüm 5: Veriler, veriler her yerde!

butch

IBM Türkiye ve Fazlamesai.net işbirliği ile dilimize kazandırılan yeni bir IBM developerWorks makalesi ile karşınızdayız. Diğer makalelere buradan ulaşabilirsiniz.

Makalenin özgün haline bu adresten ulaşabilirsiniz.