UNIX de Erişim Yetkileri
Download "UNIX de Erişim Yetkileri"
1 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 44 UNIX de Erişim Yetkileri UNIX işletim sistemi, kendisini ve denetlediği kaynakları, acemi veya kötü niyetli kullanıcılara karşı korumak zorundadır. Öte yandan, kullanıcıların kayıtlarını da birbirlerine karşı korumak gerekmektedir. Bir üniversitenin bilgisayarındaki öğrenci işleri müdürlüğünün kayıtlarına herkesin erişebildiğini hayal edebiliyor musunuz? UNIX işletim sistemi, oldukça kuvvetli bir güvenlik sistemine sahiptir ve bu güvenlik sisteminin temelinde, kullanıcıların sisteme tanıtımı sırasında yapılan düzenlemeler yatar. Sistemin yönetiminden sorumlu olan kişi(ler), kullanıcıları kullanım konularına göre sınıflandırır(lar). Örneğin; öğrenci işleri, kütüphane, satın alma, mühendislik fakültesi, edebiyat fakültesi gibi... Bu sınıflara kullanıcı grupları (user group) adı verilir ve her kullanıcı grubunun bir numarası olur. Sonra, sıra her bir kullanıcı için bir isim ve kullanıcı numarası vermeye ve bu kullanıcıların ait oldukları grupları belirlemeye gelir. Özetlemek gerekirse, UNIX işletim sistemi ile çalışan bir bilgisayarı kullanmak istiyorsanız, önce sistem yöneticisine bir uğrayıp sizin için bir kullanıcı hesabı (user account) açmasını istemelisiniz. Sistem yöneticisi sizin için sistemde daha önce kullanılmamış ve sizin kimliğinizi hatırlatan bir kullanıcı ismi ve sadece size ait olan bir kullanıcı numarası seçecektir. Ait olduğunuz grubun numarasına ve sizin kullanıcı dizininizin bulunacağı disk ve dizine de karar verecek ve sisteme sizi tanıtacaktır. Bu işlemler tamamlandığında UNIX bilgisayarının herhangi bir terminalinden login edebilirsiniz. Sisteme ilk bağlanışınızda sizden şifre sorulmayacaktır (sistem yöneticiniz, farklı bir düzenleme yaparak yeni kullanıcılara geçici birer şifre vermiş olabilir). Sisteme girer girmez passwd komutu ile şifrenizi tanıtmalı veya değiştirmelisiniz. Başkalarından gizleyecek kayıtlarınız olmayacaksa bile gizli bir şifreniz olmalıdır; aksi takdirde başkaları sizin kullanıcı adınızla sisteme girebilir ve istemeden de olsa kayıtlarınızı bozabilir. Şimdi dönelim dosya ve dizinlerin erişim haklarına... Hatırlarsanız, ls -l komutu ile bir dizinde yer alan dosyaların (ve dizinlerin) listesini aldığınızda, -rwxr-xr-x 1 root Feb 09 13:34 kadb benzeri satırlar görmekteydiniz. Bu satırlardaki erişim yetkileri ile ilgili olan rwxr-xr-x e benzeyen kod dizileriyle gösterilmektedir. Bu dokuz karakterden oluşan dizi aslında üçer karakterlik üç parçadan oluşmaktadır. (Bu örnekte rwx, r-x ve r-x).
2 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 45 İlk üç karakter dosyanın sahibinin yetkilerini, ikinci üçlü, dosyanın sahibiyle aynı kullanıcı grubunda yer alan kullanıcıların yetkilerini, son üçlü ise diğer kullanıcıların bu dosya üzerindeki yetkilerini tanımlamaktadır. r w x r w x r w x Dosya sahibinin yetklileri Grubun Yetkileri Diğerlerinin Yetkileri Her üçlü aynı kalıptadır. Her üçlünün ilk pozisyonunda bir r harfinin varlığı, ilgili kullanıcının dosyayı okuma yetkisinin bulunduğunu gösterir. Bu pozisyonda bir eksi işareti varsa, söz konusu kullanıcı tipi için okuma yetkisi olmadığı anlaşılır. Bu mantıkla, r : Okuma yetkisi, ( read access ) w : Yazma yetkisi, ( write access) x : Dosya bir program dosyası ise, programı çalıştırma yetkisini gösterir. ( execute access )
3 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 46 Bir kaç örnek sanırım konuya daha fazla açıklık getirecektir : Dosya Yetki Kodu Anlamı rwxrwxrwx Bu dosyayı herkes okuyabilir, Herkes bu dosyaya kayıt yapabilir, dosyanın adını değiştirebilir; hatta dosyayı silebilir, Eğer bu bir program dosyasıysa, herkes bu programı çalıştırabilir. rwxr-xr-x Bu dosyayı herkes okuyabilir ve program dosyasıysa çalıştırabilir; ancak, sadece sahibi bu dosyada bir değişiklik yapabilir. rwx Bu dosya üzerinde sahibi istediği tüm işlemleri yapabilir; ancak dosya, diğer kullanıcılara tamamen kapalıdır. rw-r--r-- Bu dosya bir program dosyası değil, çünkü hiç kimsenin çalıştırma (execute) yetkisi yok! Sahibi dosyayı okuyup yazabilir ancak diğer kullanıcılar sadece okuyabilir. (Aslında, henüz çalıştırma yetkileri düzenlenmemiş bir program dosyası olabilir.) rw-rw---- Bu dosyada bir program dosyası değil. Dosyanın sahibi ve kendisiyle aynı grupta olan kullanıcıların okuyup yazma yetkileri var, ancak diğer kullanıcıların hiç bir şekilde erişmeleri mümkün değil. rwx--x--x Sahibi dışında kalan kullanıcılar, bu program dosyasını sadece çalıştırabilirler. Dizinler için de rwxrwxrwx yetki kodları söz konusudur. Dosya yetki kodlarına çok benzemekle beraber, detaylarda bazı önemli farklılıklar vardır. Bu farkları daha sonra açıklayacağım.
4 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 47 Diskinizdeki dosya ve dizinlerin bazılarının yetki kodlarında r, w ve x harflerinden farklı olarak s, S ve t gibi kodlar da görebilirsiniz. Şimdilik bunlara pek aldırmayın. Bir kez daha özetlemek gerekirse : % ls -l komutu verdiğinizde alacağınız dosya-dizin listesinde göreceğiniz yetki kalıpları aşağıdaki şemaya göre yorumlanmalıdır. Dosya tipi Sahibinin bu dosya/dizin üzerindeki yetkileri Sahibi ile aynı grupta olanların yetkileri Diğer kullanıcıların yetkileri d rwx - rw- - rwx rwx rwx Herkese tam yetkiye örnek rw- --- Sahibi ve gruba okuma/yazma yetkisi --x --x Herkesin çalıştırabileceği bir program Doğal olarak dosya ve dizinler üzerindeki yetkileri değiştirmek mümkündür; ancak erişim yetkilerini değiştirmeye yetkili olmanız gerekmektedir. Bu yetki sadece dosyanın veya dizinin sahibinde ve root isimli kullanıcıda vardır.
5 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 48 Dosya ve dizinlerin erişim yetkilerini değiştirmek için % chmod (change mode) komutu kullanılır. Bu komut iki değişik formda kullanılabilir. Kullanımı göreceli olarak kolay olan formu : u r g + w % chmod o = x dosya_ad a - s t Bu formda, u : dosyanın sahibi (user) g : dosyanın sahibiyle aynı grupta olanlar (group) o : diğer kullanıcılar (others) a : herkes (all ) + : yetki ekleme = : yetki eşitleme - : yetki çıkarma r : w : x : s : t : okuma yetkisi (read) yazma yetkisi (write) Çalıştırma (execute) suid biti (daha sonra anlatılacaktır) sticky bit (daha sonra anlatılacaktır) Birkaç örnek vermek gerekirse : chmod a+x adres chmod o-w mhsb.z chmod go=rx adres adres isimli program dosyasına, herkes için çalıştırma yetkisi verir. mhsb.z dosyasından, diğer kullanıcıların yazma yetkisini kaldırır. adres dosyasının grup ve diğerleri için erişim yetkisini r-x kalıbına eşitler.
6 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 49 chmod komutunun bir diğer formu da (UNIX ustaları tarafından genellikle tercih edilen form), yetkilerin sayısal olarak gösterildiği formdur. Yetki tanım grupları aşağıdaki tabloya göre sayısal birer değerle eşleştirilir : r w x r w x r w x Owner Group Others Diyelimki adresler dosyasının erişim yetkilerinin rw-r-xr-x olmasını istiyorsunuz. Bu yetki kalıbını üçer üçer ayrılmış olarak düşünüp (rwx r-x r-x), yukarıdaki tabloya göre verilmek istenen yetkilere karşılık gelen sayıları üçlü gruplar halinde toplayınız ve elde edeceğiniz üç tane sayıyı yanyana getirip 3 haneli bir sayı elde ediniz. Bir başka deyişle : r w x r - x r - x chmod komutunda bu sayıyı kullanarak dosya ya da dizinlerinizin erişim yetkilerini tanımlayabilirsiniz; % chmod 755 adresler Bir dosya veya dizinin erişim yetkilerini SADECE dosyanın sahibi ve root kullanıcı değiştirebilir. Bir chmod komutu ile birden fazla dosyanın erişim yetkilerini aynı anda değiştirebilirsiniz: % chmod 755 dosya1 dosya2 dosya3... Dosyalar için r, w ve x yetkileri yeteri kadar açık anlamlıdır; ancak dizinler için bu yetkilerin biraz daha karmaşık anlamları vardır. Şöyleki :
7 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 50 Bir dizin için r (read) yetkiniz varsa : o dizindeki dosyaların isimlerini ls komutu ile görebilirsiniz. (Eğer x (execute) yetkiniz yoksa, bazı UNIX lerde ls komutunu kullanabilmenize karşın, ls -l komutunu kullanamazsınız). Bir dizin için w (write) yetkiniz varsa : o dizindeki dosyaların yerleşiminde değişiklikler yapabilirsiniz. Örneğin dosyaların adını değiştirebilirsiniz veya dosyaları silebilirsiniz. Eğer bir dizine w yetkiniz varsa fakat o dizin içindeki bir dosyaya w yetkiniz yoksa, o dosyanın içeriğini değiştiremezsiniz AMA O DOSYAYI SİLEBİLİRSİNİZ veya ADINI DEÐİŞTİREBİLİRSİNİZ). Bir dizin için x (execute) yetkiniz varsa : çalışma dizinizi bu dizin olarak değiştirebilirsiniz. (cd komutunu bu dizin için kullanabilirsiniz). Bir dizini çalışma dizini olarak kullanmak için r (read) yetkisi yeterli değildir; x yetkisi de gerekir. İçinde gizli bilgiler olmayan ama gene de diğer kullanıcılar tarafından kurcalanmasını istemediğiniz dizinler için en uygun yetki düzenlemesi rwxr-xr-x olarak kabul edilebilir. Eğer bir dizininizi sizden başka kimsenin kullanmasını ve içine bakmasını istemiyorsanız % chmod go-rwx dizin_adi komutunu kullanabilirsiniz SUID Biti ve SUID Programlar Bir kaç sayfa önce, chmod komutundan söz ederken suid bit kavramından bahsetmiştim. Bir program dosyasının SUID bitini set etmek (yani chmod +s prog gibi bir komut vermek), bu prog programını çalıştıran kullanıcıların, program çalıştığı sürece ve sadece bu program ile ilgili dosyalar açısından, program dosyasının sahibinin yetkilerine sahip olmalarını sağlar. Biraz karışık oldu ama, sanırım şu örnek açıklayıcı olacaktır. Şifresini değiştirmek isteyen bir kullanıcı passwd komutunu kullanacaktır. Bu program kullanıldığında, şifre değişikliği, sahibi root olan /etc/passwd dosyasında bir kayıt değişikliği yapılmasını gerektirecektir. Ancak bu dosya, UNIX sisteminin en önemli dosyalarından birisi olduğu için çok iyi korunmakta ve sahibi (yani root) dışında kimsenin bu dosyaya w (write) yetkisi bulunmamaktadır. İşte SUID kavramı bu soruna bir çözüm getirmektedir. passwd programının yer aldığı /usr/bin/passwd dosyasının SUID biti set olduğu için, passwd komutunu veren kullanıcılar bu program çalıştığı sürece ve /etc/passwd dosyasına erişim söz konusu olduğunda geçici olarak root yetkilerine sahip olacaklardır.
8 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 51 Sistem yöneticisine : SUID programlar önemli birer emniyet gediği olabilirler. Bir programa SUID özelliği vermeden önce dikkatlice düşününüz. Eğer, SUID özelliği vermek istediğiniz program, kullanıcıya bir şekilde UNIX komutu verme olanağı sağlıyorsa; bu programa kesinlikle SUID özelliği vermeyiniz. SUID özelliğine sahip dosyalar, ayrıntılı ls listelerinde bir s harfiyle gösterilir. -rwsr-xr-x 2 bin 512 Feb 24 09:56 passwd* gibi. STICKY Bit Eski UNIX uyarlamalarında; disklerin ortalama erişim sürelerinin ve veri transfer hızlarının düşük olduğu zamanlarda; program dosyalarının disklerden belleğe yüklenebilmeleri için geçen süreler kullanıcıları rahatsız etmekteydi. Bu yüzden, sık sık kullanılan komutları oluşturan programların disk dosyalarına sticky özelliği verilirdi. Bu özellik sayesinde, bu tip programlar, bir kez belleğe yüklendikten sonra, programın çalışması sona erdiğinde bile bellekten atılmazlardı; böylece, komutun bir sonraki kullanımı için program bellekte hazır olurdu. sticky özelliğine sahip dosyalar, ayrıntılı ls listelerinde bir t harfiyle gösterilir. -rwxr-xr-t 2 bin 512 Feb 24 09:56 ls* gibi. Artık, günümüz UNIX lerinde STICKY BIT kavramı kullanılmamaktadır. Öte yandan, bu bit in, asıl tarifine hiç de benzemeyen amaçlarla kullanan UNIX uygulamalarının bulunduğu da bir gerçek; ancak, bu özel durumlar konumuzun oldukça dışında kalıyor. Dosyaların/Dizinlerin Sahibini Değiştirme # chown (change owner) Bu komutu sadece root kullanıcı kullanabilir! Erişim yetkileriyle ilgili olarak, zaman zaman dosya ve dizinlerin sahiplerinin değiştirilmesi gerekebilmektedir. Örneğin, root kullanıcı bir nedenle, bir kullanıcı dizininde bir dosya ya da dizin yaratırsa ve bu yeni yaratılan dosya/dizinin o kullanıcı tarafından tam yetkiyle kullanılmasını isterse, bunu sağlamanın en kolay yolu, bu yeni yaratılan dosya/dizinin sahibini o kullanıcı yapmaktır : # whoami (ben kimim?) root (root root muşum) # mkdir /home/ayfer/yeni (yeni isimli dizini yarat) # ls -l /home/ayfer.. drwxr--r-- 1 root 512 Feb 12 13:34 yeni.
9 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 52. # chown ayfer /home/ayfer/yeni (sahibini değiştir) # ls -l /home/ayfer.. drwxr--r-- 1 ayfer 512 Feb 12 13:35 yeni..
10 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 53 csh ve sh kabukları Bir UNIX bilgisayarına login ettiğinizde karşınıza bir kabuk programı çıkacaktır. Bu andan itibaren vereceğiniz tüm UNIX komut satırlarını irdeleyen, verdiğiniz komuta uygun programı diskten belleğe yükleyen, çalıştıran ve varsa, verdiğiniz parametreleri bu programa aktaran işte bu kabuk programıdır. Bir kullanıcı login ettiğinde, kendisi için hangi kabuk programının çalıştırılacağına sistem yöneticisi karar verir. Sistem yöneticisi, kullanıcı tanıtımı sırasında bu bilgiyi, /etc/passwd dosyasında, söz konusu kullanıcıya ait satırın sonundaki parametrede belirtir. Ancak bu seçim mutlak değildir. Kullanıcılar istedikleri kabuk programını kullanabilirler. Hatta, çok pencereli bir ortamda (windowed environment : X-Windows, Motif gibi) çalışıyorlarsa, farklı pencerelerde farklı kabuklar bile kullanabilirler. Kabuk değiştirmek için gereken tek işlem, istenen kabuk programını çalıştırmaktan ibarettir. Bir kabuk programıyla işiniz bittiğinde exit komutuyla o kabuk programınızdan çıkabilirsiniz. Şimdi bir komutun irdelenmesi ve yerine getirilmesi aşamalarını bir örnekle izleyelim. UNIX işletim sistemine verilen komutun % cp./a* /home/ugur olduğunu varsayalım. Kullanmakta olduğunuz csh veya sh, RETURN tuşuna basıldığında, c harfi ile başlayıp ugur sözcüğü ile biten satırınızı irdeleyecek, cp harflerinin bir komut adı olduğunu kabul edecektir. Komut satırının geri kalanını da bu komutun parametreleri olarak çözümlemeye çalışacaktır../a* parametresini ayırırken * (asterisk) karakterini görünce şöyle bir duralayıp çalışma dizininde (.) bulunan ve adı a harfi ile başlayan dosyaların isimlerini bulacak ve sanki herbiri klavyeden yazılmışcasına komut satırına yerleştirecektir. Sonra da /home/ugur karakterlerini son parametre olarak değerlendirecektir. Sonuçta, ilk verdiğimiz komut % cp./abc./abd./abe /home/ugur şekline dönüşecektir. (tabii ki çalışma dizininizde abc, abd ve abe isimli dosyalar olduğunu varsayarak).
11 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 54 Daha sonra, cp komutuna ait program dosyası PATH (path de olabilir) isimli kabuk değişkeninde (shell variable) yer alan dizinlerde aranacak ve bulunursa belleğe yüklenerek çalıştırılacaktır. (PATH ve path kabuk değişkenleri daha sonra anlatılacaktır). Komut satırının geri kalan kısmıysa (./abc./abd./abe /home/ugur ) cp komutuna parametre olarak gönderilecektir. UNIX işletim sisteminde dikkat edilmesi gereken önemli bir nokta : Dosya isim kalıpları (wildcards) kullanılan komutlarda; kalıpların açılması işlemi komut çalıştırılmadan önce yapılır ve bu açılmış halleri, ilgili komut programına parametre olarak aktarılır. Eğer, bu kalıpların açılmadan, parametre olarak programa geçirilmesini istiyorsanız, söz konusu kalıbı " " ( çift tırnakl arasına yerleştirmelisiniz. Dosya İsim Kalıpları Hatırlayacağınız gibi, MS-DOS işletim sisteminde, bir anda birden fazla dosyanın adını kullanmak gerektiğinde, söz konusu dosyaların isimlerinin ortak karakterlerinden yararlanarak kalıplar yazmak mümkündür. Örneğin COPY *.DAT A: COPY TA*.* \ESKI DIR K??.DOC gibi. UNIX işletim sisteminde de bu tür kolaylıkların; hatta daha fazlasının olması doğaldır, değil mi? UNIX Wildcard karakterleri * Her türlü karaktere uyar. Tüm dosyaları seçen bir kalıp kullanmanız gerekirse tek bir * karakteri yeterli olacaktır. MS-DOS daki gibi *.* yazarsanız, adının içinde en az bir nokta olan dosyaları seçmiş olursunuz; yani adının içinde nokta olmayan dosyaları seçmemiş olursunuz.? Herhangi bir tek karaktere uyar. Örneğin,??? dizisi, adı üç harfe kadar olan tüm dosyalara uyacaktır.
12 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 55 [a,b,c] a veya b veya c karakterlerinin herbirine uyar. [0-9] 0 dan 9 a kadar rakamlara uyar. Örnekler % cat kitap[1-3] > hepsi kitap1, kitap2 ve kitap3 dosyalarını peşpeşe ekleyerek hepsi isimli dosyaya kopyalar. % chmod a=x *.[o,sh] veya % chmod a=x *[.o,.sh] Adının son karakterleri.o veya.sh olan tüm dosyaların erişim yetkilerini herkes için --x olarak değiştirir. * kalıp karakteri, adı. (nokta) ile başlayan dosyalar hariç tüm dosya isimlerine uyar. Örneğin cp * /home/ayfer/sakla komutu, çalışma dizinindeki, adı nokta ile başlayanlar dışındaki tüm dosyaları /sakla dizinine kopyalayacaktır. Eğer adı nokta ile başlayan dosyaları da (.login,.cshrc gibi) kopyalamak istiyorsanız % cp.* * /home/ayfer/sakla veya % cp.l*.c* * /home/ayfer/sakla komutunu kullanmalısınız. Kabuk programlarının, dosya adı kalıbı kullanılan komut satırlarını irdelemesi biraz özeldir. Şöyleki, verdiğiniz komut satırındaki *,?, [ ve ] karakterler, komut işletilmeye başlamadan çalışma dizininizde veya belirtilen dizinde bulunan dosyalarla eşleştirilir, kalıba uyan dosyaların isimleri komut satırına yerleştirilir ve program ondan sonra çalıştırılır. Bir örnek vermek gerekirse; yazacağınız cp *.dat /home/ayfer gibi bir komut satırı, kabuk programı tarafından % cp ocak.dat subat.dat mart.dat /home/ayfer şeklinde bir satıra dönüştürülüp kopyalama programı ondan sonra başlatılır. (Tabii ki, çalışma dizininizde ocak.dat vs isimli dosyaların bulunması şartıyla.) Komutlarınızı verirken bu davranışı dikkate almanız gerekir. Eğer, dosya isim kalıpları tırnak içinde yer alıyorsa, o zaman bu açma işlemi yapılmaz.
13 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 56 Shell Değişkenleri Bir UNIX bilgisayarına login ettiğinizde, bir shell çalışma seansı başlatmış olursunuz. Bu seans boyunca kullanacağınız bir takım programlar, çalışmalarını düzenleyen bazı değişkenlerin (kabuk değişkenleri) belirli değerlere sahip olmasını isteyebilirler. Örneğin, SUN iş istasyonlarında, openwin isimli program, OPENWINHOME isimli bir değişkende, openwin programının yüklenmiş olduğu dizin adının (/usr/openwin gibi) bulunmasını ister. Kullandığınız kabuk programına göre, uygun bir komutla kabuk değişkenleri yaratıp, bunlara birer değer verebilirsiniz. Örneğin, C-Shell için % setenv OPENWINHOME /usr/openwin csh için Bourne shell (sh) için $ OPENWINHOME=/usr/openwin $ export OPENWINHOME sh için path ve PATH Değişkenleri UNIX işletim sisteminde büyük ve küçük harf ayrımının önemli olduğunu daha önce vurgulayarak belirtmiştim. path ve PATH değişkenleri de bu nedenle farklı değişkenlerdir ancak görevleri aynıdır. path değişkeni c-shell için; PATH ise Bourne shell için anlamlıdır. Ancak csh, path değişkenine bir değer verildiğinde, PATH değişkeninde de uygun değer değişikliğini otomatik olarak yapar. path ve PATH değişkenlerinin görevi basittir. Bir komut verildiğinde, komutu oluşturan program dosyasının hangi dizinlerde aranacağını belirtir. % set path = ( /bin /usr/bin ~/bin. ) csh için veya bunun eşdeğeri olan $ PATH=/bin:/usr/bin:~/bin:. sh için değer atamaları yapılmışsa, UNIX işletim sistemine bir komut verildiğinde, program dosyası önce /bin dizininde aranır. Eğer bulunamazsa, /usr/bin dizinine bakılır. Eğer orada da bulunamazsa kullanıcı dizinin altındaki ( ~ : home directory ) bin dizinine bakılır. En son olarak da çalışma dizinine bakılır (. ).
14 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 57 Diğer Önemli Shell Değişkenleri MS-DOS işletim sisteminde durum biraz farklıdır. MS-DOS da, bir komut öncelikle çalışma dizininde aranır, bulunamazsa PATH değişkeninde belirtilmiş olan dizinlerde aranır. PRINTER : Bir dosyayı yazıcıya göndermek için kullanılan lpr komutunda, -P parametresiyle yazıcı adı belirtmediğinde, varsayılacak yazıcı adını belirler. % setenv PRINTER laser $ set PRINTER=laser $ export PRINTER csh için sh için TERM : Kullandığınız terminalin tipini belirler. Bu değişkene vermeniz gereken değeri sistem yöneticinizden öğrenmelisiniz. % setenv TERM vt100 $ set TERM=vt100 $ export TERM csh için sh için MANPATH : UNIX komutları hakkında bilgi almanız gerektiğinde kullanacağınız man komutunun, komutlar hakkındaki kullanım kılavuzu sayfalarını bulacağı dizin veya dizinleri belirtir. Bu değişken tanımlı değilse, man komutu, kılavuz sayfalarını /usr/man dizininde arar..login ve.logout Dosyaları % setenv MANPATH /usr/man:/use/lang/man Eğer kullanıcı dizininizde.login isimli bir dosya varsa, sisteme login ettiğinizde bu dosyadaki UNIX komutları sanki klavyeden birer birer girilmiş gibi çalıştırılacaktır. (Size özgü bir AUTOEXEC.BAT dosyası gibi). Aynı mantıkla, sistemden çıkmak için logout komutunu verdiğinizde de; varsa,.logout dosyasındaki komutlar çalıştırılacaktır. Bu dosyalar sizin kullanıcı dizininizde (home directory) yer aldığı için sadece size özgü dosyalardır. Bu dosyalarda istediğiniz değişiklikleri yapabilirsiniz. Yapacağınız değişiklikler başkalarını etkilemeyecektir. Tipik bir.login dosyası set TERM=vt100 set path=/usr/bin:/bin:/usr/lang: n:/usr/lang: set PRINTER=laser
15 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 58 Tipik bir.logout dosyası /bin/rm ~/tmp/* clear echo "Gule Gule..." geçici dosyaları siliyor.cshrc Dosyası Sizin için bir csh çalışmaya başlarsa ve sizin kullanıcı dizininizde.cshrc isimli bir dosya varsa, csh kabuk programı ilk olarak bu dosyadaki UNIX komutlarını çalıştıracaktır. Her ne kadar kesin bir kural değilse de, geleneksel olarak bu dosyanın içine sadece csh kabuk programını ilgilendiren UNIX komutları yerleştirilir. Şimdi, iyi hazırlanmış bir.cshrc dosyasını örnek olarak inceleyelim; ancak bu dosyayla ilgili notlar size pek açıklayıcı gelmezse hiç üzülmeyin ve bu bölümü atlayın. Ama, bu kitabı bitirmenize yakın bu bölümü tekrar bir gözden geçirmenizi öneririm. ################################################## # Ornek bir.cshrc dosyas # ################################################## # set lpath=( /home/ayfer/bin ) set path= ( /usr/bin /usr/local/bin /bin $lpath ) set cdpath = (~/src ~/bin ~ ) set noclobber set history=30 set ignoreoef # alias dir ls alias copy cp -i alias ll ls -l alias mroe more alias h history # umask 022 ################################################## ##...## Bu karakterle başlayan satırlar açıklama satırı (comment) olarak kabul edilir ve csh tarafından dikkate alınmaz.
16 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 59 set lpath=(.. ) lpath isimli bir kabuk değişkeni tanımlanmış ve değer olarak kullanıcının kişisel programlarını yerleştirdiği dizinlerin isimleri verilmiş. (local path). set path=(.. $lpath ) path isimli shell değişkeni tanımlanıyor. Yani, bir komut verildiğinde, komutla ilgili program önce /usr/bin dizininde; burada bulunamazsa /usr/local/bin dizininde, orada da bulunamazsa /bin dizininde; orada da bulunamazsa lpath isimli kabuk değişkeninde tanımlanmış olan dizinlerde aranacaktır. (Daha önce tanımlanmış bir değişkenin değerinin kullanılabilmesi için değişkenin adının başına bir $ işareti yerleştirmek gerekmektedir.) set cdpath=(~/src.. ) Bu kabuk değişkeni, yalnızca csh kabuğunda kullanılabilir. Hayatı oldukça kolaylaştıran bir csh özelliğidir. Diyelim ki, kullanıcı dizininiz altında, geliştirdiğiniz programların kaynaklarının yer aldığı src isimli bir dizin var ve bu dizinin altında da proje1 ve proje2 isimli iki dizin var. Bir dizinden diğerine geçmek için, normal olarak cd home/ayfer/src/proje1 gibi uzun cd komutları yazmak gerekecektir. Eğer cdpath değişkeniniz uygun şekilde tanımlı ise, proje2 dizinine geçmek için, herhangi bir dizindeyken cd proje2 komutunu vermeniz yeterli olacaktır. Bir başka deyişle, dosyalar için path değişkeninin sağladığını, cdpath değişkeni dizinler için sağlar. set noclobber Bir programın çıktısını > operatörünü kullanarak bir dosyaya yönlendirdiğinizde, eski bir dosyanın üzerine kayıt yapmanız durumunda uyarılmanızı sağlar. Örneğin, kullanıcı dizininizdeki dosyaların bir listesini bir dosyada saklamak istediğinizde ls -l > dosya_listesi benzeri bir komut vermeniz gerekecektir. Eğer set noclobber komutu verilmişse (noclobber özelliği açılmışsa) ve dosya_listesi isimli dosya önceden varsa, kullanıcı uyarılacaktır.
17 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 60 set history=30 history, csh e özgü bir değişkendir. Kullanıcının verdiği son 30 komutun bellekte saklanmasını, ve! işareti yardımı ile eski komutların tekrarlanabilmesini sağlar. Vermiş olduğunuz son UNIX komutunu tekrarlamak isterseniz, klavyeden!! girmeniz yeterlidir. (MS-DOS daki F3 tuşu gibi.) Sondan bir önceki komutu tekrarlamak isterseniz!-2, 7 adım önceki komutu tekrarlamak için!-7 komutlarını kullanmanız gerekir. Bitmedi... Daha önce verilmiş komutlar arasında, c harfi ile başlayan en son komutu tekrarlamak için!c komutunu kullanabilirsiniz. Daha kesin tanımlamalar gerekirse,!ca gibi daha uzun diziler kullanabilirsiniz. Hala bitmedi... Son vermiş olduğunuz 30 komutu görmek için (daha doğrusu history isimli c-shell değişkeninde belirtilmiş sayı kadar) history komutunu kullanabilirsiniz. (Lütfen, "history komutu" ile "history değişkenini" karıştırmayınız; bu ikisi ilgili olmakla birlikte farklı şeylerdir). history komutunu verdiğinizde, daha önce vermiş olduğunuz komutlar, birer sıra numarasıyla ekrana listelenir. Bu listedeki komutlardan birini tekrarlamak istediğinizde! işareti ve hemen yanına tekrarlamak istediğiniz komutun sıra numarasını yazmanız yeterlidir. (!14 gibi..) set ignoreoef Ctrl-D tuşunun logout anlamını kaldırır. Bir programa bilgi girişini bitirmek için genellikle Ctrl-D tuşuna (daha doğrusu tuşlarına) basılır. Ancak yanlışlıkla birden fazla Ctrl-D basarsanız, ilki programınıza bilgi girişini sona erdirir, ikincisiyse kullandığınız kabuk programını durdurur. Eğer bu kabuk, yegane kabuk programınızsa, sistemden logout etmenize neden olur.. Bu tip hataları önlemek için set ignoreeof komutuyla Ctrl-D nin bu anlamı kaldırılır. Artık logout edebilmek için açıkça logout komutunu vermeniz gerekecektir.
18 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 61 alias dir ls alias copy cp -i alias ll ls -l alias mroe more alias h history alias ls ls -F Daha önce UNIX de kendi komutlarınızı yaratmanın mümkün olduğunu söylemiştim. İşte bu amaçla kullanılan alias komutuna bir kaç örnek... alias dir ls komutu, MS-DOS alışkanlıklarından kolay vazgeçemeyen kullanıcılar için yararlı olabilir. Bu komutu verdiğinizde, artık, dosya listesi almak için isterseniz dir isterseniz ls komutunu kullanabilirsiniz. Aynı mantıkla cp -i yerine copy komutunu kullanabilirsiniz. Dikkat : Yeni copy komutunun tanıtımı iki bölümden ( cp cp ve -i ) oluşuyor. Bu iki bölümün birarada değerlendirilmesi için tırnak içine alınmaları gerekmiştir. ll (long ls), oldukça sık kullanılan ls -l komutu için bir kısaltma olarak tanıtılmıştır. mroe, klavyeden hızlı bir şekilde more yazmak istediğinizde yapabileceğiniz bir hatayı baştan düzeltmek için tanımlanmış bir komuttur. Yani, yanlışlıkla mroe yazdığınızda bile, bu komut more ile eşdeğer kabul edilecektir. h ise, uzun uzun history yazmaktan kurtulmak için tanımlanmıştır. ls komutuysa -F parametresi ile birlikte çalışacak şekilde değiştirilmiştir. Hatırlarsanız -F parametresi kullanıldığında, ls komutu, dizin isimlerinin sonuna bir / işareti; çalıştırılabilecek program dosyalarının sonunaysa birer * işareti yerleştirmekteydi... umask 022 Bu komut, yeni UNIX kullanıcıları için biraz karmaşık gelebilir. Eğer size de karışık gelirse bu bölümü atlayabilirsiniz..cshrc dosyanızda bu komutun bulunması yararlıdır; bence nedenini anlamasanız da bu komutu.cshrc dosyanıza koyunuz. Hatırlarsanız, dosya ve dizinler için erişim yetkileri söz konusuydu. Her dosya ve dizin yaratışınızdan sonra bu yeni yarattığınız dosya veya dizinin erişim yetkilerini chmod komutuyla değiştirmek yerine, bu yeni yaratılanlar için sizin seçeceğiniz bir erişim yetki kalıbının
19 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 62 otomatik olarak kullanılmasını sağlamak için umask komutunu kullanılır. umask komutunun parametresini oluşturan (parametresiz kullanırsanız, o anda geçerli olan umask değerini öğrenirsiniz) 3 haneli sayının yorumlanması biraz gariptir. umask parametresi, verilen yetkileri değil, kaldırılan yetkileri belirtir. Sanırım bir örnekle anlatmak daha kolay olacak : Eğer standart yetki kalıbı, umask komutuyla değiştirilmemişse yeni yaratılan dosyalara rw-rw-rw-; dizinlereyse rwxrwxrwx erişim yetkileri verilir. Şimdi; umask 022 komutunun verildiğini varsayalım. 022 sayısını şeklinde 3 ayrı sayı olarak düşünün ve her sayıyı üçer haneli ikilik sayılara (binary) çevirin : gibi... Bu diziyi rw- rw- rw- ve rwx rwx rwx yetki kodları ile alt alta yazın. Dosyalar için Dizinler için rw- rw- rw- rwx rwx rwx Bu düzenlemede 0 ların altına gelen yetkilere dokunulmamakta, ancak 1 lerin altına gelen yetkiler kaldırılmaktadır Yani, eğer yaratılan bir dosyaysa, erişim yetkileri rw-r--r--; bir dizinse, rwxr-xr-x olarak belirlenecektir. Dosyalar için rw- rw- rw rw- r-- r-- Dizinler için rwx rwx rwx rwx r-x r-x Kararsız kullanıcılara önerim, umask olarak 022 kullanmalarıdır.
20 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 63 vi visual Editor UNIX işletim sistemiyle birlikte kullanılabilecek pek çok editör vardır; emacs, edit, ed, ex gibi... Ancak bunlar arasında, tüm UNIX uyarlamalarında standart olarak bulunan editör vi dır. Bu nedenle, her UNIX kullanıcısının, az da olsa vi editörünü kullanmayı bilmesi gerekmektedir. Bu bölüm, kullanıcılara, metinlerini ve programlarını yazabilecek ve bunlar üzerinde değişiklikler yapabilecek kadar vi öğretmek için hazırlanmıştır. Bu bölümde anlatılan her komut ve işlem dizisini ezbere bilmek gerekmemekle birlikte, tamamını bir kere okumak ve örnekleri tekrarlamak yararlı olacaktır. MS-DOS dünyasının editörlerine alışkın bir kullanıcı için, vi, başlangıçta çok itici gelecektir. Ancak; bu iticiliğin arkasında her türlü UNIX bilgisayarının her türlü ekranında çalışabilme özelliği olduğunu unutmayınız. Beğenseniz de beğenmeseniz de, vi öğrenmelisiniz! vi bir kelime işlemci değildir! Sadece bir editördür. UNIX altında kelime işlem uygulaması yapmak isterseniz latex, nroff ve troff gibi yazılımlar kullanmanız gerekecektir; ama, bu yazılımların kullanımının temelinde gene vi bulunacaktır.
21 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 64 Dosya Açma / Yaratma % vi dosya-adi komutuyla dosya-adı adlı dosyayı edit etmeye başlayabilirsiniz Eğer bulunduğunuz dizinde bu isimli bir dosya yoksa, ekranda şöyle bir görüntü ile karşılaşaksınız: ~ ~ ~... ~ ~ "dosya-adi [New File] Yeni Dosya Bu ekranda işareti imleci (cursor) temsil etmektedir. ~ işaretleriyse ekranda aynen görünmekte ve bu satırlarda herhangi bir kayıt bulunmadığını (boş satır bile bulunmadığını) göstermektedir. Boşluk(lar)dan oluşan satırla, içinde bir şey olmayan satır farklıdır! Edit etmek istediğiniz dosya bulunduğunuz dizinde olmak zorunda değildir. % cd /home/ayfer % vi /home/reyyan/deneme geçerli bir komut dizisidir.
22 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 65 İlk vi Denemesi : Bir dosya yaratalım... % vi deneme. komutunu verip editörü başlatınız. Çalışma dizininizde deneme isminde bir dosya yoksa, ekranda : ~ ~ ~ ~.. ~ ~ "deneme" [New File] göreceksiniz. EKLEME DURUMU İmleç sol üst köşede iken i (insert komutu) tuşuna bir kez basınız. (Küçük i tuşuna basmaya dikkat ediniz). Bu andan itibaren basacağınız her tuş, dosyanın içine kaydedilecektir. Örnek olarak şu satırları giriniz : Bu ilk deneme dosyamizdir. Enter (veya RETURN) tusuna basarak alt satira geciniz. Bu da ucuncu satir. Bir satir bos biraktiktan sonra devam edebilirsiniz. Son satir ~.. ~ "dosya-adi [New File] Şimdi dosyayı saklamayı görelim. KOMUT DURUMU Dosyayı saklamak için, editöre sakla komutunu verebilmek için ekleme durumundan (insert mode : hatırlarsanız en başta bir küçük i harfi ile bu duruma geçmiştik) çıkıp komut durumuna geçmemiz gerekecektir. Ekleme durumundan çıkmak için bir kez Esc tuşuna basmamız yeterlidir. (Fazla Esc basmanın bir zararı olmaz. Eğer varsa, ekranınızın düdüğü, her fazla basış için bir kez ötecektir; o kadar.)
23 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 66 Şimdi artık komut durumuna geçtiğimize göre :wq (iki nokta üstüste - w harfi - q harfi) tuşlarına basarak w (write) q (quit) komutlarını verebiliriz. ( Komutlar dedim; çünkü w ve q aslında ayrı ayrı iki komuttur). Ekleme veya Komut durumlarının hangisinde bulunduğunuza dair ekranda bir işaret aramayın. Yoktur! Ancak, hangi durumda bulunduğunuzdan emin olmak istiyorsanız, bir kaç kez Esc tuşuna basıp komut durumuna geçiniz. Gerekirse i komutu ile komut durumundan ekleme durumuna geçebilirsiniz. Tekrar deneme çalışmamıza dönersek; son bastığımız Esc tuşundan ötürü komut durumunda bulunduğumuzu biliyoruz. Komut vermek amacıyla : (iki nokta üstüste) tuşuna bastığımızda, imleç, ekranın en alt sol köşesine inecek; bastığımız : karakterini burada gösterecek ve komut bekleyecektir. komut olarak wq harflerini giriniz ( w (write) ve q (quit) komutları). Dosyayı kaydetme işleminin başarılı olduğunu şu mesajdan anlayabilirsiniz : "deneme" [New file] 7 lines 135 characters q (quit) komutundan ötürü, vi dan tamamen çıkmış ve UNIX komut düzeyine dönmüş olmalısınız. Şimdi, UNIX deki dosya isimlerini listeleme komutuyla bu yeni yarattığımız dosyanın adını görebilmelisiniz. (İpucu : ls komutu.) Dosya açarken karşılaşabileceğiniz sorunlar : Var olduğunu bildiğiniz bir dosya adı vermiş olmanıza rağmen, ekranın en altında [New File] mesajını görebilirsiniz. Bu durum, büyük olasılıkla dosyanın adının vi başlatma komutunda hatalı yazılmış olmasından kaynaklanmaktadır. UNIX işletim sisteminde deneme ile Deneme farklı dosya adlarıdır! Eğer hata bu değilse, büyük olasılıkla söz konusu dosya, belirtilen dizinde bulunmamaktadır (vi komutunda dizin belirtilmemiş ise, bulunduğunuz dizinde bu dosya yoktur.) Aşağıdaki mesajlardan birini görürseniz : [open mode] veya Visual needs addressable cursor or upline capability
24 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 67 veya I don t know what kind of terminal you are on - all I have is unknown. Using [open mode] Kabuk değişkenlerinizden TERM ya hiç tanımlı değil, ya da hatalı tanımlanmıştır. Bu durumda lütfen hemen :q komutlarıyla (iki nokta üstüste ve ardından küçük q ve ardından RETURN) vi programından çıkıp, sistem yöneticinize başvurunuz. Eğer sistem yöneticisi sizseniz, :q komutu ile çıkıp % setenv TERM vt100 $ set TERM=vt100 $ export TERM (csh için) (sh için) komutları ile TERM değişkenini tanımlamayı deneyiniz. Eğer başarılı olmazsa, vt100 yerine sun ve vt102 kelimelerini deneyiniz. Hala başarılı olamıyorsanız bir bilene danışmalısınız. Aşağıdaki mesajlardan birini görürseniz : [Read Only] File is Read only Permission denied veya veya söz konusu dosyaya ya da bulunduğu dizine yazma yetkiniz yok demektir. Normal olarak yapabileceğiniz bir şey olmadığından vi seansını bir an önce durdurup, dosyanın sahibi ile (veya sistem yöneticisi ile) görüşmeniz gerekmektedir. Aşağıdaki mesajlardan birini görürseniz : Bad file number Block special file Directory Executable Non-ascii file file non-ascii veya veya veya veya veya söz konusu dosya, ya normal bir dosya değildir ya da üzerinde edit işlemi yapılamayacak bir dosyadır; hemen :q komutu ile çıkınız. File System full Mesajını görürseniz, çalıştığınız disk veya disk kotanız dolmuş demektir; gereksiz dosyaları silerek yer açmanız gerekmektedir. Bu ilk defa başınıza geliyorsa sizden daha iyi UNIX bilen birinden yardım isteyiniz.
25 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 68 Disk Kotası : UNIX işletim sisteminde, kullanıcıların disklerde kullanabilecekleri alanların toplam büyüklüğünü sınırlama (kota koyma) olanağı vardır. Böyle bir sınırlamanın olup olmayacağına; olacaksa her kullanıcı için kotanın kaç megabyte olacağına sistem yöneticisi karar verir. Disk kotanızı doldurduğunuzda bir mesajla uyarılırsınız ve genellikle kotanızı biraz aşmanıza izin verilir; ancak bir kaç gün içinde tekrar kota limitlerinizin altına inmezseniz, sistem yöneticisi dosyalarınızdan bir kısmını silecektir. vi editörü, ekranın tamamını kullanan tam-ekran (full screen) bir editördür. Bu nedenle temel işlevler için en iyi hakim olunması gereken komutlar, imleçi ekranda dolaştırma komutlarıdır. İmleç Dolaştırma Komutları Bu komutların verilmesi sırasında, editör komut konumunda bulunmalıdır. (Yani; editör yeni başlatılmış olmalı veya ekleme konumundan çıkmak için Esc tuşuna basılmış olmalıdır. Hatırlayacaksınız, fazla Esc basmanın bir zararı yoktur; dolayısıyla bulunduğunuz konumla ilgili bir şüpheniz varsa, hiç çekinmeden iki kere Esc tuşuna basınız.) Eğer kullandığınız terminalin özellikleri sisteme doğru tanıtıldıysa ve klavyenizde ok tuşları varsa, en temel hareketleri (birer karakter sağa, sola, yukarı ve aşağı) bu ok tuşları ile yapabilmelisiniz. Eğer terminal tanımlarınız hatalıysa; eksikse veya klavyenizde bu tuşlar yoksa, imleci gezdirme komutları şunlardır : h j k l sola bir karakter aşağı bir satır yukarı bir satır sağa bir karakter (küçük le harfi) Tabii bu arada RETURN (veya ENTER) tuşu ile BackSpace tuşunun da sırasıyla satır başı ve bir geri anlamına geldiğini hatırlatmakta fayda var. Bir çok vi komutu gibi, imleç hareket komutlarının da başına bir sayı koyarak, bu sayı kadar sağa, sola, aşağı ve yukarı hareket sağlanabilir. 3h 2k 3 karakter sola 2 satır yukarı, gibi. Birerli adımlar dışında hareket sağlayan ve çok kullanılan komutlardan bazılarıysa:
26 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 69 0 (sıfır) imlecin bulunduğu satırın başına $ imlecin bulunduğu satırın sonuna w bir sonraki sözcüğün başına b sözcüğün başına (ya da bir önceki) Ekleme Komutları (Inserting Text) Yazı yazarken en çok yapılan işlerden biri, eski bir metnin başına, sonuna ve araya satır/kelime/harf eklemektir. vi editöründe ekleme konumuna geçmenin yöntemlerinden birini ( i komutu) daha önce belirtmiştim. Yine de tekrarlamak istiyorum : i imlecin, üzerinde bulunduğu karakterin hemen solundan başlayarak, Esc tuşuna basıncaya kadar basılan her karakteri metne ekler. Varsa, eski metin sağa doğru itelenir. Diğer ekleme komutları : a imlecin, üzerinde bulunduğu karakterin hemen sağından başlayarak, Esc tuşuna basıncaya kadar, basılan her karakteri metne ekler. Varsa, eski metin sağa doğru itelenir. A imlecin, üzerinde bulunduğu satırın sonundan başlayarak, Esc tuşuna basıncaya kadar, basılan her karakteri metne ekler. Varsa, eski metin aşağı doğru itelenir. Bu komutların büyük veya küçük harflerle verilmesi farklı ve önemlidir. Dikkatli olunuz...
27 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 70 Yazı Silme (Deleting Text) Daha önce yazılmış metin parçalarını silmek için kullanılan komutlar : x imlecin üzerinde bulunduğu TEK karakteri sil 3x imlecin üzerinde bulunduğu karakter dahil, sağa doğru 3 karakter sil dw 2dw dd 2dd imlecin bulunduğu yerden kelime sonuna kadar sil. Eğer imleç sözcüğün başındaysa, sözcüğü sil. imlecin bulunduğu yerden başlayarak 2 sözcük sil imlecin bulunduğu satırı sil imlecin bulunduğu satır dahil, aşağı doğru iki satır sil D imlecin bulunduğu yerden satır sonuna kadar sil ( d$ komutuna eşdeğerdir) d$ Satırın sonuna kadar sil (D komutuna eşdeğerdir) Yanlışlıkla bir silme işlemi yaparsanız... Eğer hatanızı hemen farkederseniz, u komutuyla (undo) son silme işlemini geri döndürebilirsiniz (Aslında sadece son silme işlemini değil, son değişikliği geri döndürür). Eğer son sildiğiniz metin parçasını geri getirmek isterseniz, hemen farketmeseniz bile, bu işlemi p komutu yardımı ile geri çevirebilirsiniz. Ancak bu geri getirme, metnin silindiği yere değil, imlecin p komutu verildiği andaki yerine yapılır. (Hiç yoktan iyi, değil mi?). Metin bloklarının yerini değiştirme (Moving Text) vi editörüyle metin bloklarının yerini değiştirmek istediğinizde kullanacağınız yöntem kes-yapıştır yöntemidir. Yerini değiştireceğiniz metin bloğunu önce bulunduğu yerden, uygun bir komutla ( örneğin tek satır için dd komutu gibi) silmeli (kesme işlemi); daha sonra p komutuyla (put) yeni yerine yapıştırmalısınız. Eğer yapmak istediğiniz işlem, bir metin bloğunu silmekse, kesme işleminden sonra başka bir yere yapıştırmamanız yeterlidir. Bu işlemleri bir örnekle anlatmak daha kolay. Aşağıdaki örnek metindeki, istediğinizde, once... kelimeleri ile başlayan ikinci satırı, Ayni Windows... kelimeleri ile başlayan satırın arkasına taşımak istediğimizi varsayalım : Önce imleci bu satırın üzerine getirmeliyiz ( dd komutuna hazırlık)
28 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 71 vi editoru ile metin parcalarinin yerini degistirmek istediginizde, once eski yerinden silmeli, daha sonra yeni yerine yapistirmaliyiz. Ayni Windows cut & paste gibi... Oldukca kolay, degil mi? dd komutunu verdiğimizde, bu satır ekrandan kaybolacak ve geçici bir bellek sahasına alınacaktır. vi editoru ile metin parcalarinin yerini degistirmek sonra yeni yerine yapistirmaliyiz. Ayni Windows cut & paste gibi... Oldukca kolay, degil mi? Daha sonra imleci bir aşağı satıra indirerek... j (Tabii, eğer çalışıyorsa, aşağı ok tuşunu da kullanabilirsiniz.) vi editoru ile metin parcalarinin yerini degistirmek sonra yeni yerine yapistirmaliyiz. Ayni Windows cut & paste gibi... Oldukca kolay, degil mi?
29 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 72 p (küçük p) komutu ile yeni yerine yapıştırabiliriz. vi editoru ile metin parcalarinin yerini degistirmek sonra yeni yerine yapistirmaliyiz. Ayni Windows cut & paste gibi... istediginizde, once eski yerinden silmeli, daha Oldukca kolay, degil mi? Bu noktada size bir problem sunmak istiyorum. Metnin herhangi bir yerinde, iki harfin yerini değiştirmenin en kısa yolu nedir? x ve p komutlarını bir arada kullanarak (xp şeklinde) bu işi yapabilirsiniz. Lütfen deneyiniz! Metin Bloklarını Kopyalama (Copying Text) vi editörü ile metin bloklarını kopyalamak istediğinizde kullanacağınız yöntem kopyala-yapıştır yöntemidir. Kopyalayacağınız metin bloğunu önce bulunduğu yerde, y (yank) komutuyla (örneğin, tüm satır için yy komutu veya Y gibi) geçici belleğe aktarmalı ve daha sonra kopyalanacağı yere p komutu (put ) ile yapıştırmalısınız. Bu işlemleri bir örnekle anlatmak daha kolay olacak galiba... Aşağıdaki örnek metindeki, istediğinizde, once... kelimeleri ile başlayan ikinci satırı, Ayni Windows... kelimeleri ile başlayan satırın arkasına kopyalamak istediğimizi varsayalım : Önce imleci bu satırın üzerine getirmeliyiz ( yy komutuna hazırlık) vi ile metin parcalari baska yerlere kopyalanmak istendiginde, once eski yerinde bellege alinmali, daha sonra yeni yerine yapistirmaliyiz. Ayni Windows cut & paste gibi... Oldukca kolay, degil mi?
30 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 73 yy komutunu verdiğimizde, bu satır geçici bir bellek sahasına kopyalanacaktır. Ekranda bir değişiklik olmayacaktır. vi ile metin parcalari baska yerlere kopyalanmak istendiginde, once eski yerinde bellege alinmali, daha sonra yeni yerine yapistirmaliyiz. Ayni Windows cut & paste gibi... Oldukca kolay, degil mi? yy komutundan sonra ekranda bir değişiklik olmaz Daha sonra imleci iki aşağı satıra indirerek... jj (Tabii, eğer çalışıyorsa, aşağı ok tuşunu da kullanabilirsiniz.) (Veya 2j) vi ile metin parcalari baska yerlere kopyalanmak istendiginde, once eski yerinde bellege alinmali, daha sonra yeni yerine yapistirmaliyiz. Ayni Windows cut & paste gibi... Oldukca kolay, degil mi? p (küçük p) komutu ile yeni yerine yapıştırabiliriz. vi ile metin parcalari baska yerlere kopyalanmak istendiginde, once eski yerinde bellege alinmali, daha sonra yeni yerine yapistirmaliyiz. Ayni Windows cut & paste gibi... istediginizde, once eski yerinde bellege alinmali, daha Oldukca kolay, degil mi?
31 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 74 Kopyalama ve yer değiştirmede kullanılan p (küçük p) komutu yerine P (büyük p) komutu kullanılırsa, yapıştırma, imlecin bulunduğu satırın altına değil, ÜSTÜNE yapılır. Son Komutu Tekrarlama Bir nedenle, son değişiklik komutunuzu başka yerlerde de tekrarlamanız gerekirse,. (nokta) komutu ile bunu yapabilirsiniz. Metin Eklemenin / Değiştirmenin Bir Kaç Değişik Yolu I (Insert) (Büyük i) İmlecin bulunduğu satırın BAŞINA eklemeye başla. (Esc Esc e kadar) o (Open Line) (Küçük O) İmlecin bulunduğu satırın ALTINA bir boş satır aç ve oraya eklemeye başla. O (Open above) (Büyük O) İmlecin bulunduğu satırın ÜSTÜNE bir boş satır aç ve eklemeye başla. s (Substitute Char) İmlecin bulunduğu yerdeki KARAKTERİ sil ve yerine yeni metni eklemeye başla. (Esc Esc e kadar) S (Substitute Line) İmlecin bulunduğu SATIRI sil ve yerine yeni metni eklemeye başla. r (Replace Char) İmlecin bulunduğu karakteri bir sonra basılacak karakterle değiştir. R (Replace Text) İmlecin bulunduğu noktadan itibaren, yeni metni eski metnin ÜZERİNE yerleştir. (Esc Esc e kadar) J (Join) (Büyük j) İmlecin bulunduğu satırla arkasındaki satırı BİRLEŞTİR. cw (Change Word) İmlecin buluduğu sözcüğü, yeni girilecek sözcükle değiştir.. Bir sonraki sayfada, daha önceden hatalı olarak dökümü yapılmış bir metin üzerinde kalemle yapılmış düzeltmelerin dosyaya işlenmesini canlandıran bir örnek bulacaksınız. Dikkatle incelemenizi öneririm.
32 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 75 Bir Örnek Istenen Düzeltmeler... text etki vi editoru ile yaratlms bir doosyada cesitli imlec hareket komutlarnn nasil bir ikte yapacagini gostermek icin hazirlanan bu ornek ekrani dikkatle sizlere kagit üzerinde,bir ornek ile incelemenizi oneririm: kolay gelsin!. nokta büyük harf olacak... ve bu düzeltmeleri yapmak için gereken işlemler itext Esc x cwetki Esc vi editoru ile yaratlms bir doosyada cesitli imlec hareket komutlarnn nasil bir ikte yapacagini gostermek icin hazirlanan bu ornek ekrani dikkatle sizlere kagit üzerinde,bir ornek ile incelemenizi oneririm: kolay gelsin! r. rk yy sonra hareket hareket kelimesinin başına ve p komutu
33 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 76 Düzeltilmiş Metin vi text editoru ile yaratlms bir dosyada cesitli imlec hareket komutlarnn nasil bir etki yapacagini sizlere kagit üzerinde,bir ornek ile gostermek icin hazirlanan bu ornek ekrani dikkatle incelemenizi oneririm. Kolay gelsin! Bir çok vi komutu, başına bir çarpan yerleştirerek birden fazla kez tekrarlanabilir. (Aynı cebirdeki gibi...) Örneğin, Satır silmek için kullanılan dd komutu, 5dd şeklinde verildiğinde 5 satır sil anlamına gelir. Bir satır aşağı inmek için kullanılan j komutu yerine 5j komutu verilirse, bilin bakalım kaç satır aşağı inilir? (Tabii aşağıda o kadar satır varsa!) Komutların bu özelliğini daha önceki örneklerde farketmiş olmalıydınız. Eğer bu çarpan özelliğini şu ana kadar farketmediyseniz, pek dikkatli okumuyorsunuz demektir. Metnin İçinde Dolaşma Şu ana kadar hep bir kaç satırdan oluşan dosyalarda çalıştık. Hayat her zaman bu kadar kolay değildir. Özellikle elektronik posta için metin yazarken ya da program geliştirirken, sık sık metin içinde sayfa sayfa (bir başka deyişle ekranekran) ileri-geri gitmek gerekir. Bu işlemler için kullanılan komutları burada kısaca bir tablo halinde sıralayacağım. Birer kere denemenizi öneririm. Üzerinde çalışmak için uzun bir dosya hazırlamak yerine, sisteminizin /etc dizinindeki termcap dosyasını kendi home dizininize kopyalayıp bu dosya üzerinde çalışabilirsiniz. ( cp /etc/termcap ~ )
34 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 77 vi KOMUTU İŞLEVİ CTRL F (Forward) CTRL B (Backward) CTRL D (Down) CTRL U (Up) CTRL R (Redraw) CTRL Y CTRL E z RETURN Bir ekran İLERİYE Bir ekran GERİYE Yarım Ekran İLERİYE Yarım Ekran GERİYE Ekranı yeniden düzenle (Çalışırken bir başka kullanıcıdan mesaj gelirse, ekranınız bozulacaktır. Bu komut, ekranı silip yeniden oluşturarak düzenlenmiş olur) Ekranı bir satır aşağı kaydır, imleç yerinde kalsın. Ekranı bir satır yukarı kaydır, imleç yerinde kalsın. (Küçük z) İmlecin bulunduğu satır ekranın EN ÜSTÜNE gelecek şekilde ekranı düzenle z. (Küçük z ve nokta) İmlecin bulunduğu satır EKRANIN ORTASINA gelecek şekilde ekranı düzenle z- (Küçük z ve eksi ) İmlecin bulunduğu satır EKRANIN EN ALTINA gelecek şekilde ekranı düzenle H (Home) EKRANIN EN ÜST satırına git. M (Mid Screen) EKRANIN ORTA satırına git L (Lower Screen) EKRANIN EN ALT satırına git RETURN Bir sonraki satırın ilk karakterine git. Yukarıda açıklanan komutların bazı özel kullanımları vardır. Bunlar az kullanılan özellikler olup, burada sadece bir fikir vermek amacı birkaç örnek vereceğim. 200z RETURN 4H 5L 200 üncü satırı ekranın en üstüne getir. Ekranın en üst satırının 4 altındaki satıra git. Ekranın en alt satırının 5 üstündeki satıra git.
35 Kim Korkar UNIX ten? - Can Uğur Ayfer - PUSULA YAYINCILIK 78 Metnin İçinde Arayarak Dolaşma (Text Search) Diyelimki program yazıyorsunuz ve değişiklik yapmak istediğiniz satırın yeri hakkında bir fikriniz yok. Tek hatırladığınız, değiştirmek istediğiniz satırda kayit_sayısı++ kayit_sayısı++ diye bir karakter dizisi var. Bu diziyi içeren bir satır bulmak için /kayit RETURN tuşlarına basarak bir komut yazmanız yeterli olacaktır. İmleç, içinde bu dizi geçen ilk satırda duracaktır. Arama, imlecin bulunduğu yerden ileriye doğru yapılır. Eğer geriye doğru arama yapmak isterseniz / yerine? karakterini kullanmanız gerekir. Diyelim ki, programın ilk rastladığı kayit sözcüğü, sizin ilgilendiğiniz değil ve aramaya devam etmek istiyorsunuz. Bu durumda n (next) tuşuna basmanız yeterlidir. Tüm arama komutunu yeniden yazmanız gerekmez. Eğer aramanın yönünü değiştirmek isterseniz n yerine N tuşuna basınız. Eğer aramanın halen hangi yönde olduğunu hatırlamıyor, fakat aramayı ileriye doğru yöneltmek istiyorsanız / tuşuna, tam tersi içinse? tuşuna basabilirsiniz. Bulup Değiştirme (Find & Replace) Diyelim ki bulunduğunuz satırda Unix olarak yazılmış bir sözcük var ve UNIX geleneklerine uymayan bu sözcüğü UNIX olarak değiştirmek istiyorsunuz. Bu işi yapmak için imleci n harfinin üzerine götürerek 3rNIX komutunu vermeniz yeterli olacaktır. Bu yöntemde bulma görevini siz; değiştirme görevini ise vi üstlenmiş oluyor. Her iki işi de vi ın yapmasını istiyorsanız değişikliğin yapılmasını istediğiniz satırın üzerine gelip :s/unix/unix :s/nix/nix veya komutlarını verebilirsiniz. DİKKAT! Bu komut sadece İLK RASTLADIÐI Unix karakter dizisini UNIX dizisiyle (veya nix dizisini NIX dizisiyle) değiştirecektir. Bir satırdaki tüm Unix karakter dizilerini UNIX olarak değiştirmek için :s/unix/unix/g komutunu kullanmalısınız. Şimdi, s komutuna bir kaç gelişmiş örnek vererek bu komutun başka marifetlerini de göstermek istiyorum:
Pardus 2013 te Metin Editörleri
METİN EDİTÖRLERİ Pardus 2013 te Metin Editörleri Editör metin düzenleyicisi demektir. Linux işletim sistemlerinde, metin oluşturma ya da düzenleme işlemleri için farklı metin düzenleyici programları vardır.
Kabuk Programlama (Bash)
Kabuk Programlama (Bash) Erkan Esmer Ocak, 2013 İçindekiler 1 Giriş.................................................... 2 2 Kabuk(Shell)............................................... 3 3 Çekirdek(Kernel).............................................
Aşağıda listelenen temel linux komutları bilgisayarınızın komut satırında çalıtırılacaktır.
Genel amaçlı komutları Aşağıda listelenen temel linux komutları bilgisayarınızın komut satırında çalıtırılacaktır. help Kabuk komutlarının listesini gösterir. Bu komutların herbiri için help komut_ismi
KELİME İŞLEMCİ MİCROSOFT OFFİCE WORD KULLANIMI
KELİME İŞLEMCİ MİCROSOFT OFFİCE ŞEKİL EKLEMEK Sayfaya menüdeki şekilleri ekleyebiliriz. 1 ŞEKİL EKLEME UYGULAMASI Sayfaya yukarıdaki şekilleri ekleyin. WORDART EKLEMEK Sayfaya 3 boyutlu yazı ekleyebiliriz.
Kullanım şekli: cal Bu komut ile takvim görüntülenebilir.
2 Sistem Komutları Kullanım şekli: cal Bu komut ile takvim görüntülenebilir. Ay ve yıl bilgisi belirtilmediğinde, sadece içinde bulunulan ayın takvimi görüntülenecektir. Sadece yıl bilgisi verilirse,
$ rm dosya1 dosya2 dosya3 dosya4 dosya5 dosya6 dosya7 dosya8
Joker karakterler Günlük Linux kullanımında çok defa bir operasyonu tek seferde birden fazla nesne için çalıştırmak isteyebileceğiniz (rm gibi) durumlarla karşılaşabilirsiniz. Böyle durumlarda, aşağıdaki
Bilgisayar. Bilgisayarın Özellikleri. Giriş İşleme Çıkış. Bilgisayar Nedir? Bilgisayarın Çalışma Prensibi 11.11.2013
Bilgisayar Bilgisayar Nedir? Kullanıcı tarafından girilen veriyi, bilgiyi, komutu programlandığı biçimde işleyip kullanılabilir bilgi veya anlaşılabilir sonuç haline dönüştüren ve bunları saklayabilen
LABORATUVAR ÇALIŞMASI 1 - Python a Giriş
LABORATUVAR ÇALIŞMASI 1 - Python a Giriş Bu Çalışmanın Amacı Bu çalışmadaki amacımız, kullandığımız sistem ve kullanım hedefimiz için en uygun olan Python sürümünü bilgisayarımıza yükleyerek bilgisayarımızı
ELN1002 BİLGİSAYAR PROGRAMLAMA 2 DOSYALAMA Sunu Planı Rasgele Erişim (Random Access) Dosyaları Rasgele Erişim Dosyalarına Veri Yazma Rasgele Erişim Dosyalarından Veri Okuma 1 Sıralı Erişim Dosyası Bir
TAKSİ-DURAK MÜŞTERİ TAKİP PROGRAMI Bu programa müşterilerinizi ekleyerek müşterilerinizin listesini takip edebilirsiniz, aynı zamanda müşterilerinize sms gönderebilir ve arayan müşterilerinizin listesini
İçindekiler İçindekiler İÇİNDEKİLER... 1 MALİYET HAZIRLAMA... 8 Yeni Dosya Açma... 8 Dosya Aç... 9 Yeni adla sakla... 9 Değiştir... 9 Sil... 9 Birim fiyat kitabından teklif veri penceresine poz aktarma
E-Posta Hesabı Oluşturma
E-Posta Hesabı Oluşturma Elektronik Posta (E-posta) Nedir? Elektronik posta (e-posta) internet ortamından gönderilen dijital (elektronik) mektuptur. Bir başkasına e-posta gönderebilmemiz için öncelikle
Kazanımlar. Linux nedir? Linux dizin yapısı. Linux kabuğu nedir? Temel kabuk komutları. Bash programlama. Dosya işlemleri. Süreç yönetimi.
Linux 101 Kazanımlar Linux nedir? Linux dizin yapısı Linux kabuğu nedir? Temel kabuk komutları Bash programlama Dosya işlemleri Süreç yönetimi Sıkıştırma Sistem hakkında bilgi edinme Kullanıcı yönetimi
İçindekiler Hitit Sayım Cihazı Kurulum ve Kullanım Kılavuzu... 2 Sayım Cihazı Kurulum İşlemleri... 2 Hitit Kurulum işlemleri...
1 İçindekiler Hitit Sayım Cihazı Kurulum ve Kullanım Kılavuzu... 2 Sayım Cihazı Kurulum İşlemleri... 2 Hitit Kurulum işlemleri... 5 Cihazdan Sayım İşlemleri... 8 Sayım Dosyasının Hitit e Okutulması...
VENÜS EFES PANEL KULLANIM KILAVUZU
İÇİNDEKİLER Bekleme Modu...1 Daireyi Arama...1 Apartman Görevlisini Arama...1 Özel Şifreyle Kapı Açma...1 Kullanıcı Ayarlar Menüsü...2 Karşılama Ekranı-Metni Değiştirme...2 Kapı Açma Şifresi Değiştirme...2
C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler
C# Programlama Dili İlk programımız Tür dönüşümü Yorum ekleme Operatörler 1 İlk Programımız Bu program konsol ekranına Merhaba dünya! yazıp kapanır. Programı geçen derste anlatıldığı gibi derleyin, sonra
Asus Live Update programı ile Bios güncelleme. ASUS Live Update programını çekmek için tıklayınız... BIOS Güncelleme ve My Logo:
Asus Live Update programı ile Bios güncelleme ASUS Live Update programını çekmek için tıklayınız... BIOS Güncelleme ve My Logo: Asus Live Uptade programı ile hem biosunuzu kolay bir şekilde günceller,
Linux üzerinden windows işletim sisteminide kullanmak istiyorsanız Virtualbox size uygun olabilir. VirtualBox, Linux üzerinde yaygın olarak kullanılan sanallaştırma araçlarından birisidir. Böylece Windows
TOP 20. Bu kısım en çok dinlenen eserlerin günlük veya haftalık olarak değiştirilmesine olanak verir.
TOP 20 Aşağı resimde genel görünümü görmektesiniz. Bu kısım en çok dinlenen eserlerin günlük veya haftalık olarak değiştirilmesine olanak verir. Ekranda görüldüğü üzere liste değişikliği için 2 kısım bulunmaktadır.
Word 2007 - Otomatik Düzelt
Word 2007 - Otomatik Düzelt Otomatik düzelt penceresinin anlatılması OTOMATİK DÜZELT PENCERESİ OTOMATİK DÜZELT Otomatik Düzelt penceresine iki yoldan ulaşabiliriz. 1. Microsoft Office Düğmesi > Word Seçenekleri