Düzey: Orta
Martin Streicher
(martin.streicher@linux-mag.com),
Şef Editör, Linux Magazine
08 Ağustos 2006
UNIX® kabuğunun sağladığı birçok kısayoldan nasıl yararlanacağınızı
öğrenin. Birkaç alıştırmayla, daha çok değil, daha akıllı çalışacaksınız.
Beceri gerektiren her işin kendi sırları vardır -- bunlar, en
karmaşık görevi bile kolaylaştıran küçük incelikler, teknikler ve araçlardır.
Örneğin, komşum usta bir marangoz. Çıplak gözle açıları büyük bir doğrulukla ölçüp aktarabiliyor,
köşeleri kesintisiz olarak birleştirebiliyor ve işçiliği yerel gazetelerde beğeni
topladı.
Ancak, daha da önemlisi (en azından - işi bilmeyen ve her an başına
bir kaza gelebilecek bir kişi olarak - benim için) komşumun çalışmasındaki
rahatlık. İşinde geçirdiği 20 yıldan sonra, ustalaşmadığı hiçbir kısayol yok. Kısayollar
buradan biraz zaman, şuradan biraz işçilik tasarrufu yapılmasını sağlar. Kesim,
çivilerin çakılması ve çerçevenin oluşturulması gibi tekrarlanan görevlerde, bu
küçük tasarruflar gerçekten de fark yaratır.
Programcıların, sistem yöneticilerinin ve UNIX® ile profesyonel olarak
uğraşan diğer bilgisayar çalışanlarının kendi özel araçları
vardır:
- CPU'lar
- RAM
- İşletim sistemleri
- Uygulamalar
- Kabuk
Deneyimli bir marangoz gibi birkaç inceliği bilerek ve birkaç aracı
kullanarak büyük miktarda zaman ve çabadan tasarruf edilebilir.
UNIX
Dilinde Konuşma dizisinin ilk yazısında UNIX komut satırının gücünü tanıtmıştık.
Bu makalede, kabuk komut istemindeki ustalığınızı artıracak bazı işe yarar kabuk
kısayolları gösterilecektir.
Parmaklarınızı
yormayın, biraz dinlendirin
Bölüm
1'de gösterildiği gibi UNIX komut satırının gücü benzersizdir. Birkaç tuşla ve
biraz sözdizimsel birleştirici (glue) ile (dikey çubukları (|),
tee ve yeniden yönlendirme dahil), her bir kabuk komut isteminde kendi
doğaçlama veri dönüştürmelerinizi oluşturabilirsiniz.
Örneğin, aşağıdaki komut, ana dizininizdeki, Aylık Rapor
sözcüklerini içeren tüm metin belgelerini bulur:
$ find /home/joe -type f -name '*.txt' -print | xargs grep -l "Aylık Rapor"
|
Komut, .txt sonekli tüm düzenli dosyaları bulmak için
(-type f ) tüm ana dizininizde (find /home/joe ) arama yapar
ve daha sonra, Aylık Rapor dizesini aramak için grep
komutunu çalıştırır. -l seçeneği, bir eşleşme bulunursa dosyanın adını
yazdırır. Bu nedenle, komutun çıkışı eşleşen dosyaların bir listesidir.
Yukarıdaki komut oldukça yararlıdır; bununla birlikte, komutu
hatırlamak ve düzenli kullanıyorsanız, yeniden yazmak güçtür. Dahası, e-posta,
dosyalar, araçlar (düzenleyiciler, derleyiciler, izleme programları gibi) ve uzak
sistemler için birincil arabiriminiz komut satırı olduğunda, komut satırında
tasarruf edebileceğiniz her an ve her çaba, yapmakta olduğunuz görevde daha iyi bir
şekilde harcanabilir. Sonuçta, bir saniyenin bin küçük parçası da toplamda fark
yaratır.
Yinelenen görevleri azaltmak için UNIX kabuğu çeşitli yardımcı
kısayollar sağlar:
- İşaretler
- Genel arama karakterleri
- Komut geçmişi
- Ortam değişkenleri
- Diğer adlar
- Başlangıç dosyaları
Örneğin, ana dizininizi ~ (tilde) işaretiyle
belirtebilirsiniz. Liste 1 içinde gösterilen şekilde
$HOME ortam değişkenini kullanarak ana dizininize de başvurabilirsiniz.
Liste 1. UNIX kabuğu kısayolları
$ whoami
strike
$ echo ~
/Users/strike
$ echo $HOME
/Users/strike
$ !!
echo $HOME
/Users/strike
|
Son komut olan !! (iki ünlem işareti) biraz garip
görünebilir, ancak bu, önceki komutu harfi harfine yineleyen bir komut geçmişi
işaretidir. (Birçok kabuk yukarı ok tuşunu kullanarak ya da Control+P tuşlarına
basarak önceki komutlara göz atmanıza olanak tanır.)
Her bir kabuk kısayolu türüne daha ayrıntılı bir şekilde bakalım. Bu
makale, genellikle /bin/zsh dizinine kurulan Z kabuğuna dayanır (zsh --
bkz. Kaynaklar). (Sisteminizde Z kabuğu yoksa,
sistem yöneticinizden kabuğu kurmasını isteyin.) Z kabuğuna özgü birkaç özellik
vardır; bunlar dışında, burada gösterilen tüm örnekler tüm modern UNIX kabuklarında
çalışır.
Kabuk işaretleri
Birçok komut satırı bağımsız değişkeni o kadar sık kullanılır ki,
kabuklar kısaltma olarak birtakım işaretler (sigils) ya da simgeler sağlar.
Bağımsız değişken yerine işareti girmeniz yeterlidir.
Yukarıda belirtildiği gibi ~ , ana dizinizi belirtir.
Benzer bir kısayol olan ~username , kullanıcı adınızın ana
dizinini belirtir. Örneğin, ~joe , joe'nun ana dizinini belirtir.
Dolayısıyla, joe'nun doc dizininden kendi info dizininize bir dosya kopyalamak için
aşağıdaki komutu yazabilirsiniz:
$ cp ~joe/doc/report.txt ~/info
|
Joe'nun ana dizinin /guests dizininde ve sizin ana dizininizin
/staff/bobr dizininde olduğunu düşünürsek, ~joe , /guests/joe ile
değiştirilir ve ~ karakteri, /staff/bobr olarak sonuçta cp
/guests/joe/doc/report.txt /staff/bobr/info komutunu oluşturur. (Komut
satırının nasıl önizleneceğine ilişkin bilgileri görüntülemek için kenar çubuğunda
"Çalışmanızın sağlamasını yapma" konusuna bakın.)
Komut satırı işaretlerinin açılımlarını görmek
istiyorsanız echo komutunu kullanın:
$ echo ~joe/doc/report.txt ~/info
/guests/joe/doc/report.txt /staff/bobr/info
$ echo $SHELL
/bin/zsh
$ ls
architecture.txt Services.pdf
services.txt Schema.pdf
$ echo *.txt
architecture.txt services.txt
|
echo komutu, komut satırına yazdıklarınızı
gösterir. Ancak, kabuk herhangi bir programı çağırmadan önce (çoğu) komut satırı
bağımsız değişkenini açtığından, tüm ikame karakterlerinden de sonuçlarını
gösterir. (Kabuk ortamı değişkeni $SHELL , çalışmakta olan kabuğun adını
içerir.)
|
|
Başka bir değerli işaret de, geçerli dizinin hemen üstündeki dizin için
kısayol olan .. (iki nokta) işaretidir. .. ve geçerli
çalışma dizinine ilişkin işaret olan . işaretiyle, dosya sistemindeki
dosyalara ve dizinleri geçerli çalışma dizininize göre belirtebilirsiniz.
Örneğin, geçerli çalışma dizininiz ~/jane/projects/lambda diziniyse,
../.. kısayolu iki üst dizin ya da ~/jane dizinini belirtir.
~/jane dizinini içeren dizine başvuruda bulunmak için ../../../ ("üç
dizin yukarı") ya da ~jane/../ yolunu kullanabilirsiniz. İkinci yol,
~jane dizininden başlanacağını ve bir dizin yukarı çıkılacağını belirtir.
Geçerli dizininize bir dosya kopyalamak için dosyanın adını
belirtmenize gerek yoktur; dosyayı yalnızca . ("nokta") ile belirtebilirsiniz:
$ cp -pr /path/to/lots/of/stuff .
|
Önceki komut özyinelemeli olarak /path/to/lots/of/stuff dizinini
geçerli dizininize kopyalarken özgün tarih ve saat damgalarını da korur.
.. ve . karakterlerinin belirttiği yol adlarına
göreli yol adları denir. Bir / (sağa eğik çizgi) ya da bir ~ (tilde)
karakteriyle başlayan yol adları mutlak yol adlarıdır; bunun nedeni, dosyaya
dosya sisteminin ya da bir dizin hiyerarşisinin en üstünden başvuruda
bulunmanızdır.
Genel arama
karakterleri ve kalıplar
İşaretlerle yazma süresini azaltır ve belirli bir dizini hızlı ve kesin
olarak belirtebilirsiniz. Genel arama karakterleri, bir dizinin
içeriğine başvuruda bulunmak için kullanılan başka bir kısayol biçimidir.
Örneğin, bir dizininizin içinde 100 dosyanın bulunduğunu varsayın.
Bunlardan bazıları .c sonekiyle biten C kaynak kodu dosyaları, diğerleri,
.o sonekiyle biten nesne dosyaları ve bir kısmı da metin belgeleri
(.txt), komut dosyaları (.sh) ve yürütülebilir dosyalardır (yürütme
izni olan dosyalar). Yalnızca C dosyalarını listelemek için aşağıdakini
yazın:
* genel arama karakteri (genellikle asterisk yerine
yıldız denir), herhangi bir karakter dizisini eşleştir anlamına
gelir. .c dosya adı uzantısı, yalnızca bir nokta işaretini izleyen
küçük c harfiyle eşleşen tam bir kalıptır. Bu nedenle, *.c ,
bir nokta ve küçük c harfi ile biten herhangi bir karakter dizisi anlamına
gelir. *.c belirtildiğinde, kabuk geçerli dizine (önünde bir mutlak ya
da göreli yol adı belirtmezseniz) bakar, kalıpla eşleşen her dosya adını bulur,
*.c 'yi ad listesine genişletir ve listeyi ls
komutunun bağımsız değişkenleri olarak geçirir.
Liste 2'de komut satırı karşıdan yükleme
yardımcı programı olan wget kaynak koduna dayalı *.c
kullanımı gösterilmektedir.
Z kabuğunda birkaç tane benzersiz ve harika glob işleci
vardır. Göze çarpan birkaç tanesi şunlardır:
**/ glob işleci, aşağıdaki tüm dizinleri
açar ve geçerli çalışma dizinini içerir. **/ işlecini, yerleşik
find komutu olarak düşünebilirsiniz. Yeniden wget kaynak
koduna bakarsak, komutla tüm Makefile'ları bulabilirsiniz:
$ echo **/Makefile
Makefile doc/Makefile po/Makefile
src/Makefile util/Makefile
windows/Makefile
|
Geçerli çalışma dizinini içermek istemiyorsanız,
aşağıdaki örnekte gösterilen şekilde yalnızca */**/ yazın:
$ echo */**/Makefile
doc/Makefile po/Makefile
src/Makefile util/Makefile
windows/Makefile
|
Başka bir yararlı Z kabuğu glob işleci, dosya
tiplerini eşleştirir. Önceki gibi bir kalıp sağlayın, ancak düzenli dosyalar
için (.) , dizinler için (/) , yürütülebilir dosyalar için
(*) ya da simgesel bağlantılar için (@) karakterini
ekleyin:
$ ls -d -F *(/)
ChangeLog-branches/ doc/ po/ src/ util/ windows/
|
Z kabuğu, (/) ifadesi için de bir kısayol sağlar.
Sonuçları dizinlerle sınırlandırmak için kalıbı bir sağa eğik çizgiyle sona
erdirin:
$ ls -d */
ChangeLog-branches/ doc/ po/ src/ util/ windows/
|
|
|
Liste 2. Bir dizindeki C kaynak kodu
dosyalarını bulmak için genel arama karakterlerini kullanın
$ ls *.c
alloca.c
ansi2knr.c
cmpt.c
connect.c
convert.c
...
|
Bir genel arama karakterini eşleşen dosya adları listesine genişletme
işlemine globbing denir ve UNIX kabuklarının, aradığınız şeyi ifade etmenize
yardımcı olacak çeşitli globbing işleçleri (sözde glob'lar) vardır:
* (yıldız) glob'u, herhangi bir karakter ya da boş bir
sırayı da içeren karakter sırasını eşleştirir.
? (soru işareti) glob'u herhangi bir tek karakteri
eşleştirir.
[ ] (köşeli parantez) glob'u önü ve arkası kapatılmış
karakterleri eşleştirir. Parantez içinde - (tire) işaretini kullanarak
bir karakter aralığını belirtebilirsiniz; örneğin, [a-z] ya da tüm
küçük harfler.
(Z kabuğu benzersiz birçok glob işlecine sahiptir. Ek bilgi için kenar
çubuğunda Z kabuğu glob'larına bakın.)
Gerektiğinde glob işleçlerini yineleyebilirsiniz.
Liste 3 içinde ek örnekler sağlanmıştır.
Liste 3. Genel arama karakteri örnekleri
1 $ ls -1 -a -F
./libs
ChangeLog
ChangeLog-branches/
Makefile
Makefile.in
alloca.c
ansi2knr.c
cmpt.c
cmpt.o
config.h
config.h.in
connect.c
connect.h
connect.o
convert.c
convert.h
convert.o
...
wget*
2 $ ls -a -F .*
./lib
3 $ ls -1 *.?
alloca.c
ansi2knr.c
cmpt.c
cmpt.o
config.h
connect.c
connect.h
connect.o
convert.c
convert.h
convert.o
...
4 $ ls -1 ????.?
cmpt.c
cmpt.o
5 $ ls [a-c]?*.*
alloca.c
ansi2knr.c
cmpt.c
cmpt.o
config.h
config.h.in
connect.c
connect.h
connect.o
convert.c
convert.h
convert.o
cookies.c
cookies.h
cookies.o
|
Liste 3 içinde Komut 1, uzun bir listede . (nokta)
ile başlayan girişlerin de içinde bulunduğu dizindeki tüm girişleri gösterir.
(-a seçeneği, sözde nokta dosyalarını gösterir; -1
seçeneği, bir sütundaki her şeyi listeler ve -F seçeneği, dizinleri /
(sağa eğik çizgi) ile ve yürütülebilir dosyaları * (yıldız) işareti ile vurgular.)
Komut 2, adı bir nokta ile başlayan (.*) her bir girişi bulur. Üçüncü
komut yalnızca soneki bir harften oluşan öğeleri bulur.
Dördüncü komut yalnızca dört karakterin ardından bir nokta ve bir
karakterin geldiği öğeleri bulur. Son olarak Komut 5, küçük a, küçük b
ya da küçük c ile başlayan ve ardından sırasıyla en az bir harf, herhangi bir
karakter, bir nokta ve daha sonra herhangi bir sonek gelen öğeleri bulur.
Görebileceğiniz gibi gerektiğinde glob işleçlerini yineleyebilirsiniz.
Dolayısıyla, ls *.z komutu hangi sonuçları getirirdi
(böyle dosyaların olmadığını düşünürsek)? Yararlı bir hata iletisi görüntülenirdi:
$ ls *.z
zsh: no matches found: *.z
|
Biraz komut geçmişi
Şimdiye kadar yolları nasıl belirteceğinizi ve dosyaları nasıl
seçeceğinizi gördünüz. Komut satırında kendinizi ifade edebilirsiniz. Ancak, tüm
komut satırları kısa ve güzel olsa bile, aynı şeyi sürekli olarak yeniden yazmaktan
yorulma olasılığınız yine de vardır. Özellikle, birçok seçeneğin bulunduğu ya da
değişkenlerin sırasının belirli bir şekilde olması gereken uzun, karmaşık komut
satırları yazmaktan yorulabilirsiniz. Neyse ki çoğu kabuk, önceki komutlara ilişkin
bir geçmiş sağlar. Bir komutu yeniden çalıştırmak için yalnızca geçmiş
listesindeki girişini bulun ve yeniden çalıştırın. Kabuğun diğer kısımları gibi
kısayollar burada da hızlı ve kolay başvurular yapmanızı sağlar.
Z kabuğunda komut geçmişini etkinleştirmek için aşağıdakileri yazın:
$ HISTSIZE=500
$ SAVEHIST=500
|
Burada komutlar, hem kabuğun hem de devam eden geçmiş dosyasının son
500 komutu içermesi gerektiğini belirtir. (Varsayılan değer olarak Z kabuğu yalnızca
son 30 komutu kaydeder.) Komut geçmişlerini almaya ve devam ettirmeye ilişkin
bilgiler için kabuğunuzun belgelerine bakın.
Kabukla bir süre çalıştıktan sonra yalnızca history
yazarak komut geçmişinizi görüntüleyebilirsiniz:
$ history
...
781 /bin/ls -d */
782 /bin/ls -F *(/)
783 /bin/ls -d -F *(/)
784 /bin/ls -d -F */
785 /bin/ls -d */
|
Çalıştırdığınız her bir komuta sıralı bir sayısal tanıtıcı atanır. Bir
komutun tamamına ya da her bir komutun parçalarına başvurmak için bu tanıtıcıyı
(örneğin, 782) kullanırsınız. Bir komutun aynısını yeniden çalıştırmak için
! (ünlem işareti) karakterini ve ardından komutun numarasını yazın:
$ !785
ChangeLog-branches/ doc/ po/ src/ util/ windows/
|
Geçmişte girilmiş bir komuttaki belirli bir bağımsız değişkeni istiyorsanız,
komuta bir ! (ünlem işareti) ile başvurun ve :N değerini sağlayın; burada
0 komut adını, 1 ilk bağımsız değişkeni, vb. belirtir. Örneğin, geçmiş
günlüğündeki 782 numaralı komutun ikinci bağımsız değişkenini ayıklamak için
Liste 4 içinde gösterilen kodu yazın.
Liste 4. 782 numaralı komuttan ikinci
bağımsız değişkenin ayıklanması
$ echo !782:2
echo *(/)
ChangeLog-branches doc po src util windows
$ ls AUTHORS COPYING INSTALL MACHINES
AUTHORS COPYING INSTALL MACHINES
$ echo !!:3
echo INSTALL
$ history -2
788 ls AUTHORS COPYING INSTALL MACHINES
789 echo INSTALL
$ echo !788^
echo AUTHORS
AUTHORS
$ echo !788$
echo MACHINES
MACHINES
|
history -2 komutu, önceki iki komutu görüntüler. Kısayol
olarak bir komutun ilk bağımsız değişkenine (komut adının kendisine değil)
^ (şapka) ve geçmişte girilen bir komutunun son bağımsız değişkenine
$ (dolar işareti) karakteri ile başvurabilirsiniz. Bir bağımsız
değişken aralığına, Liste 5 içinde gösterilen bir aralık
gösterimini kullanarak da başvurabilirsiniz.
Liste 5. Aralık gösterimi
$ echo AUTHORS COPYING INSTALL MACHINES
AUTHORS COPYING INSTALL MACHINES
$ echo !!:1-2
echo AUTHORS COPYING
AUTHORS COPYING
|
Geçmişteki komutları geri çağırmak için başka doğrudan yöntemler de
vardır. Bunlardan biri komutu aramaktır:
$ ls I*
$ ls M*
$ echo !?M
ls INSTALL
|
!?M yapısı, bir büyük M harfi içeren en son geçmiş
komut satırını arar.
Ortam
değişkenleri
Komut satırını akıcı bir şekilde kullanmak önemli bir UNIX
becerisidir. UNIX dilini konuşma kabuk isteminde bitmez -- sayısız UNIX yardımcı
programıyla da iletişim kurmanız gerekir. UNIX'te, ortam değişkenleri kabuğunuzun
ayarlarını tutar ve komut satırından başlattığınız her bir yardımcı programın
tercihlerinizle başlatılmasına olanak tanır.
Bazı ortam değişkenleri (bunlara kabuk değişkenleri denir),
davranışını denetlemek için yalnızca kabuğunuz tarafından kullanılır. Örneğin, Z
kabuğu yukarıda gösterildiği gibi komut geçmişlerini yönetmek için
$HISTSIZE ve $SAVEHIST değişkenlerini kullanır. Kabuk
değişkenlerini ayarlar gibi düşünebilirsiniz.
Diğer ortam değişkenleri dışa aktarılır ya da genel olarak
kullanılabilir kılınır ve komut satırından başlattığınız her komutun işlem alanına
(ortam) kopyalanır. Örneğin, $HOME , ana dizininizin konum
bilgilerini saklayan özel bir ortam değişkenidir. UNIX oturum açma sırası,
$HOME değişkenini (ve diğer ortam değişkenlerini) ayarlar ve daha
sonra, kabuğunuzu başlatır. Kabuğunuz da tüm kabuk başlatma dosyalarını bulmak için
$HOME değişkenini kullanır. SSH ve FTP gibi başlattığınız diğer
uygulamalar, .netrc dosyanızı (gizli, uzaktan erişim parolalarını saklamak için
kullanılır) bulmak için $HOME değişkenine başvurur. Bazı ortam
değişkenlerini -- $HOME , $PATH ve $SHELL gibi
-- her uygulama kullanır. Diğer ortam değişkenleri bir uygulamaya özel olabilir.
Geçerli tüm ortam değişkenlerinizi görmek için Liste
6'da gösterilen şekilde printenv yazın. (Sistem yöneticinizin
sisteminizi yapılandırmasına bağlı olarak burada gösterilenlerden çok daha fazla ya
da çok daha az ortam değişkeniniz olabilir.)
Liste 6. Ortam değişkenlerinin görüntülenmesi
$ printenv
PATH=/Users/strike/bin:/Applications/xampp/xamppfiles/bin:/Users/strike/bin:/usr/bin:/
bin:/usr/sbin:/sbin
HOME=/Users/strike
SHELL=/bin/zsh
USER=strike
TERM=xterm-color
LOGNAME=strike
SHLVL=1
PWD=/Local/src/versions/wget/wget-1.9
OLDPWD=/Local/src/versions/wget/wget-1.9/src
PERL5LIB=/Applications/xampp/xamppfiles/lib/perl5/site_perl/5.8.7:/Projects/IGSP/src
CLICOLOR=true
MANPATH=/Local/root/share/man:/usr/share/man:/opt/local/share/man
INFOPATH=/opt/local/share/info
LESS=-n
|
Bu değişkenlerin birçoğunu tanıyabilirsiniz; diğerleri yeni olabilir.
Kabuk düzeyi ($SHLVL ), kaç kabuk derinde olduğunuzu gösterir. 1
bir oturum açma kabuğunu; 2 oturum açma kabuğunuzdan başka bir kabuk
başlattığınızı gösterir, vb. Her bir ardışık, iç içe geçmiş kabuğa ilişkin
isteminizi değiştirmek için $SHLVL değerini kullanabilirsiniz.
$TERM , uçbirim (uçbirim öykünme programı olabilir) ayarlarınızı
gösterir -- basılan tuşların doğru yorumlanmasının yanı sıra metin ve renklerin
doğru biçimde görüntülenmesini sağlama açısından önemlidir. $PWD
geçerli çalışma dizininiz, $OLDPWD ise önceki çalışma dizininizdir. İki
dizin arasında hızlı bir şekilde ileri ve geri gitmek için her iki değişkeni de
Liste 7'de gösterildiği gibi kullanabilirsiniz.
Liste 7. Dizinler arasında geçiş yapma
$ echo $PWD
/Users/strike
$ echo $OLDPWD
/Local/src/versions/wget/wget-1.9
$ cd $OLDPWD
$ echo $PWD
/Local/src/versions/wget/wget-1.9
$ echo $OLDPWD
/Users/strike
|
Yukarıdaki listede yer alan diğer ortam değişkenleri uygulamaya
özgüdür. Her biri, ilişkilendirildikleri uygulama başlatıldığında nasıl çalışacağını
denetleyen tercihleri içerir. $PERL5LIB , Perl'ün özel kitaplıkları
bulması için kullanılan bir arama yoludur. ls komutu,
$CLICOLOR değişkenini dosya tiplerini renkli (dizinleri mavi,
yürütülebilir dosyaları yeşil, vb.) görüntülemek için kullanır. Özel uygulama ortam
değişkenleri, genellikle programın "man" sayfalarında bulunur.
Bir ortam değişkeninin ayarlanması, kabuk değişkeninin ayarlanmasıyla
aynıdır. Ancak, değişkeni genel olarak kullanılabilir kılmak için dışa aktarmanız
gerekir:
$ MYVARIABLE=$HOME/projectX
$ export TMPDIR=/tmp/projectX
|
Birinci komut $MYVARIABLE adlı bir kabuk değişkeni
ayarlar. (Önündeki dolar işareti kabuk komut istemidir. Bir değişken
ayarladığınızda, $ işaretini sağlamazsınız. Ancak, $MYVARIABLE
değişkeninde olduğu gibi, değişkeni kullanırken dolar işaretini de kullanmanız
gerekir.) $MYVARIABLE , dışa aktarılmadığı için yalnızca kabukta
görünür. Tüm kabuk değişkenlerinin bir listesini görmek için set yazın.
set komutunun çıkışı, ortam değişkenlerini içerir. Bunun nedeni, bu
değişkenlerin kabukta da kullanılabilir olmasıdır.
İkinci komutta, $TMPDIR ayarlanır, dışa aktarılır ve
kabuktan başlatılan tüm uygulamalar için kullanılabilir kılınır.
$TMPDIR değişkenini kullanan bir uygulama, GNU Compiler Collection
(GCC) derleyicisidir. GCC, $TMPDIR değişkeninde saklanan dizin
değerinde geçici dosyalarını oluşturur.
Bir ortam değişkenini kaldırmak istiyorsanız, Liste
8'de gösterildiği gibi unset ve değişkenlerin adını yazın.
Liste 8. Bir ortam değişkeninin kaldırılması
$ set
HOME=/Users/strike
MYVARIABLE=/Users/strike/projectX
TMPDIR=/tmp/projectX
...
$ unset MYVARIABLE TMPDIR
$ set
HOME=/Users/strike
....
|
Diğer adlar ve
başlangıç dosyaları
Önceki bölümlere bakıp komut satırına ne kadar çok giriş yapmanız
gerektiği konusunda endişelenmiş olabilirsiniz. Evet, öğrenilecek çok şey var -- bunun
nedeni, kabuk ortamının çok zengin olmasıdır. Ancak yine de büyük gücün büyük
bir üretkenlik sağlayacağını unutmayın.
UNIX kabukları, basılan tuş sayısını azaltmak için diğer adlar ve
yaptığınız tüm ayarları saklamak için başlatma dosyaları sağlar. Diğer adlar,
oluşturduğunuz kısayollardır. Başlatma dosyaları, kabuğunuz her
başlatıldığında okunur ve kabuk değişkenleri (seçenekler), ortam değişkenleri ve
diğer adlar gibi tüm kabuk ayarlarınızı saklamak (ve paylaşmak) için en uygun
yerdir.
Diğer ad, daha uzun bir komut yerine kullandığınız kısa bir karakter
dizisidir. Diğer adı, bir komut satırının takma adı olarak düşünebilirsiniz.
Aşağıdakini yazmak yerine:
$ find /home/joe -type f -name '*.txt' -print | xargs grep -l "Aylık Rapor"
|
komut istemine, oluşturduğunuz bir takma adı yazabilirsiniz:
findreports diğer adını açılımıyla değiştirerek ağır işi
kabuk yapar. findreports diğer adını oluşturmak için aşağıdaki komutu
yazın:
alias findreports='find $HOME -type f -name "*.txt" -print |
xargs grep -l "Aylık Rapor"
|
Her bir diğer ad, tek tırnak işaretleri içine yerleştirilmelidir. Diğer
adın içinde tırnak işaretlerinin bulunması gerekiyorsa, çift tırnak işaretlerini
kullanın. Z kabuğu diğer adları, değişkenler, dikey çubuklar, yeniden yönlendirme,
diğer adlar ve diğer kabuk işlenenleri gibi birçok temel kabuk öğesini içerebilir
(bkz. Liste 9).
Liste 9. Z kabuğunun temel öğeleri
$ alias ll='/bin/ls -l'
$ ll -d 2002*
drwxrwxr-x 2 www-data www-data 4096 Jan 16 2002 2002-02
drwxrwxr-x 2 www-data www-data 4096 Jan 22 2002 2002-03
drwxrwxr-x 2 www-data www-data 4096 Apr 15 2002 2002-04
drwxrwxr-x 2 www-data www-data 4096 Apr 19 2002 2002-05
...
$ alias lt='ll -t'
$ lt -d 2002*
drwxrwxr-x 2 www-data www-data 4096 Apr 19 2002 2002-05
drwxrwxr-x 2 www-data www-data 4096 Apr 15 2002 2002-04
drwxrwxr-x 2 www-data www-data 4096 Jan 22 2002 2002-03
drwxrwxr-x 2 www-data www-data 4096 Jan 16 2002 2002-02
$ alias m='pinky | grep mstreicher'
$ m
mstreicher Martin Streicher ...
$ alias snap='pinky >> ~/.pinky'
$ snap
$ snap
$ cat ~/.pinky
Login Name TTY Idle When Where
mstreicher Martin Streicher pts/0 Jun 18 16:40 cpe-071-065-224-025.nc.res.rr.com
Login Name TTY Idle When Where
mstreicher Martin Streicher pts/0 Jun 18 16:40 cpe-071-065-224-025.nc.res.rr.com
|
ll diğer adı, /bin/ls yoluna başvurur -- mutlak yolların
yerine hiçbir zaman diğer adlar kullanılmaz.
ll yazdığınızda, bunun yerini diğer adı alır ve kalan
komut satırı bağımsız değişkenleri sona eklenir. Bu nedenle, ll -d
2002* , gerçekte /bin/ls -l -d 2002* komutudur. lt
diğer adı, ll diğer adını belirtir ve oluşturma tarihine göre sıralama
yapmak için -t işaretini ekler. lt diğer adının açılımı
/bin/ls -l -t -d 2002* komutudur. m diğer adı bir dikey
çubuk içerir. snap diğer adı, bir komutun çıkışını bir dosyaya eklemek
için yeniden yönlendirmeyi kullanır.
Kabuğunuzdaki ayarlı tüm diğer adları görmek için
Liste 10'da gösterildiği gibi yalnızca alias
yazmanız (bağımsız değişkenler olmadan) yeterlidir.
Liste 10. Kabuğunuzdaki tüm diğer adların
görüntülenmesi
$ alias
alias findreports='find $HOME -type f -name "*.txt" -print | xargs grep -l
"Monthly Report"'
alias ll='/bin/ls -l'
alias lt='ll -t'
alias m='pinky | grep mstreicher'
alias snap='pinky >> ~/.pinky'
...
|
Bir diğer adı kaldırmak istiyorsanız, unalias yazın ve
kaldırmak istediğiniz diğer adı belirtin. Liste 11'de
gösterilen şekilde bir defada birden çok diğer adı da listeleyebilirsiniz.
Liste 11. Birden çok diğer adın eşzamanlı
olarak görüntülenmesi
$ unalias m snap
$ alias
alias findreports='find $HOME -type f -name "*.txt" -print | xargs grep -l
"Aylık Rapor"'
alias ll='/bin/ls -l'
alias lt='ll -t'
|
Son olarak, ortamınızı oluşturmak için bu kadar çalıştıktan sonra
ayarlarınızı sonraki oturumlarınız için korumak isteyebilirsiniz. Gerçekten de,
kabuğunuzun tüm oturumlar ve örneklerde tutarlı olmasını isteyebilirsiniz --
örneğin, iş istasyonunuzda birden çok uçbirim açıldığında.
Kabuklar, kabuğunuz başlatıldığında ortamınızı (yeniden) başlatan
başlatma dosyalarını içerir. Başlatma dosyaları basit -- yalnızca bir değişken ve
değer listesi -- ya da oldukça karmaşık olabilir -- özelleştirme mantığını ve
ayrıntılı işlevleri içerebilir. Bazı kullanıcıların birçok başlatma dosyası
seti olabilir. Her bir proje için bir set ayarlanabilir.
Z kabuğu, .zshrc ve .zprofile başlatma dosyalarını kullanır. Bu
dosyaların ikisi de ana dizininizde bulunur. (Diğer kabukların benzer adlara sahip
benzer dosyaları vardır ve özel bilgiler için kabuk belgelerinizi okuyabilirsiniz.
Bazı kabuklar, kapatma dosyaları ya da kabuktan çıkarken çalıştırılacak
dosyalar da sağlayabilir.) .zshrc dosyası, yeni bir kabuk başlattığınızda
kaynak olarak kullanılır ya da okunur ve işlenir; .zprofile dosyası, yalnızca
bir oturum açma kabuğu başlattığınızda kaynak olarak kullanılır.
Kabuğunuzu yapılandırdıktan sonra ayarlarınızın bir anlık görünümünü
alın ve bunları, kabuk başlangıç dosyalarından birinde saklayın:
$ set >> $HOME/.zshrc
$ alias >> $HOME/.zshrc
|
Not: .zshrc sonuç dosyasını düzenlemek ve oturuma özgü
değişkenleri kaldırmak isteyebilirsiniz.
Daha fazla güç
Vay! UNIX Dilinde Konuşma'nın bu makalesinde çok fazla konu
üzerinde durduk, ancak bu gayretiniz size büyük ödüller kazandıracak. Daha çok
değil, daha akıllıca çalışıp gerçekten önemli şeyleri yapmak için -- örneğin PS2
oynamak gibi -- fazladan zaman kazanabilirsiniz.
Bir sonraki UNIX Dilinde Konuşma makalesinde daha
geleneksel konulara değinilecek. Bu gözde tarayıcıları bırakıp komut satırından nasıl
bağlantı kurulacağını, yükleme yapılacağını, aktarımı ve iletişim kurmayı tam olarak
inceleyeceğim.
Bizi izlemeye devam edin.
Kaynaklar Bilgi Edinme
-
UNIX
Dilinde Konuşma: Bu dizinin diğer bölümlerini de inceleyin.
zsh posta listesi
arşivi: Z kabuğu incelikleri ve ipuçlarıyla ilgili daha fazla bilgi için bu
listeyi okuyun.
- AIX ve UNIX:
Daha ayrıntılı bilgi ister misiniz? developerWorks AIX ve UNIX alanı, bilgi içerikli
yüzlerce makaleyi ve giriş düzeyindeki, orta ve ileri düzeydeki öğreticiyi içerir.
-
developerWorks
teknik etkinlikler ve web yayınları: Güncel developerWorks teknik etkinliklerini
ve web yayınlarını izleyin.
- Podcasts:
İlgili ayarları yapın ve IBM teknik uzmanlarının bilgilerine ulaşın.
Ürün ve teknoloji edinme
Tartışma
Yazar
hakkında
Martin Streicher, Linux Magazine adlı dergide Şef
Editör'dür. Purdue University'den bilgisayar bilimi konusunda master derecesi almış
ve 1982 yılından bu yana UNIX benzeri sistemlerde Pascal, C, Perl, Java ve (en son)
Ruby programlama dillerinde programlama yapmaktadır. Martin'e
martin.streicher@linux-mag.com
adresinden erişebilirsiniz.
|
|