Unix / Linux - Hızlı Kılavuz
Unix nedir?
Unix işletim sistemi, bilgisayar ve kullanıcı arasında bir bağlantı görevi gören bir dizi programdır.
Sistem kaynaklarını tahsis eden ve bilgisayarın iç bileşenlerinin tüm ayrıntılarını koordine eden bilgisayar programlarına, operating system ya da kernel.
Kullanıcılar çekirdek ile şu adıyla bilinen bir program aracılığıyla iletişim kurar: shell. Kabuk bir komut satırı yorumlayıcısıdır; kullanıcı tarafından girilen komutları çevirir ve bunları çekirdek tarafından anlaşılan bir dile çevirir.
Unix ilk olarak 1969'da Bell Labs'ta bir grup AT&T çalışanı Ken Thompson, Dennis Ritchie, Douglas McIlroy ve Joe Ossanna tarafından geliştirildi.
Piyasada çeşitli Unix varyantları mevcuttur. Solaris Unix, AIX, HP Unix ve BSD birkaç örnektir. Linux ayrıca ücretsiz olarak temin edilebilen bir Unix çeşididir.
Birkaç kişi aynı anda bir Unix bilgisayarı kullanabilir; dolayısıyla Unix, çok kullanıcılı bir sistem olarak adlandırılır.
Bir kullanıcı aynı anda birden fazla programı çalıştırabilir; dolayısıyla Unix, çok görevli bir ortamdır.
Unix Mimarisi
İşte bir Unix sisteminin temel blok şeması -
Unix'in tüm sürümlerini birleştiren ana konsept, aşağıdaki dört temel unsurdur:
Kernel- Çekirdek, işletim sisteminin kalbidir. Donanımla ve bellek yönetimi, görev zamanlaması ve dosya yönetimi gibi görevlerin çoğu ile etkileşime girer.
Shell- Kabuk, isteklerinizi işleyen yardımcı programdır. Terminalinize bir komut yazdığınızda, kabuk komutu yorumlar ve istediğiniz programı çağırır. Kabuk, tüm komutlar için standart sözdizimi kullanır. C Shell, Bourne Shell ve Korn Shell, Unix varyantlarının çoğunda bulunan en ünlü kabuklardır.
Commands and Utilities - Günlük aktivitelerinizde kullanabileceğiniz çeşitli komutlar ve yardımcı programlar vardır. cp, mv, cat ve grepvb. birkaç komut ve yardımcı program örneğidir. 250'den fazla standart komutun yanı sıra 3. taraf yazılım aracılığıyla sağlanan çok sayıda komut vardır . Tüm komutlar çeşitli seçeneklerle birlikte gelir.
Files and Directories- Unix'in tüm verileri dosyalar halinde düzenlenmiştir. Tüm dosyalar daha sonra dizinler halinde düzenlenir. Bu dizinler ayrıca, adı verilen ağaç benzeri bir yapı halinde düzenlenmiştir.filesystem.
Sistem Başlatma
İçinde Unix işletim sisteminin kurulu olduğu bir bilgisayarınız varsa, onu canlı hale getirmek için sistemi açmanız yeterlidir.
Sistemi açar açmaz önyüklemeye başlar ve son olarak sisteme giriş yapmanızı ve sisteme giriş yapmanızı ve günlük aktivitelerinizde kullanmanız için bir aktivite olan sisteme giriş yapmanızı ister.
Giriş Unix
Bir Unix sistemine ilk bağlandığınızda, genellikle aşağıdaki gibi bir komut istemi görürsünüz -
login:
Giriş yapmak
Kullanıcı kimliğinizi (kullanıcı kimliği) ve parolanızı hazır bulundurun. Henüz bunlara sahip değilseniz sistem yöneticinizle iletişime geçin.
Oturum açma istemine kullanıcı kimliğinizi yazın, ardından ENTER. Kullanıcı kimliğinizcase-sensitive, bu yüzden tam olarak sistem yöneticinizin söylediği gibi yazdığınızdan emin olun.
Parola istemine parolanızı yazın, ardından ENTER. Parolanız da büyük / küçük harfe duyarlıdır.
Doğru kullanıcı kimliği ve şifreyi girerseniz, sisteme girmenize izin verilecektir. Ekranda çıkan bilgi ve mesajları aşağıdaki gibi okuyunuz.
login : amrood
amrood's password:
Last login: Sun Jun 14 09:32:32 2009 from 62.61.164.73
$
Size bir komut istemi verilecektir (bazen $komut istemi) tüm komutlarınızı yazdığınız yer. Örneğin, takvimi kontrol etmek için,cal aşağıdaki gibi komut -
$ cal June 2009 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 $
Şifre değiştir
Tüm Unix sistemleri, dosyalarınızın ve verilerinizin size ait kalmasını ve sistemin kendisinin bilgisayar korsanlarından ve korsanlardan korunmasını sağlamak için parolalara ihtiyaç duyar. Şifrenizi değiştirmek için adımlar aşağıda verilmiştir -
Step 1 - Başlamak için, aşağıda gösterildiği gibi komut istemine şifre yazın.
Step 2 - Şu anda kullanmakta olduğunuz eski şifrenizi girin.
Step 3- Yeni şifrenizi yazın. Parolanızı her zaman yeterince karmaşık tutun, böylece kimse tahmin edemez. Ama emin ol, hatırla.
Step 4 - Tekrar yazarak parolayı doğrulamalısınız.
$ passwd Changing password for amrood (current) Unix password:****** New UNIX password:******* Retype new UNIX password:******* passwd: all authentication tokens updated successfully $
Note- Sisteminizde mevcut ve yeni şifreleri girmeniz gereken yeri göstermek için buraya yıldız işareti (*) ekledik. Yazarken size herhangi bir karakter göstermez.
Dizinleri ve Dosyaları Listeleme
Unix'teki tüm veriler dosyalar halinde düzenlenmiştir. Tüm dosyalar dizinler halinde düzenlenmiştir. Bu dizinler, dosya sistemi adı verilen ağaç benzeri bir yapı halinde düzenlenmiştir.
Kullanabilirsiniz lsbir dizinde bulunan tüm dosyaları veya dizinleri listelemek için komut. Kullanım örneği aşağıdadırls ile komut -l seçeneği.
$ ls -l total 19621 drwxrwxr-x 2 amrood amrood 4096 Dec 25 09:59 uml -rw-rw-r-- 1 amrood amrood 5341 Dec 25 08:38 uml.jpg drwxr-xr-x 2 amrood amrood 4096 Feb 15 2006 univ drwxr-xr-x 2 root root 4096 Dec 9 2007 urlspedia -rw-r--r-- 1 root root 276480 Dec 9 2007 urlspedia.tar drwxr-xr-x 8 root root 4096 Nov 25 2007 usr -rwxr-xr-x 1 root root 3192 Nov 25 2007 webthumb.php -rw-rw-r-- 1 amrood amrood 20480 Nov 25 2007 webthumb.tar -rw-rw-r-- 1 amrood amrood 5654 Aug 9 2007 yourfile.mid -rw-rw-r-- 1 amrood amrood 166255 Aug 9 2007 yourfile.swf $
Burada ile başlayan girişler d.....dizinleri temsil eder. Örneğin, uml, univ ve urlspedia dizinler, geri kalan girdiler ise dosyalardır.
Kimsin?
Sistemde oturumunuz açıkken şunları bilmek isteyebilirsiniz: Who am I?
"Kim olduğunuzu" öğrenmenin en kolay yolu, whoami komut -
$ whoami amrood $
Sisteminizde deneyin. Bu komut, mevcut oturum açma ile ilişkili hesap adını listeler. Deneyebilirsinwho am i kendinizle ilgili bilgi almak için de komut verin.
Kimler Giriş Yaptı?
Bazen bilgisayarda aynı anda kimin oturum açtığını bilmek ilginizi çekebilir.
Diğer kullanıcılar hakkında ne kadar bilgi sahibi olmak istediğinize bağlı olarak bu bilgiyi size ulaştıracak üç komut vardır: users, who, ve w.
$ users amrood bablu qadir $ who
amrood ttyp0 Oct 8 14:10 (limbo)
bablu ttyp2 Oct 4 09:08 (calliope)
qadir ttyp4 Oct 8 12:09 (dent)
$
Deneyin wSisteminizde çıkışı kontrol etmek için komut. Bu, sistemde oturum açan kullanıcılarla ilişkili bilgileri listeler.
Çıkış Yapılıyor
Oturumunuzu bitirdiğinizde, sistemden çıkmanız gerekir. Bu, dosyalarınıza başka kimsenin erişmemesini sağlamak içindir.
To log out
Sadece yazın logout komut isteminde komut verin ve sistem her şeyi temizleyecek ve bağlantıyı kesecektir.
Sistemin Kapatılması
Bir Unix sistemini komut satırı aracılığıyla düzgün bir şekilde kapatmanın en tutarlı yolu aşağıdaki komutlardan birini kullanmaktır -
Sr.No. | Komut ve Açıklama |
---|---|
1 | halt Sistemi hemen kapatır |
2 | init 0 Kapatmadan önce sistemi senkronize etmek ve temizlemek için önceden tanımlanmış komut dosyalarını kullanarak sistemi kapatır |
3 | init 6 Sistemi tamamen kapatarak ve ardından yeniden başlatarak yeniden başlatır |
4 | poweroff Sistemi kapatarak kapatır |
5 | reboot Sistemi yeniden başlatır |
6 | shutdown Sistemi kapatır |
Sistemi kapatmak için genellikle süper kullanıcı veya kök (bir Unix sistemindeki en ayrıcalıklı hesap) olmanız gerekir. Ancak, bazı bağımsız veya kişisel olarak sahip olunan Unix kutularında, bir yönetici kullanıcı ve bazen normal kullanıcılar bunu yapabilir.
Bu bölümde, Unix'te dosya yönetimi hakkında ayrıntılı olarak tartışacağız. Unix'teki tüm veriler dosyalar halinde düzenlenmiştir. Tüm dosyalar dizinler halinde düzenlenmiştir. Bu dizinler, dosya sistemi adı verilen ağaç benzeri bir yapı halinde düzenlenmiştir.
Unix ile çalışırken, öyle ya da böyle, zamanınızın çoğunu dosyalarla çalışarak geçirirsiniz. Bu eğitim, dosyaları nasıl oluşturacağınızı ve kaldıracağınızı, kopyalayıp yeniden adlandıracağınızı, bunlara bağlantılar oluşturmayı vb. Anlamanıza yardımcı olacaktır.
Unix'te üç temel dosya türü vardır -
Ordinary Files- Sıradan bir dosya, sistemde veri, metin veya program talimatları içeren bir dosyadır. Bu eğitimde, sıradan dosyalarla çalışmaya bakacaksınız.
Directories- Dizinler hem özel hem de sıradan dosyaları depolar. Windows veya Mac OS'ye aşina kullanıcılar için, Unix dizinleri klasörlerle eşdeğerdir.
Special Files- Bazı özel dosyalar, sabit sürücüler, CD-ROM sürücüleri, modemler ve Ethernet adaptörleri gibi donanımlara erişim sağlar. Diğer özel dosyalar, takma adlara veya kısayollara benzer ve farklı adlar kullanarak tek bir dosyaya erişmenizi sağlar.
Dosyaları Listeleme
Mevcut dizinde depolanan dosyaları ve dizinleri listelemek için aşağıdaki komutu kullanın -
$ls
İşte yukarıdaki komutun örnek çıktısı -
$ls
bin hosts lib res.03
ch07 hw1 pub test_results
ch07.bak hw2 res.01 users
docs hw3 res.02 work
Komuta ls destekler -l listelenen dosyalar hakkında daha fazla bilgi almanıza yardımcı olacak seçenek -
$ls -l
total 1962188
drwxrwxr-x 2 amrood amrood 4096 Dec 25 09:59 uml
-rw-rw-r-- 1 amrood amrood 5341 Dec 25 08:38 uml.jpg
drwxr-xr-x 2 amrood amrood 4096 Feb 15 2006 univ
drwxr-xr-x 2 root root 4096 Dec 9 2007 urlspedia
-rw-r--r-- 1 root root 276480 Dec 9 2007 urlspedia.tar
drwxr-xr-x 8 root root 4096 Nov 25 2007 usr
drwxr-xr-x 2 200 300 4096 Nov 25 2007 webthumb-1.01
-rwxr-xr-x 1 root root 3192 Nov 25 2007 webthumb.php
-rw-rw-r-- 1 amrood amrood 20480 Nov 25 2007 webthumb.tar
-rw-rw-r-- 1 amrood amrood 5654 Aug 9 2007 yourfile.mid
-rw-rw-r-- 1 amrood amrood 166255 Aug 9 2007 yourfile.swf
drwxr-xr-x 11 amrood amrood 4096 May 29 2007 zlib-1.2.3
$
İşte listelenen tüm sütunlarla ilgili bilgiler -
First Column- Dosya türünü ve dosyada verilen izni temsil eder. Aşağıda tüm dosya türlerinin açıklaması yer almaktadır.
Second Column - Dosya veya dizin tarafından alınan bellek bloklarının sayısını temsil eder.
Third Column- Dosyanın sahibini temsil eder. Bu, bu dosyayı oluşturan Unix kullanıcısıdır.
Fourth Column- Sahibinin grubunu temsil eder. Her Unix kullanıcısının ilişkili bir grubu olacaktır.
Fifth Column - Dosya boyutunu bayt cinsinden temsil eder.
Sixth Column - Bu dosyanın en son oluşturulduğu veya değiştirildiği tarihi ve saati temsil eder.
Seventh Column - Dosyayı veya dizin adını temsil eder.
İçinde ls -l listeleme örneği, her dosya satırı bir d, -veya l. Bu karakterler, listelenen dosyanın türünü gösterir.
Sr.No. | Önek ve Açıklama |
---|---|
1 | - ASCII metin dosyası, çalıştırılabilir ikili dosya veya sabit bağlantı gibi normal dosya. |
2 | b Özel dosyayı engelleyin. Fiziksel bir sabit sürücü gibi giriş / çıkış aygıt dosyasını engelleyin. |
3 | c Karakter özel dosyası. Fiziksel bir sabit sürücü gibi ham girdi / çıktı aygıtı dosyası. |
4 | d Diğer dosyaların ve dizinlerin bir listesini içeren dizin dosyası. |
5 | l Sembolik bağlantı dosyası. Herhangi bir normal dosyadaki bağlantılar. |
6 | p Adlandırılmış boru. İşlemler arası iletişim için bir mekanizma. |
7 | s İşlemler arası iletişim için kullanılan soket. |
Metakarakterler
Metakarakterlerin Unix'te özel bir anlamı vardır. Örneğin,* ve ?meta karakterlerdir. Kullanırız* 0 veya daha fazla karakteri eşleştirmek için bir soru işareti (?) tek bir karakterle eşleşir.
Örneğin -
$ls ch*.doc
İsimleri ile başlayan tüm dosyaları görüntüler. ch ve ile biter .doc -
ch01-1.doc ch010.doc ch02.doc ch03-2.doc
ch04-1.doc ch040.doc ch05.doc ch06-2.doc
ch01-2.doc ch02-1.doc c
Buraya, *herhangi bir karakterle eşleşen meta karakter olarak çalışır. Sadece ile biten tüm dosyaları görüntülemek istiyorsanız.doc, ardından aşağıdaki komutu kullanabilirsiniz -
$ls *.doc
Gizlenmiş dosyalar
Görünmez bir dosya, ilk karakteri nokta veya nokta karakteri (.) Olan bir dosyadır. Unix programları (kabuk dahil), yapılandırma bilgilerini depolamak için bu dosyaların çoğunu kullanır.
Gizli dosyaların bazı yaygın örnekleri arasında dosyalar bulunur -
.profile - Bourne kabuğu (sh) başlatma betiği
.kshrc - Korn kabuğu (ksh) başlatma betiği
.cshrc - C kabuğu (csh) başlatma betiği
.rhosts - Uzak kabuk yapılandırma dosyası
Görünmez dosyaları listelemek için şunu belirtin: -a seçeneği ls -
$ ls -a
. .profile docs lib test_results
.. .rhosts hosts pub users
.emacs bin hw1 res.01 work
.exrc ch07 hw2 res.02
.kshrc ch07.bak hw3 res.03
$
Single dot (.) - Bu, mevcut dizini temsil eder.
Double dot (..) - Bu, ana dizini temsil eder.
Dosya Oluşturma
Kullanabilirsiniz viherhangi bir Unix sisteminde sıradan dosyalar oluşturmak için düzenleyici. Sadece aşağıdaki komutu vermeniz gerekiyor -
$ vi filename
Yukarıdaki komut, verilen dosya adına sahip bir dosya açacaktır. Şimdi, tuşuna basınidüzenleme moduna geçmek için. Düzenleme modunda olduğunuzda, aşağıdaki programda olduğu gibi içeriğinizi dosyaya yazmaya başlayabilirsiniz -
This is unix file....I created it for the first time.....
I'm going to save this content in this file.
Programı tamamladıktan sonra şu adımları izleyin -
Tuşuna basın esc düzenleme modundan çıkmak için.
İki tuşa basın Shift + ZZ birlikte dosyadan tamamen çıkması için.
Şimdi ile oluşturulmuş bir dosyanız olacak filename mevcut dizinde.
$ vi filename $
Dosyaları Düzenleme
Şunu kullanarak mevcut bir dosyayı düzenleyebilirsiniz: vieditör. Kısaca mevcut bir dosyanın nasıl açılacağını tartışacağız -
$ vi filename
Dosya açıldıktan sonra, tuşuna basarak düzenleme moduna geçebilirsiniz. ive sonra dosyayı düzenleyerek devam edebilirsiniz. Bir dosyanın içinde oraya buraya gitmek istiyorsanız, önce tuşuna basarak düzenleme modundan çıkmanız gerekir.Esc. Bundan sonra, bir dosyanın içinde hareket etmek için aşağıdaki tuşları kullanabilirsiniz -
l sağ tarafa geçmek için anahtar.
h sol tarafa geçmek için tuşa basın.
k dosyada yukarı hareket etmek için anahtar.
j dosyada aşağı doğru hareket etmek için anahtar.
Dolayısıyla, yukarıdaki tuşları kullanarak imlecinizi düzenlemek istediğiniz yere konumlandırabilirsiniz. Konumunuzu belirledikten sonra,idüzenleme moduna geçmek için anahtar. Dosyanızdaki düzenlemeyi tamamladığınızdaEsc ve son olarak iki anahtar Shift + ZZ birlikte dosyadan tamamen çıkması için.
Bir Dosyanın İçeriğini Görüntüle
Kullanabilirsiniz catbir dosyanın içeriğini görmek için komut. Aşağıda, yukarıda oluşturulan dosyanın içeriğini görmek için basit bir örnek verilmiştir -
$ cat filename
This is unix file....I created it for the first time.....
I'm going to save this content in this file.
$
Kullanarak satır numaralarını görüntüleyebilirsiniz. -b ile birlikte seçenek cat aşağıdaki gibi komut -
$ cat -b filename
1 This is unix file....I created it for the first time.....
2 I'm going to save this content in this file.
$
Bir Dosyadaki Kelimeleri Sayma
Kullanabilirsiniz wcbir dosyada bulunan toplam satır, kelime ve karakter sayısının sayısını almak için komut. Aşağıda, yukarıda oluşturulan dosyayla ilgili bilgileri görmek için basit bir örnek verilmiştir -
$ wc filename
2 19 103 filename
$
İşte dört sütunun tamamının detayı -
First Column - Dosyadaki toplam satır sayısını temsil eder.
Second Column - Dosyadaki toplam kelime sayısını temsil eder.
Third Column- Dosyadaki toplam bayt sayısını temsil eder. Bu, dosyanın gerçek boyutudur.
Fourth Column - Dosya adını temsil eder.
Aynı anda birden fazla dosya verebilir ve bu dosyalar hakkında bilgi alabilirsiniz. Aşağıdaki basit sözdizimidir -
$ wc filename1 filename2 filename3
Dosyalar kopyalanıyor
Bir dosyanın kopyasını oluşturmak için şunu kullanın: cpkomut. Komutun temel sözdizimi -
$ cp source_file destination_file
Aşağıda, mevcut dosyanın bir kopyasını oluşturma örneği verilmiştir. filename.
$ cp filename copyfile
$
Şimdi bir dosya daha bulacaksınız copyfilemevcut dizininizde. Bu dosya orijinal dosya ile tamamen aynı olacaktırfilename.
Dosyaları Yeniden Adlandırma
Bir dosyanın adını değiştirmek için, mvkomut. Temel sözdizimi aşağıdadır -
$ mv old_file new_file
Aşağıdaki program mevcut dosyayı yeniden adlandıracak filename -e newfile.
$ mv filename newfile $
mvkomutu mevcut dosyayı tamamen yeni dosyaya taşıyacaktır. Bu durumda sadece bulacaksınnewfile mevcut dizininizde.
Dosyaları Silme
Mevcut bir dosyayı silmek için, rmkomut. Temel sözdizimi aşağıdadır -
$ rm filename
Caution- Bir dosya yararlı bilgiler içerebilir. Bunu kullanırken her zaman dikkatli olmanız önerilir.Deletekomut. Kullanmak daha iyidir-i ile birlikte seçenek rm komut.
Mevcut dosyanın nasıl tamamen kaldırılacağını gösteren örnek aşağıdadır. filename.
$ rm filename
$
Aşağıda verilen komutla aynı anda birden fazla dosyayı kaldırabilirsiniz -
$ rm filename1 filename2 filename3
$
Standart Unix Akışları
Normal koşullar altında, her Unix programı başladığında kendisi için açılan üç akışa (dosya) sahiptir -
stdin- Bu, standart girdi olarak adlandırılır ve ilişkili dosya tanımlayıcısı 0'dır. Bu aynı zamanda STDIN olarak da temsil edilir. Unix programı, STDIN'den varsayılan girişi okuyacaktır.
stdout- Bu, standart çıktı olarak adlandırılır ve ilişkili dosya tanımlayıcısı 1'dir. Bu aynı zamanda STDOUT olarak temsil edilir. Unix programı varsayılan çıktıyı STDOUT'ta yazacaktır.
stderr- Bu, standart hata olarak adlandırılır ve ilişkili dosya tanımlayıcısı 2'dir. Bu aynı zamanda STDERR olarak da temsil edilir. Unix programı tüm hata mesajlarını STDERR'a yazacaktır.
Bu bölümde, Unix'te dizin yönetimi hakkında ayrıntılı olarak tartışacağız.
Bir dizin, tek başına dosya adlarını ve ilgili bilgileri depolamak olan bir dosyadır. Sıradan, özel veya dizin olsun, tüm dosyalar dizinlerde bulunur.
Unix, dosyaları ve dizinleri düzenlemek için hiyerarşik bir yapı kullanır. Bu yapı genellikle bir dizin ağacı olarak adlandırılır. Ağacın tek bir kök düğümü vardır, eğik çizgi karakteri (/) ve diğer tüm dizinler onun altında yer alır.
Ana Dizin
İlk oturum açtığınızda kendinizi içinde bulduğunuz dizine ana dizininiz denir.
Dosyalarınızı düzenlemek için oluşturacağınız ana dizininizde ve alt dizinlerde işinizin çoğunu yapacaksınız.
Aşağıdaki komutu kullanarak istediğiniz zaman ana dizininize gidebilirsiniz -
$cd ~
$
Buraya ~ana dizini gösterir. Başka bir kullanıcının ana dizinine gitmeniz gerektiğini varsayalım, aşağıdaki komutu kullanın -
$cd ~username
$
Son dizininize gitmek için aşağıdaki komutu kullanabilirsiniz -
$cd -
$
Mutlak / Göreli Yol Adları
Dizinler, üstte kök (/) olacak şekilde bir hiyerarşi içinde düzenlenmiştir. Herhangi bir dosyanın hiyerarşi içindeki konumu, yol adıyla açıklanır.
Bir yol adının öğeleri, / ile ayrılır. Bir yol adı, kök ile ilişkili olarak tanımlanmışsa mutlaktır, dolayısıyla mutlak yol adları her zaman / ile başlar.
Aşağıda mutlak dosya adlarının bazı örnekleri verilmiştir.
/etc/passwd
/users/sjones/chem/notes
/dev/rdsk/Os3
Bir yol adı aynı zamanda mevcut çalışma dizininize göre de olabilir. Göreli yol adları asla / ile başlamaz. Kullanıcı amrood'un ana dizinine göre bazı yol adları şöyle görünebilir -
chem/notes
personal/res
Herhangi bir zamanda dosya sistemi hiyerarşisi içinde nerede olduğunuzu belirlemek için şu komutu girin: pwd mevcut çalışma dizinini yazdırmak için -
$pwd
/user0/home/amrood
$
Listeleme Dizinleri
Dosyaları bir dizinde listelemek için aşağıdaki sözdizimini kullanabilirsiniz -
$ls dirname
Aşağıda, içinde bulunan tüm dosyaları listeleyen örnek verilmiştir. /usr/local dizin -
$ls /usr/local
X11 bin gimp jikes sbin
ace doc include lib share
atalk etc info man ami
Dizinler Oluşturma
Şimdi nasıl dizin oluşturulacağını anlayacağız. Dizinler aşağıdaki komutla oluşturulur -
$mkdir dirname
Burada dizin, oluşturmak istediğiniz dizinin mutlak veya göreceli yol adıdır. Örneğin, - komutu -
$mkdir mydir $
Dizini oluşturur mydirmevcut dizinde. İşte başka bir örnek -
$mkdir /tmp/test-dir $
Bu komut dizini oluşturur test-dir içinde /tmpdizin. mkdir komut, istenen dizini başarıyla oluşturursa hiçbir çıktı üretmez.
Komut satırında birden fazla dizin verirseniz, mkdirdizinlerin her birini oluşturur. Örneğin, -
$mkdir docs pub $
Geçerli dizinin altında docs ve pub dizinlerini oluşturur.
Ana Dizinler Oluşturma
Şimdi ana dizinlerin nasıl oluşturulacağını anlayacağız. Bazen bir dizin oluşturmak istediğinizde, onun üst dizini veya dizinleri mevcut olmayabilir. Bu durumda,mkdir aşağıdaki gibi bir hata mesajı verir -
$mkdir /tmp/amrood/test mkdir: Failed to make directory "/tmp/amrood/test"; No such file or directory $
Bu gibi durumlarda, şunu belirtebilirsiniz: -p seçeneği mkdirkomut. Sizin için gerekli tüm dizinleri oluşturur. Örneğin -
$mkdir -p /tmp/amrood/test $
Yukarıdaki komut, gerekli tüm ana dizinleri oluşturur.
Dizinleri Kaldırma
Dizinler kullanılarak silinebilir rmdir aşağıdaki gibi komut -
$rmdir dirname $
Note - Bir dizini kaldırmak için boş olduğundan emin olun, yani bu dizin içinde herhangi bir dosya veya alt dizin olmamalıdır.
Bir seferde aşağıdaki şekilde birden fazla dizini kaldırabilirsiniz -
$rmdir dirname1 dirname2 dirname3 $
Yukarıdaki komut, dizinadı1, dizinadı2 ve dizinadı3, boş iseler, kaldırır. rmdir komut başarılı olursa çıktı üretmez.
Dizinleri Değiştirme
Kullanabilirsiniz cdbir ana dizine geçmekten daha fazlasını yapmak için komut. Geçerli bir mutlak veya göreceli yol belirterek herhangi bir dizine geçmek için bunu kullanabilirsiniz. Sözdizimi aşağıda verildiği gibidir -
$cd dirname $
Buraya, dirnamedeğiştirmek istediğiniz dizinin adıdır. Örneğin, - komutu -
$cd /usr/local/bin $
Dizinde yapılan değişiklikler /usr/local/bin. Bu dizinden şunları yapabilirsiniz:cd dizine /usr/home/amrood aşağıdaki göreli yolu kullanarak -
$cd ../../home/amrood $
Dizinleri Yeniden Adlandırma
mv (move)komutu, bir dizini yeniden adlandırmak için de kullanılabilir. Sözdizimi aşağıdaki gibidir -
$mv olddir newdir $
Bir dizini yeniden adlandırabilirsiniz mydir -e yourdir aşağıdaki gibi -
$mv mydir yourdir $
Dizinler. (nokta) ve .. (nokta nokta)
filename .(nokta) mevcut çalışma dizinini temsil eder; vefilename .. (nokta nokta), genellikle ana dizin olarak adlandırılan, geçerli çalışma dizininin bir üst düzeyindeki dizini temsil eder.
Mevcut çalışma dizinlerinin / dosyaların bir listesini göstermek için komut girersek ve -a option tüm dosyaları ve -l option Uzun listeyi sağlamak için aşağıdaki sonucu alacağız.
$ls -la drwxrwxr-x 4 teacher class 2048 Jul 16 17.56 . drwxr-xr-x 60 root 1536 Jul 13 14:18 .. ---------- 1 teacher class 4210 May 1 08:27 .profile -rwxr-xr-x 1 teacher class 1948 May 12 13:42 memo $
Bu bölümde, Unix'teki dosya izni ve erişim modları hakkında ayrıntılı olarak tartışacağız. Dosya sahipliği, dosyaları depolamak için güvenli bir yöntem sağlayan önemli bir Unix bileşenidir. Unix'teki her dosya aşağıdaki özniteliklere sahiptir -
Owner permissions - Sahibin izinleri, dosyanın sahibinin dosya üzerinde hangi işlemleri gerçekleştirebileceğini belirler.
Group permissions - Grubun izinleri, bir dosyanın ait olduğu grubun üyesi olan bir kullanıcının dosya üzerinde hangi eylemleri gerçekleştirebileceğini belirler.
Other (world) permissions - Başkalarının izinleri, diğer tüm kullanıcıların dosya üzerinde hangi eylemi gerçekleştirebileceğini gösterir.
İzin Göstergeleri
Kullanırken ls -l komut, dosya izni ile ilgili çeşitli bilgileri aşağıdaki gibi görüntüler -
$ls -l /home/amrood
-rwxr-xr-- 1 amrood users 1024 Nov 2 00:10 myfile
drwxr-xr--- 1 amrood users 1024 Nov 2 00:10 mydir
Buradaki ilk sütun, farklı erişim modlarını, yani bir dosya veya dizinle ilişkili izni temsil eder.
İzinler, üçlü gruplara ayrılır ve gruptaki her konum, şu sırayla belirli bir izni belirtir: okuma (r), yazma (w), yürütme (x) -
İlk üç karakter (2-4), dosyanın sahibinin izinlerini temsil eder. Örneğin,-rwxr-xr-- sahibin okuma (r), yazma (w) ve yürütme (x) iznine sahip olduğunu gösterir.
Üç karakterden oluşan ikinci grup (5-7), dosyanın ait olduğu grubun izinlerinden oluşur. Örneğin,-rwxr-xr-- grubun okuma (r) ve yürütme (x) iznine sahip olduğunu, ancak yazma izni olmadığını gösterir.
Üç karakterden oluşan son grup (8-10), diğer herkes için izinleri temsil eder. Örneğin,-rwxr-xr-- var olduğunu temsil eder read (r) sadece izin.
Dosya Erişim Modları
Bir dosyanın izinleri, bir Unix sisteminin güvenliğindeki ilk savunma hattıdır. Unix izinlerinin temel yapı taşları şunlardır:read, write, ve execute aşağıda açıklanan izinler -
Okuyun
Dosyanın içeriğini okuma, yani görüntüleme yeteneği verir.
Yazmak
Dosyanın içeriğini değiştirme veya kaldırma yeteneği verir.
Yürüt
Yürütme izinlerine sahip kullanıcı bir dosyayı program olarak çalıştırabilir.
Dizin Erişim Modları
Dizin erişim modları, diğer herhangi bir dosyayla aynı şekilde listelenir ve düzenlenir. Bahsedilmesi gereken birkaç farklılık var -
Okuyun
Bir dizine erişim, kullanıcının içeriği okuyabileceği anlamına gelir. Kullanıcı şuna bakabilir:filenames dizinin içinde.
Yazmak
Erişim, kullanıcının dizine dosya ekleyebileceği veya dizinden dosya silebileceği anlamına gelir.
Yürüt
Bir dizini yürütmek gerçekten bir anlam ifade etmiyor, bu yüzden bunu bir geçiş izni olarak düşünün.
Bir kullanıcının sahip olması gerekir execute erişim bin yürütmek için dizini ls ya da cd komut.
İzinleri Değiştirme
Dosyayı veya dizin izinlerini değiştirmek için, chmod(modu değiştir) komutu. Chmod'u kullanmanın iki yolu vardır - sembolik mod ve mutlak mod.
Chmod'u Sembolik Modda kullanma
Yeni başlayanlar için dosya veya dizin izinlerini değiştirmenin en kolay yolu sembolik modu kullanmaktır. Sembolik izinlerle, aşağıdaki tablodaki operatörleri kullanarak istediğiniz izin setini ekleyebilir, silebilir veya belirtebilirsiniz.
Sr.No. | Chmod operatörü ve Açıklama |
---|---|
1 | + Belirtilen izinleri bir dosyaya veya dizine ekler. |
2 | - Belirtilen izinleri bir dosya veya dizinden kaldırır. |
3 | = Belirlenmiş izinleri ayarlar. |
İşte bir örnek testfile. Koşuls -1 test dosyasında dosyanın izinlerinin aşağıdaki gibi olduğunu gösterir -
$ls -l testfile
-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Sonra her örnek chmod önceki tablodaki komut test dosyasında çalıştırılır, ardından ls –l, böylece izin değişikliklerini görebilirsiniz -
$chmod o+wx testfile $ls -l testfile
-rwxrwxrwx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod u-x testfile $ls -l testfile
-rw-rwxrwx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod g = rx testfile $ls -l testfile
-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile
İşte bu komutları tek bir satırda nasıl birleştirebileceğiniz -
$chmod o+wx,u-x,g = rx testfile $ls -l testfile
-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile
Chmod'u Mutlak İzinlerle Kullanma
İzinleri chmod komutuyla değiştirmenin ikinci yolu, dosya için her izin kümesini belirtmek için bir sayı kullanmaktır.
Aşağıdaki tabloda gösterildiği gibi, her izne bir değer atanır ve her izin kümesinin toplamı, o küme için bir sayı sağlar.
Numara | Sekizli İzin Temsilciliği | Referans |
---|---|---|
0 | İzin yok | --- |
1 | İzni uygula | --x |
2 | Yazma izni | -w- |
3 | Yürütme ve yazma izni: 1 (yürüt) + 2 (yazma) = 3 | -wx |
4 | Okuma izni | r-- |
5 | Okuma ve yürütme izni: 4 (okuma) + 1 (yürütme) = 5 | rx |
6 | Okuma ve yazma izni: 4 (okuma) + 2 (yazma) = 6 | rw- |
7 | Tüm izinler: 4 (okuma) + 2 (yazma) + 1 (yürütme) = 7 | rwx |
İşte test dosyasını kullanan bir örnek. Koşuls -1 test dosyasında dosyanın izinlerinin aşağıdaki gibi olduğunu gösterir -
$ls -l testfile
-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Sonra her örnek chmod önceki tablodaki komut test dosyasında çalıştırılır, ardından ls –l, böylece izin değişikliklerini görebilirsiniz -
$ chmod 755 testfile
$ls -l testfile -rwxr-xr-x 1 amrood users 1024 Nov 2 00:10 testfile $chmod 743 testfile
$ls -l testfile -rwxr---wx 1 amrood users 1024 Nov 2 00:10 testfile $chmod 043 testfile
$ls -l testfile
----r---wx 1 amrood users 1024 Nov 2 00:10 testfile
Sahipleri ve Grupları Değiştirme
Unix'te bir hesap oluştururken, bir owner ID ve bir group IDher kullanıcıya. Yukarıda belirtilen tüm izinler, Sahip ve Gruplara göre de atanır.
Dosyaların sahibini ve grubunu değiştirmek için iki komut mevcuttur -
chown - chown komutun açılımı "change owner" ve bir dosyanın sahibini değiştirmek için kullanılır.
chgrp - chgrp komutun açılımı "change group" ve bir dosyanın grubunu değiştirmek için kullanılır.
Sahipliği Değiştirme
chownkomutu bir dosyanın sahipliğini değiştirir. Temel sözdizimi aşağıdaki gibidir -
$ chown user filelist
Kullanıcının değeri şu olabilir: name of a user sistemde veya user id (uid) sistemdeki bir kullanıcının.
Aşağıdaki örnek, kavramı anlamanıza yardımcı olacaktır -
$ chown amrood testfile $
Verilen dosyanın sahibini kullanıcıya değiştirir amrood.
NOTE - Süper kullanıcı, kök, herhangi bir dosyanın sahipliğini değiştirme konusunda sınırsız bir yeteneğe sahiptir, ancak normal kullanıcılar yalnızca sahip oldukları dosyaların sahipliğini değiştirebilir.
Grup Sahipliğini Değiştirme
chgrpcommand bir dosyanın grup sahipliğini değiştirir. Temel sözdizimi aşağıdaki gibidir -
$ chgrp group filelist
Grubun değeri, name of a group sistemde veya the group ID (GID) sistemdeki bir grubun.
Aşağıdaki örnek, kavramı anlamanıza yardımcı olur -
$ chgrp special testfile
$
Verilen dosyanın grubunu şu şekilde değiştirir: special grubu.
SUID ve SGID Dosya İzni
Genellikle bir komut yürütüldüğünde, görevini yerine getirmek için özel ayrıcalıklarla yürütülmesi gerekecektir.
Örnek olarak, şifrenizi değiştirdiğinizde passwd komut, yeni şifreniz dosyada saklanır /etc/shadow.
Normal bir kullanıcı olarak, sahip değilsiniz read veya writegüvenlik nedeniyle bu dosyaya erişim, ancak parolanızı değiştirdiğinizde, bu dosyaya yazma izninizin olması gerekir. Bu şu demektirpasswd programın dosyaya yazabilmeniz için size ek izinler vermesi gerekir /etc/shadow.
Ek izinler, programlara şu adıyla bilinen bir mekanizma aracılığıyla verilir: Set User ID (SUID) ve Set Group ID (SGID) bitler.
SUID biti etkin olan bir programı çalıştırdığınızda, o programın sahibinin izinlerini devralırsınız. SUID bit setine sahip olmayan programlar, programı başlatan kullanıcının izinleriyle çalıştırılır.
SGID için de durum böyledir. Normalde programlar grup izinlerinizle çalışır, ancak bunun yerine grubunuz sadece bu program için programın grup sahibine değiştirilir.
SUID ve SGID bitleri harf olarak görünecektir "s"izin varsa. SUID"s" bit, sahiplerin izin bitlerinde yer alacaktır. execute izin normalde bulunur.
Örneğin, - komutu -
$ ls -l /usr/bin/passwd
-r-sr-xr-x 1 root bin 19031 Feb 7 13:47 /usr/bin/passwd*
$
SUID bitinin ayarlandığını ve komutun köke ait olduğunu gösterir. Büyük harfS küçük harf yerine yürütme konumunda s yürütme bitinin ayarlanmadığını gösterir.
Dizinde yapışkan bit etkinleştirilirse, dosyalar yalnızca aşağıdaki kullanıcılardan biriyseniz kaldırılabilir -
- Yapışkan dizinin sahibi
- Kaldırılan dosyanın sahibi
- Süper kullanıcı, kök
Herhangi bir dizin için SUID ve SGID bitlerini ayarlamak için aşağıdaki komutu deneyin -
$ chmod ug+s dirname
$ ls -l drwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname $
Bu bölümde Unix ortamı hakkında ayrıntılı olarak tartışacağız. Önemli bir Unix kavramı,environment, ortam değişkenleri tarafından tanımlanan. Bazıları sistem tarafından, bazıları sizin tarafınızdan, bazıları ise kabuk tarafından veya başka bir programı yükleyen herhangi bir program tarafından belirlenir.
Bir değişken, bir değer atadığımız bir karakter dizesidir. Atanan değer bir sayı, metin, dosya adı, cihaz veya başka herhangi bir veri türü olabilir.
Örneğin, önce bir TEST değişkeni ayarlıyoruz ve sonra değerine echo komut -
$TEST="Unix Programming" $echo $TEST
Aşağıdaki sonucu verir.
Unix Programming
Ortam değişkenlerinin kullanılmadan ayarlandığını unutmayın. $işareti ancak bunlara erişirken önek olarak $ işaretini kullanıyoruz. Bu değişkenler, biz kabuktan çıkana kadar değerlerini korurlar.
Sisteme giriş yaptığınızda, kabuk adı verilen bir aşamadan geçer. initializationortamı kurmak için. Bu genellikle kabuğun aşağıdaki dosyaları okumasını içeren iki aşamalı bir işlemdir -
- /etc/profile
- profile
Süreç aşağıdaki gibidir -
Kabuk, dosyanın /etc/profile var.
Varsa, kabuk onu okur. Aksi takdirde bu dosya atlanır. Hata mesajı görüntülenmiyor.
Kabuk, dosyanın .profileana dizininizde var. Ana dizininiz, oturum açtıktan sonra başladığınız dizindir.
Varsa, kabuk onu okur; aksi takdirde, kabuk onu atlar. Hata mesajı görüntülenmiyor.
Bu dosyaların her ikisi de okunduğu anda, kabuk bir komut istemi görüntüler -
$
Bu, yürütülmelerini sağlamak için komutları girebileceğiniz istemdir.
Note - Burada ayrıntılı olarak açıklanan kabuk başlatma işlemi tümü için geçerlidir Bourne tür kabukları, ancak bazı ek dosyalar bash ve ksh.
.Profile Dosyası
Dosya /etc/profile Unix makinenizin sistem yöneticisi tarafından korunur ve bir sistemdeki tüm kullanıcılar için gerekli olan kabuk başlatma bilgilerini içerir.
Dosya .profilekontrolünüz altında. Bu dosyaya istediğiniz kadar kabuk özelleştirme bilgisi ekleyebilirsiniz. Yapılandırmanız gereken minimum bilgi kümesi şunları içerir:
- Kullandığınız terminalin türü.
- Komutların bulunacağı dizinlerin listesi.
- Terminalinizin görünümünü ve hissini etkileyen değişkenlerin bir listesi.
Kontrol edebilirsiniz .profileana dizininizde mevcuttur. Vi düzenleyicisini kullanarak açın ve ortamınız için ayarlanmış tüm değişkenleri kontrol edin.
Terminal Türünü Ayarlama
Genellikle, kullandığınız terminal türü otomatik olarak login veya gettyprogramları. Bazen, otomatik yapılandırma işlemi terminalinizi yanlış tahmin eder.
Terminaliniz yanlış ayarlanmışsa, komutların çıktısı tuhaf görünebilir veya kabukla düzgün bir şekilde etkileşime giremeyebilirsiniz.
Durumun böyle olmadığından emin olmak için çoğu kullanıcı terminallerini aşağıdaki şekilde en düşük ortak paydaya ayarlar -
$TERM=vt100 $
PATH'i Ayarlama
Komut istemine herhangi bir komut yazdığınızda, komut çalıştırılmadan önce kabuğun bu komutu bulması gerekir.
PATH değişkeni, kabuğun komutları araması gereken yerleri belirtir. Genellikle Yol değişkeni şu şekilde ayarlanır -
$PATH=/bin:/usr/bin $
Burada, iki nokta üst üste karakteriyle ayrılmış tek tek girişlerin her biri (:)dizinlerdir. Kabuğun bir komutu yürütmesini talep ederseniz ve PATH değişkeninde verilen dizinlerin hiçbirinde bulamazsa, aşağıdakine benzer bir mesaj görünür -
$hello hello: not found $
Bir sonraki bölümde tartışılacak olan PS1 ve PS2 gibi değişkenler var.
PS1 ve PS2 Değişkenleri
Kabuğun komut isteminiz olarak görüntülediği karakterler, PS1 değişkeninde saklanır. Bu değişkeni istediğiniz herhangi bir şey olacak şekilde değiştirebilirsiniz. Değiştirir değiştirmez, o andan itibaren kabuk tarafından kullanılacaktır.
Örneğin, şu komutu verdiyseniz -
$PS1='=>'
=>
=>
=>
Komutunuz => olacaktır. Değerini ayarlamak içinPS1 çalışma dizinini göstermesi için komutu verin -
=>PS1="[\u@\h \w]\$"
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$ [root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$
Bu komutun sonucu, istemde kullanıcının kullanıcı adını, makinenin adını (ana bilgisayar adı) ve çalışma dizinini görüntülemesidir.
Epeyce var escape sequencesPS1 için değer bağımsız değişkenleri olarak kullanılabilir; bilgi isteminin sizi bunaltmaması için kendinizi en kritik olanla sınırlamaya çalışın.
Sr.No. | Kaçış Sırası ve Açıklaması |
---|---|
1 | \t HH: MM: SS olarak ifade edilen mevcut saat |
2 | \d Hafta içi Ay Tarihi olarak ifade edilen güncel tarih |
3 | \n Yeni hat |
4 | \s Mevcut kabuk ortamı |
5 | \W Çalışma dizini |
6 | \w Çalışma dizininin tam yolu |
7 | \u Mevcut kullanıcının kullanıcı adı |
8 | \h Mevcut makinenin ana bilgisayar adı |
9 | \# Mevcut komutun komut numarası. Yeni bir komut girildiğinde artar |
10 | \$ Etkili UID 0 ise (yani, kök olarak oturum açtıysanız), bilgi istemini # karakteriyle sonlandırın; aksi halde $ işaretini kullanın |
Değişikliği her oturum açtığınızda kendiniz yapabilir veya değişikliğin PS1'de otomatik olarak yapılmasını sağlayabilirsiniz. .profile dosya.
Tamamlanmamış bir komut verdiğinizde, kabuk ikincil bir komut istemi görüntüler ve komutu tamamlamanızı ve vurmanızı bekler. Enter tekrar.
Varsayılan ikincil komut istemi > (büyüktür işaretidir), ancak yeniden tanımlanarak değiştirilebilir PS2 kabuk değişkeni -
Varsayılan ikincil komut istemini kullanan örnek aşağıdadır -
$ echo "this is a > test" this is a test $
Aşağıda verilen örnek, PS2'yi özelleştirilmiş bir komut istemiyle yeniden tanımlamaktadır -
$ PS2="secondary prompt->" $ echo "this is a
secondary prompt->test"
this is a
test
$
Ortam Değişkenleri
Aşağıda, önemli ortam değişkenlerinin kısmi listesi verilmiştir. Bu değişkenler aşağıda belirtildiği gibi ayarlanır ve erişilir -
Sr.No. | Değişken ve Açıklama |
---|---|
1 | DISPLAY Ekranın tanımlayıcısını içerir. X11 programlar varsayılan olarak kullanmalıdır. |
2 | HOME Geçerli kullanıcının ana dizinini gösterir: cd için varsayılan argüman built-in komut. |
3 | IFS Gösterir Internal Field Separator Bu, ayrıştırıcı tarafından genişletmeden sonra sözcük ayırma için kullanılır. |
4 | LANG LANG, varsayılan sistem yerel ayarına genişler; LC_ALL bunu geçersiz kılmak için kullanılabilir. Örneğin, değeript_BR, dil (Brezilya) Portekizce ve yerel ayar Brezilya olarak ayarlanır. |
5 | LD_LIBRARY_PATH Dinamik bağlayıcıya sahip bir Unix sistemi, dinamik bağlayıcının yürütmeden sonra bir işlem görüntüsü oluştururken, diğer dizinlerde arama yapmadan önce paylaşılan nesneleri araması gereken dizinlerin sütunlarla ayrılmış bir listesini içerir. |
6 | PATH Komutlar için arama yolunu gösterir. Kabuğun komutları aradığı iki nokta üst üste işaretiyle ayrılmış dizin listesidir. |
7 | PWD Cd komutu tarafından belirlenen geçerli çalışma dizinini gösterir. |
8 | RANDOM Her başvurulduğunda 0 ile 32.767 arasında rastgele bir tamsayı üretir. |
9 | SHLVL Her bash örneği başlatıldığında birer birer artar. Bu değişken, yerleşik çıkış komutunun geçerli oturumu sonlandırıp sonlandırmadığını belirlemek için kullanışlıdır. |
10 | TERM Görüntü türünü ifade eder. |
11 | TZ Saat dilimini ifade eder. GMT, AST vb. Değerler alabilir. |
12 | UID Kabuk başlangıcında başlatılan mevcut kullanıcının sayısal kullanıcı kimliğine genişler. |
Aşağıda, birkaç ortam değişkenini gösteren örnek örnek verilmiştir -
$ echo $HOME /root ]$ echo $DISPLAY $ echo $TERM xterm $ echo $PATH /usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin $
Bu bölümde, Unix'in temel araçları olan Yazdırma ve E-posta hakkında ayrıntılı olarak tartışacağız. Şimdiye kadar Unix işletim sistemini ve temel komutlarının doğasını anlamaya çalıştık. Bu bölümde, günlük yaşamımızda kullanılabilecek bazı önemli Unix yardımcı programlarını öğreneceğiz.
Dosyaları Yazdırma
Bir Unix sisteminde bir dosyayı yazdırmadan önce, kenar boşluklarını ayarlamak, bazı kelimeleri vurgulamak vb. İçin dosyayı yeniden biçimlendirmek isteyebilirsiniz. Çoğu dosya yeniden biçimlendirilmeden de yazdırılabilir, ancak ham çıktı o kadar çekici olmayabilir.
Unix'in birçok sürümü iki güçlü metin biçimlendiricisi içerir, nroff ve troff.
Pr Komutu
prkomutu, terminal ekranındaki veya bir yazıcı için dosyaların küçük biçimlendirmesini yapar. Örneğin, bir dosyada uzun bir ad listeniz varsa, bunu ekranda iki veya daha fazla sütun halinde biçimlendirebilirsiniz.
Aşağıdaki sözdizimi pr komut -
pr option(s) filename(s)
prdosyanın formatını yalnızca ekranda veya yazdırılmış kopya üzerinde değiştirir; orijinal dosyayı değiştirmez. Aşağıdaki tablo bazılarını listelerpr seçenekler -
Sr.No. | Seçenek ve Açıklama |
---|---|
1 | -k Üretir k çıktı sütunları |
2 | -d Çıktıyı çift aralıkla (tümünde değil pr sürümler) |
3 | -h "header" Sonraki öğeyi rapor başlığı olarak alır |
4 | -t Üstbilgi baskısını ve üst / alt kenar boşluklarını ortadan kaldırır |
5 | -l PAGE_LENGTH Sayfa uzunluğunu PAGE_LENGTH (66) satır olarak ayarlar. Varsayılan metin satırı sayısı 56'dır |
6 | -o MARGIN Her satırı MARGIN (sıfır) boşluklarla kaydırır |
7 | -w PAGE_WIDTH Yalnızca birden çok metin sütunu çıktısı için sayfa genişliğini PAGE_WIDTH (72) karakter olarak ayarlar |
Kullanmadan önce pr, işte yiyecek adlı örnek bir dosyanın içeriği.
$cat food Sweet Tooth Bangkok Wok Mandalay Afghani Cuisine Isle of Java Big Apple Deli Sushi and Sashimi Tio Pepe's Peppers ........ $
Kullanalım prRestoranlar başlığı ile iki sütunlu bir rapor oluşturma komutu -
$pr -2 -h "Restaurants" food Nov 7 9:58 1997 Restaurants Page 1 Sweet Tooth Isle of Java Bangkok Wok Big Apple Deli Mandalay Sushi and Sashimi Afghani Cuisine Tio Pepe's Peppers ........ $
Lp ve lpr Komutları
Komuta lp veya lprbir dosyayı ekran görüntüsünün aksine kağıda yazdırır. Kullanarak biçimlendirmeye hazır olduğunuzdapr komutu, dosyanızı bilgisayarınıza bağlı yazıcıda yazdırmak için bu komutlardan herhangi birini kullanabilirsiniz.
Sistem yöneticiniz muhtemelen sitenizde varsayılan bir yazıcı kurmuştur. Adlı bir dosyayı yazdırmak içinfood varsayılan yazıcıda, lp veya lpr komut, aşağıdaki örnekte olduğu gibi -
$lp food request id is laserp-525 (1 file) $
lp komutu, yazdırma işini iptal etmek veya durumunu kontrol etmek için kullanabileceğiniz bir kimlik gösterir.
Eğer kullanıyorsanız lp -n komutunu kullanabilirsinizNumNumara kopya yazdırma seçeneği. Komutla birliktelpr, kullanabilirsiniz -Num aynısı için.
Paylaşılan ağa bağlı birden fazla yazıcı varsa, -d kullanarak bir yazıcı seçebilirsiniz.printer seçeneği lp komutuyla birlikte ve aynı amaç için -P'yi kullanabilirsinizprinterlpr komutu ile birlikte seçenek. Burada yazıcı, yazıcı adıdır.
Lpstat ve lpq Komutları
lpstat komutu yazıcı kuyruğunda ne olduğunu gösterir: istek kimlikleri, sahipler, dosya boyutları, işlerin yazdırılmak üzere ne zaman gönderildiği ve isteklerin durumu.
Kullanım lpstat -oKendinizinki dışındaki tüm çıktı isteklerini görmek istiyorsanız. İstekler, yazdırılacakları sırayla gösterilir -
$lpstat -o laserp-573 john 128865 Nov 7 11:27 on laserp laserp-574 grace 82744 Nov 7 11:28 laserp-575 john 23347 Nov 7 11:35 $
lpq şundan biraz farklı bilgiler verir lpstat -o -
$lpq laserp is ready and printing Rank Owner Job Files Total Size active john 573 report.ps 128865 bytes 1st grace 574 ch03.ps ch04.ps 82744 bytes 2nd john 575 standard input 23347 bytes $
Buradaki ilk satır yazıcı durumunu gösterir. Yazıcı devre dışıysa veya kağıt biterse, bu ilk satırda farklı mesajlar görebilirsiniz.
İptal ve lprm Komutları
cancel komutu, bir yazdırma isteğini sonlandırır. lp command. lprm komut hepsini sonlandırır lpr requests. İsteğin kimliğini (lp veya lpq ile görüntülenir) veya yazıcının adını belirtebilirsiniz.
$cancel laserp-575 request "laserp-575" cancelled $
O anda yazdırılan herhangi bir isteği iptal etmek için, kimliğine bakılmaksızın, sadece cancel ve yazıcı adını girin -
$cancel laserp request "laserp-573" cancelled $
lprmkomutu size aitse aktif işi iptal edecektir. Aksi takdirde, iş numaralarını bağımsız değişken olarak verebilir veya birdash (-) tüm işlerinizi kaldırmak için -
$lprm 575 dfA575diamond dequeued cfA575diamond dequeued $
lprm komutu size yazıcı kuyruğundan kaldırılan gerçek dosya adlarını söyler.
E-mail göndermek
Posta göndermek ve almak için Unix posta komutunu kullanırsınız. İşte bir e-posta göndermenin sözdizimi -
$mail [-s subject] [-c cc-addr] [-b bcc-addr] to-addr
Posta komutları ile ilgili önemli seçenekler
Sr.No. | Seçenek ve Açıklama |
---|---|
1 | -s Komut satırında konuyu belirtir. |
2 | -c Karbon kopyalarını kullanıcı listesine gönderir. Liste, virgülle ayrılmış bir isim listesi olmalıdır. |
3 | -b Kör karbon kopyaları listeye gönderir. Liste, virgülle ayrılmış bir isim listesi olmalıdır. |
Aşağıda, [email protected] adresine bir test mesajı göndermek için bir örnek verilmiştir.
$mail -s "Test Message" [email protected]
Ardından mesajınızı yazmanız ve ardından "control-D"satırın başında. Durdurmak için nokta yazmanız yeterlidir(.) aşağıdaki gibi -
Hi,
This is a test
.
Cc:
Kullanarak eksiksiz bir dosya gönderebilirsiniz. redirect < operator aşağıdaki gibi -
$mail -s "Report 05/06/07" [email protected] < demo.txt
Unix sisteminizde gelen e-postayı kontrol etmek için aşağıdaki gibi e-postayı yazmanız yeterlidir -
$mail
no email
Bu bölümde, Unix'teki borular ve filtreler hakkında ayrıntılı olarak tartışacağız. Bir programın çıktısının bir sonraki programın girdisi olması için iki komutu birbirine bağlayabilirsiniz. Bu şekilde bağlanan iki veya daha fazla komut bir boru oluşturur.
Bir boru yapmak için dikey bir çubuk koyun (|) iki komut arasındaki komut satırında.
Bir program girdisini başka bir programdan aldığında, o girdi üzerinde bazı işlemler yapar ve sonucu standart çıktıya yazar. Olarak anılırfilter.
Grep Komutanlığı
Grep komutu, belirli bir desene sahip satırlar için bir dosya veya dosyaları arar. Sözdizimi -
$grep pattern file(s)
İsim "grep" ed (bir Unix satır düzenleyicisi) komutundan gelir g/re/p Bu, "genel olarak bir normal ifade arayın ve onu içeren tüm satırları yazdırın" anlamına gelir.
Normal ifade, bazı düz metin (örneğin bir kelime) ve / veya kalıp eşleştirme için kullanılan özel karakterlerdir.
Grep'in en basit kullanımı, tek bir kelimeden oluşan bir kalıp aramaktır. Bir kanalda kullanılabilir, böylece yalnızca belirli bir dizeyi içeren girdi dosyalarının satırları standart çıktıya gönderilir. Grep'e okunması için bir dosya adı vermezseniz, standart girdisini okur; tüm filtre programlarının çalışma şekli budur -
$ls -l | grep "Aug"
-rw-rw-rw- 1 john doc 11008 Aug 6 14:10 ch02
-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07
-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
$
İle birlikte kullanabileceğiniz çeşitli seçenekler vardır. grep komut -
Sr.No. | Seçenek ve Açıklama |
---|---|
1 | -v Desenle eşleşmeyen tüm satırları yazdırır. |
2 | -n Eşleşen satırı ve satır numarasını yazdırır. |
3 | -l Yalnızca eşleşen satırlara sahip dosyaların adlarını yazdırır ("l" harfi) |
4 | -c Yalnızca eşleşen satır sayısını yazdırır. |
5 | -i Büyük veya küçük harfle eşleşir. |
Şimdi grep'e şu satırları bulmasını söyleyen bir düzenli ifade kullanalım: "carol", ardından sıfır veya normal ifadede ". *" olarak kısaltılan diğer karakterler, ardından "Ağustos" .−
Burada kullanıyoruz -i büyük / küçük harfe duyarlı olmayan arama seçeneği -
$ls -l | grep -i "carol.*aug"
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
$
Sort Komutu
sortkomutu, metin satırlarını alfabetik veya sayısal olarak düzenler. Aşağıdaki örnek, yemek dosyasındaki satırları sıralar -
$sort food
Afghani Cuisine
Bangkok Wok
Big Apple Deli
Isle of Java
Mandalay
Sushi and Sashimi
Sweet Tooth
Tio Pepe's Peppers
$
sortkomutu, varsayılan olarak metin satırlarını alfabetik olarak düzenler. Sıralamayı kontrol eden birçok seçenek vardır -
Sr.No. | Açıklama |
---|---|
1 | -n Sayısal olarak sıralar (örnek: 10, 2'den sonra sıralanır), boşlukları ve sekmeleri yok sayar. |
2 | -r Sıralamanın sırasını tersine çevirir. |
3 | -f Büyük ve küçük harfleri birlikte sıralar. |
4 | +x Önce görmezden gelir x sıralarken alanlar. |
Bir boruya ikiden fazla komut bağlanabilir. Kullanarak önceki bir boru örneğini almakgrep, Ağustos ayında değiştirilen dosyaları boyutlarına göre daha da sıralayabiliriz.
Aşağıdaki boru komutlardan oluşur ls, grep, ve sort -
$ls -l | grep "Aug" | sort +4n
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro
-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07
-rw-rw-rw- 1 john doc 11008 Aug 6 14:10 ch02
$
Bu kanal, dizininizdeki ağustos ayında değiştirilen tüm dosyaları boyut sırasına göre sıralar ve bunları terminal ekranına yazdırır. Sıralama seçeneği + 4n dört alanı atlar (alanlar boşluklarla ayrılır) ve ardından satırları sayısal sıraya göre sıralar.
Pg ve daha fazla Komutlar
Uzun bir çıktı normalde sizin tarafınızdan ekranda sıkıştırılabilir, ancak metni daha fazla çalıştırırsanız veya pgfiltre olarak komut; ekran metinle dolduğunda ekran durur.
Uzun bir dizin listeniz olduğunu varsayalım. Sıralanmış listeyi okumayı kolaylaştırmak için, çıktıyı aktarınmore aşağıdaki gibi -
$ls -l | grep "Aug" | sort +4n | more
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro
-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07
-rw-rw-r-- 1 john doc 14827 Aug 9 12:40 ch03
.
.
.
-rw-rw-rw- 1 john doc 16867 Aug 6 15:56 ch05
--More--(74%)
Dosya boyutuna göre sıralanmış satırlardan oluşan metinle ekran dolduğunda ekran dolacaktır. Ekranın altındamore sıralanan metinde hareket etmek için bir komut yazabileceğiniz komut istemi.
Bu ekranla işiniz bittiğinde, daha fazla programın tartışmasında listelenen komutlardan herhangi birini kullanabilirsiniz.
Bu bölümde, Unix'te süreç yönetimi hakkında ayrıntılı olarak tartışacağız. Unix sisteminizde bir program çalıştırdığınızda, sistem o program için özel bir ortam yaratır. Bu ortam, sistemin programı sistemde başka hiçbir program çalışmıyormuş gibi çalıştırması için gereken her şeyi içerir.
Unix'te bir komut verdiğinizde, yeni bir süreç oluşturur veya başlatır. Denediğindelsdizin içeriğini listelemek için bir işlem başlattınız. Basit bir ifadeyle süreç, çalışan bir programın bir örneğidir.
İşletim sistemi, işlemleri şu adıyla bilinen beş basamaklı bir kimlik numarasıyla izler pid ya da process ID. Sistemdeki her işlemin benzersiz birpid.
Pids sonunda tekrar eder çünkü tüm olası sayılar kullanılır ve sonraki pid rulolar veya baştan başlar. Herhangi bir anda, sistemde aynı pid'e sahip iki işlem yoktur çünkü bu, Unix'in her işlemi izlemek için kullandığı piddir.
Bir Süreç Başlatma
Bir işlemi başlattığınızda (bir komut çalıştırın), onu çalıştırmanın iki yolu vardır -
- Ön Plan Süreçleri
- Arka Plan Süreçleri
Ön Plan Süreçleri
Varsayılan olarak, başlattığınız her işlem ön planda çalışır. Girdisini klavyeden alır ve çıktısını ekrana gönderir.
Bunun olduğunu görebilirsiniz. lskomut. Mevcut dizininizdeki tüm dosyaları listelemek isterseniz, aşağıdaki komutu kullanabilirsiniz -
$ls ch*.doc
Bu, adları ile başlayan tüm dosyaları görüntüler. ch ve ile biter .doc -
ch01-1.doc ch010.doc ch02.doc ch03-2.doc
ch04-1.doc ch040.doc ch05.doc ch06-2.doc
ch01-2.doc ch02-1.doc
İşlem ön planda çalışır, çıktı ekranıma yönlendirilir ve eğer ls komut herhangi bir girdi ister (ki istemez), klavyeden bekler.
Bir program ön planda çalışırken ve zaman alıcıyken, başka hiçbir komut çalıştırılamaz (başka işlemler başlatılamaz) çünkü program işlemeyi bitirip çıkana kadar komut istemi kullanılamaz.
Arka Plan Süreçleri
Arka plan işlemi klavyenize bağlanmadan çalışır. Arka plan işlemi herhangi bir klavye girişi gerektiriyorsa, bekler.
Bir işlemi arka planda çalıştırmanın avantajı, diğer komutları çalıştırabilmenizdir; Bir başkasını başlatmak için tamamlanana kadar beklemeniz gerekmez!
Bir arka plan işlemini başlatmanın en basit yolu bir ve işareti eklemektir (&) komutun sonunda.
$ls ch*.doc &
Bu, adı ile başlayan tüm dosyaları görüntüler. ch ve ile biter .doc -
ch01-1.doc ch010.doc ch02.doc ch03-2.doc
ch04-1.doc ch040.doc ch05.doc ch06-2.doc
ch01-2.doc ch02-1.doc
Burada, eğer ls komut herhangi bir girdi istiyor (ki istemiyor), biz onu ön plana taşıyıncaya ve veriyi klavyeden verene kadar durma durumuna geçiyor.
Bu ilk satır, arka plan süreci hakkında bilgi içerir - iş numarası ve işlem kimliği. Arka plan ve ön plan arasında işlemek için iş numarasını bilmeniz gerekir.
Enter tuşuna basın ve şunu göreceksiniz -
[1] + Done ls ch*.doc &
$
İlk satır size şunu söyler: lskomut arka plan işlemi başarıyla tamamlanır. İkincisi, başka bir komut istemidir.
Çalışan İşlemleri Listeleme
Çalıştırarak kendi süreçlerinizi görmek kolaydır. ps (işlem durumu) komutu aşağıdaki gibidir -
$ps
PID TTY TIME CMD
18358 ttyp3 00:00:00 sh
18361 ttyp3 00:01:31 abiword
18789 ttyp3 00:00:00 ps
Ps için en sık kullanılan bayraklardan biri, -f Aşağıdaki örnekte gösterildiği gibi daha fazla bilgi sağlayan (tam için f) seçeneği -
$ps -f
UID PID PPID C STIME TTY TIME CMD
amrood 6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood 6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood 3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood 6892 3662 4 10:51:50 pts/6 0:00 ps -f
İşte görüntüleyen tüm alanların açıklaması ps -f komut -
Sr.No. | Kolon AÇIKLAMASI |
---|---|
1 | UID Bu işlemin ait olduğu kullanıcı kimliği (onu çalıştıran kişi) |
2 | PID İşlem Kimliği |
3 | PPID Üst süreç kimliği (onu başlatan işlemin kimliği) |
4 | C İşlemin CPU kullanımı |
5 | STIME İşlem başlangıç zamanı |
6 | TTY İşlemle ilişkili terminal türü |
7 | TIME İşlem tarafından alınan CPU süresi |
8 | CMD Bu süreci başlatan komut |
İle birlikte kullanılabilecek başka seçenekler de var ps komut -
Sr.No. | Seçenek ve Açıklama |
---|---|
1 | -a Tüm kullanıcılar hakkındaki bilgileri gösterir |
2 | -x Terminaller olmadan işlemler hakkında bilgi gösterir |
3 | -u -F seçeneği gibi ek bilgileri gösterir |
4 | -e Genişletilmiş bilgileri görüntüler |
Durdurma İşlemleri
Bir süreci bitirmek birkaç farklı yolla yapılabilir. Genellikle, konsol tabanlı bir komuttan CTRL + C tuş vuruşu (varsayılan kesme karakteri) göndermek komuttan çıkacaktır. Bu, işlem ön plan modunda çalışırken çalışır.
Bir işlem arka planda çalışıyorsa, İş Kimliğini, pskomut. Bundan sonra,kill işlemi aşağıdaki gibi sonlandırma komutu -
$ps -f
UID PID PPID C STIME TTY TIME CMD
amrood 6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood 6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood 3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood 6892 3662 4 10:51:50 pts/6 0:00 ps -f
$kill 6738
Terminated
Burada kill komut sonlandırır first_onesüreç. Bir işlem normal bir öldürme komutunu yok sayarsa, şunu kullanabilirsiniz:kill -9 ardından aşağıdaki gibi işlem kimliği gelir -
$kill -9 6738
Terminated
Ebeveyn ve Çocuk Süreçleri
Her unix işleminin kendisine atanmış iki kimlik numarası vardır: İşlem Kimliği (pid) ve Üst işlem kimliği (ppid). Sistemdeki her kullanıcı işleminin bir üst süreci vardır.
Çalıştırdığınız komutların çoğu kabuğa ebeveyn olarak sahiptir. Kontrol edinps -f Bu komutun hem işlem kimliğini hem de üst işlem kimliğini listelediği örnek.
Zombi ve Yetim Süreçleri
Normalde, bir çocuk süreç öldürüldüğünde, üst süreç bir SIGCHLDsinyal. Daha sonra ebeveyn, gerektiğinde başka bir görev yapabilir veya yeni bir çocuğu yeniden başlatabilir. Ancak bazen ana süreç çocuğu öldürülmeden önce öldürülür. Bu durumda, "tüm süreçlerin ebeveyni",initsüreç, yeni PPID (üst süreç kimliği) olur. Bazı durumlarda bu süreçlere öksüz süreçler denir.
Bir süreç öldürüldüğünde, ps liste yine de süreci bir Zdurum. Bu, zombi veya feshedilmiş bir süreçtir. İşlem öldü ve kullanılmıyor. Bu süreçler öksüz süreçlerden farklıdır. Yürütmeyi tamamladılar ancak yine de işlem tablosunda bir giriş buldular.
Daemon Süreçleri
Daemon'lar, genellikle kök izinleriyle ve diğer işlemlerden hizmet talepleriyle çalışan sistemle ilgili arka plan işlemleridir.
Bir arka plan programının kontrol terminali yoktur. Açamaz/dev/tty. Eğer yaparsan"ps -ef" ve şuna bak tty alan, tüm artalan süreçlerinde bir ? için tty.
Kesin olmak gerekirse, arka planda çalışan bir süreç, genellikle birlikte çalışabileceği bir şeyin olmasını bekler. Örneğin, yazdırma komutlarını bekleyen bir yazıcı arka plan programı.
Uzun işlem gerektiren bir programınız varsa, onu bir arka plan programı haline getirip arka planda çalıştırmaya değer.
Üst Komuta
top command çeşitli kriterlere göre sıralanmış süreçleri hızlıca göstermek için çok kullanışlı bir araçtır.
Sık sık güncellenen ve fiziksel ve sanal bellek, CPU kullanımı, yük ortalamaları ve meşgul süreçleriniz hakkında bilgiler gösteren etkileşimli bir teşhis aracıdır.
İşte top komutunu çalıştırmak ve farklı işlemler tarafından CPU kullanım istatistiklerini görmek için basit sözdizimi -
$top
İş Kimliği ve İşlem Kimliği
Arka plan ve askıya alınan süreçler genellikle şu şekilde manipüle edilir: job number (job ID). Bu numara işlem kimliğinden farklıdır ve daha kısa olduğu için kullanılır.
Ek olarak, bir iş, bir dizi halinde veya aynı anda paralel olarak çalışan birden çok işlemden oluşabilir. İş kimliğini kullanmak, bireysel süreçleri izlemekten daha kolaydır.
Bu bölümde, Unix'teki ağ iletişim araçları hakkında ayrıntılı olarak tartışacağız. Dağıtılmış bir ortamda çalıştığınızda, uzak kullanıcılarla iletişim kurmanız ve ayrıca uzak Unix makinelerine erişmeniz gerekir.
Kullanıcıların ağa bağlı, dağıtılmış bir ortamda hesaplamasına yardımcı olan birkaç Unix yardımcı programı vardır. Bu bölüm bunlardan birkaçını listeler.
Ping Yardımcı Programı
pingkomut, ağda bulunan bir ana bilgisayara bir yankı isteği gönderir. Bu komutu kullanarak, uzaktaki ana makinenizin iyi yanıt verip vermediğini kontrol edebilirsiniz.
Ping komutu aşağıdakiler için kullanışlıdır -
- Donanım ve yazılım sorunlarını izleme ve izole etme.
- Ağın ve çeşitli yabancı ana bilgisayarların durumunun belirlenmesi.
- Ağları test etme, ölçme ve yönetme.
Sözdizimi
Aşağıda ftp komutunu kullanmak için basit sözdizimi verilmiştir -
$ping hostname or ip-address
Yukarıdaki komut, her saniye sonra bir yanıt yazdırmaya başlar. Komuttan çıkmak için tuşuna basarak sonlandırabilirsiniz.CNTRL + C anahtarlar.
Misal
Aşağıda, ağda bulunan bir ana bilgisayarın kullanılabilirliğini kontrol etmek için bir örnek verilmiştir -
$ping google.com PING google.com (74.125.67.100) 56(84) bytes of data. 64 bytes from 74.125.67.100: icmp_seq = 1 ttl = 54 time = 39.4 ms 64 bytes from 74.125.67.100: icmp_seq = 2 ttl = 54 time = 39.9 ms 64 bytes from 74.125.67.100: icmp_seq = 3 ttl = 54 time = 39.3 ms 64 bytes from 74.125.67.100: icmp_seq = 4 ttl = 54 time = 39.1 ms 64 bytes from 74.125.67.100: icmp_seq = 5 ttl = 54 time = 38.8 ms --- google.com ping statistics --- 22 packets transmitted, 22 received, 0% packet loss, time 21017ms rtt min/avg/max/mdev = 38.867/39.334/39.900/0.396 ms $
Bir ana bilgisayar yoksa, aşağıdaki çıktıyı alırsınız -
$ping giiiiiigle.com ping: unknown host giiiiigle.com $
Ftp Yardımcı Programı
Buraya, ftp duruyor File Transfer Protokol. Bu yardımcı program, dosyanızı bir bilgisayardan başka bir bilgisayara yüklemenize ve indirmenize yardımcı olur.
Ftp yardımcı programının kendi Unix benzeri komutları vardır. Bu komutlar aşağıdaki gibi görevleri gerçekleştirmenize yardımcı olur:
Uzak bir ana bilgisayara bağlanın ve oturum açın.
Dizinlerde gezinin.
Dizin içeriğini listeleyin.
Dosyaları koyun ve alın.
Dosyaları farklı aktarın ascii, ebcdic veya binary.
Sözdizimi
Aşağıda ftp komutunu kullanmak için basit sözdizimi verilmiştir -
$ftp hostname or ip-address
Yukarıdaki komut sizden oturum açma kimliğini ve parolayı soracaktır. Kimlik doğrulaması yapıldığında, oturum açma hesabının ana dizinine erişebilir ve çeşitli komutları gerçekleştirebilirsiniz.
Aşağıdaki tablolarda birkaç önemli komut listelenmektedir -
Sr.No. | Komut ve Açıklama |
---|---|
1 | put filename Dosya adını yerel makineden uzak makineye yükler. |
2 | get filename Dosya adını uzak makineden yerel makineye indirir. |
3 | mput file list Yerel makineden uzak makineye birden fazla dosya yükler. |
4 | mget file list Uzak makineden yerel makineye birden fazla dosya yükler. |
5 | prompt off İstemi kapatır. Varsayılan olarak, dosya yüklemek veya indirmek için bir uyarı alacaksınız.mput veya mget komutlar. |
6 | prompt on İstemi açar. |
7 | dir Uzak makinenin geçerli dizininde bulunan tüm dosyaları listeler. |
8 | cd dirname Uzak makinede dizini dizin adına değiştirir. |
9 | lcd dirname Yerel makinede dizini dizin adına değiştirir. |
10 | quit Mevcut girişten çıkış yapmanıza yardımcı olur. |
Tüm dosyaların mevcut dizinlere veya dizinlerden indirileceği veya yükleneceği unutulmamalıdır. Dosyalarınızı belirli bir dizine yüklemek istiyorsanız, önce o dizine geçmeniz ve ardından gerekli dosyaları yüklemeniz gerekir.
Misal
Birkaç komutun çalışmasını gösteren örnek aşağıdadır -
$ftp amrood.com
Connected to amrood.com.
220 amrood.com FTP server (Ver 4.9 Thu Sep 2 20:35:07 CDT 2009)
Name (amrood.com:amrood): amrood
331 Password required for amrood.
Password:
230 User amrood logged in.
ftp> dir
200 PORT command successful.
150 Opening data connection for /bin/ls.
total 1464
drwxr-sr-x 3 amrood group 1024 Mar 11 20:04 Mail
drwxr-sr-x 2 amrood group 1536 Mar 3 18:07 Misc
drwxr-sr-x 5 amrood group 512 Dec 7 10:59 OldStuff
drwxr-sr-x 2 amrood group 1024 Mar 11 15:24 bin
drwxr-sr-x 5 amrood group 3072 Mar 13 16:10 mpl
-rw-r--r-- 1 amrood group 209671 Mar 15 10:57 myfile.out
drwxr-sr-x 3 amrood group 512 Jan 5 13:32 public
drwxr-sr-x 3 amrood group 512 Feb 10 10:17 pvm3
226 Transfer complete.
ftp> cd mpl
250 CWD command successful.
ftp> dir
200 PORT command successful.
150 Opening data connection for /bin/ls.
total 7320
-rw-r--r-- 1 amrood group 1630 Aug 8 1994 dboard.f
-rw-r----- 1 amrood group 4340 Jul 17 1994 vttest.c
-rwxr-xr-x 1 amrood group 525574 Feb 15 11:52 wave_shift
-rw-r--r-- 1 amrood group 1648 Aug 5 1994 wide.list
-rwxr-xr-x 1 amrood group 4019 Feb 14 16:26 fix.c
226 Transfer complete.
ftp> get wave_shift
200 PORT command successful.
150 Opening data connection for wave_shift (525574 bytes).
226 Transfer complete.
528454 bytes received in 1.296 seconds (398.1 Kbytes/s)
ftp> quit
221 Goodbye.
$
Telnet Yardımcı Programı
Uzak bir Unix makinesine bağlanmamız ve bu makinede uzaktan çalışmamız gereken zamanlar vardır. Telnet bir sitedeki bir bilgisayar kullanıcısının bağlantı kurmasına, oturum açmasına ve ardından başka bir sitedeki bir bilgisayarda çalışmasına izin veren bir yardımcı programdır.
Telnet kullanarak oturum açtıktan sonra, tüm aktiviteleri uzaktan bağlı makinenizde gerçekleştirebilirsiniz. Aşağıda bir Telnet oturumu örneği verilmiştir -
C:>telnet amrood.com
Trying...
Connected to amrood.com.
Escape character is '^]'.
login: amrood
amrood's Password:
*****************************************************
* *
* *
* WELCOME TO AMROOD.COM *
* *
* *
*****************************************************
Last unsuccessful login: Fri Mar 3 12:01:09 IST 2009
Last login: Wed Mar 8 18:33:27 IST 2009 on pts/10
{ do your work }
$ logout
Connection closed.
C:>
Parmak Yardımcı Programı
fingerkomutu, belirli bir ana bilgisayardaki kullanıcılar hakkındaki bilgileri görüntüler. Ana bilgisayar yerel veya uzak olabilir.
Güvenlik nedeniyle diğer sistemlerde parmak devre dışı bırakılabilir.
Finger komutunu kullanmak için basit sözdizimi aşağıdadır -
Yerel makinede oturum açmış tüm kullanıcıları kontrol edin -
$ finger
Login Name Tty Idle Login Time Office
amrood pts/0 Jun 25 08:03 (62.61.164.115)
Yerel makinede bulunan belirli bir kullanıcı hakkında bilgi alın -
$ finger amrood
Login: amrood Name: (null)
Directory: /home/amrood Shell: /bin/bash
On since Thu Jun 25 08:03 (MST) on pts/0 from 62.61.164.115
No mail.
No Plan.
Uzak makinede oturum açmış tüm kullanıcıları kontrol edin -
$ finger @avtar.com
Login Name Tty Idle Login Time Office
amrood pts/0 Jun 25 08:03 (62.61.164.115)
Uzak makinede bulunan belirli bir kullanıcı hakkında bilgi alın -
$ finger [email protected]
Login: amrood Name: (null)
Directory: /home/amrood Shell: /bin/bash
On since Thu Jun 25 08:03 (MST) on pts/0 from 62.61.164.115
No mail.
No Plan.
Bu bölümde vi Editor'ün Unix'te nasıl çalıştığını anlayacağız. Unix'te dosyaları düzenlemenin birçok yolu vardır. Ekran yönelimli metin düzenleyiciyi kullanarak dosyaları düzenlemevien iyi yollardan biridir. Bu düzenleyici, satırları dosyadaki diğer satırlarla bağlam içinde düzenlemenizi sağlar.
Vi editörünün geliştirilmiş bir versiyonu olan VIMşimdi de kullanıma sunuldu. Burada VIM,Vi IMkanıtlanmış.
vi genellikle Unix editörlerinde fiili standart olarak kabul edilir çünkü -
Genellikle Unix sisteminin tüm çeşitlerinde bulunur.
Uygulamaları genel olarak çok benzer.
Çok az kaynak gerektirir.
Diğer editörlerden daha kullanıcı dostudur. ed ya da ex.
Kullanabilirsiniz viDüzenleyici, mevcut bir dosyayı düzenlemek veya sıfırdan yeni bir dosya oluşturmak için. Bu düzenleyiciyi yalnızca bir metin dosyasını okumak için de kullanabilirsiniz.
Vi Düzenleyiciyi Başlatma
Aşağıdaki tablo vi düzenleyiciyi kullanmak için temel komutları listeler -
Sr.No. | Komut ve Açıklama |
---|---|
1 | vi filename Zaten mevcut değilse yeni bir dosya oluşturur, aksi takdirde mevcut bir dosyayı açar. |
2 | vi -R filename Salt okunur modda var olan bir dosyayı açar. |
3 | view filename Salt okunur modda var olan bir dosyayı açar. |
Aşağıda, yeni bir dosya oluşturmak için bir örnek verilmiştir testfile mevcut çalışma dizininde zaten yoksa -
$vi testfile
Yukarıdaki komut aşağıdaki çıktıyı üretecektir -
|
~
~
~
~
~
~
~
~
~
~
~
~
"testfile" [New File]
Fark edeceksin tildeİmleci takip eden her satırda (~). Yaklaşık işaret, kullanılmayan bir satırı temsil eder. Bir satır tilde ile başlamıyorsa ve boş görünüyorsa, boşluk, sekme, satırsonu veya başka bir görüntülenemeyen karakter var demektir.
Artık üzerinde çalışmaya başlamak için bir açık dosyanız var. Daha fazla ilerlemeden önce, birkaç önemli kavramı anlayalım.
Operasyon Modları
Vi editörü ile çalışırken, genellikle aşağıdaki iki modla karşılaşırız -
Command mode- Bu mod, dosyaları kaydetme, komutları yürütme, imleci hareket ettirme, satırları veya kelimeleri kesme (çekme) ve yapıştırmanın yanı sıra bulma ve değiştirme gibi yönetim görevlerini gerçekleştirmenizi sağlar. Bu modda, yazdığınız her şey bir komut olarak yorumlanır.
Insert mode- Bu mod, dosyaya metin eklemenizi sağlar. Bu modda yazılan her şey girdi olarak yorumlanır ve dosyaya yerleştirilir.
vi her zaman command mode. Metin girmek için, basitçe yazan ekleme modunda olmalısınızi. Ekleme modundan çıkmak için,Esc Sizi komut moduna geri götürecektir.
Hint- Hangi modda olduğunuzdan emin değilseniz, Esc tuşuna iki kez basın; bu sizi komut moduna götürecektir. Vi düzenleyicisini kullanarak bir dosya açarsınız. Birkaç karakter yazarak başlayın ve ardından farkı anlamak için komut moduna gelin.
Vi'den çıkmak
Vi'den çıkma komutu şudur: :q. Komut kipindeyken, iki nokta üst üste ve 'q' yazın, ardından return. Dosyanız herhangi bir şekilde değiştirilmişse, düzenleyici sizi bu konuda uyaracak ve çıkmanıza izin vermeyecektir. Bu mesajı yok saymak için vi'den kaydetmeden çıkma komutu::q!. Bu, herhangi bir değişikliği kaydetmeden vi'den çıkmanıza izin verir.
Düzenleyicinin içeriğini kaydetme komutu :w. Yukarıdaki komutu quit komutuyla birleştirebilir veya:wq ve dönüş.
En kolay yol save your changes and exit viZZ komutu ile. Komut modundayken yazınZZ. ZZ komutu ile aynı şekilde çalışır :wq komut.
Dosya için herhangi bir belirli ad belirtmek / belirtmek isterseniz, bunu dosyadan sonra belirterek yapabilirsiniz. :w. Örneğin, üzerinde çalıştığınız dosyayı başka bir dosya adı olarak kaydetmek istersenizfilename2sen yazarsın :w filename2 ve dönüş.
Dosya İçinde Hareket Etme
Metninizi etkilemeden dosya içinde hareket etmek için komut modunda olmanız gerekir (iki kez Esc tuşuna basın). Aşağıdaki tablo, bir seferde bir karakter hareket etmek için kullanabileceğiniz birkaç komutu listelemektedir -
Sr.No. | Komut ve Açıklama |
---|---|
1 | k İmleci bir satır yukarı taşır |
2 | j İmleci bir satır aşağı taşır |
3 | h İmleci sola bir karakter pozisyonu hareket ettirir |
4 | l İmleci bir karakterlik sağa hareket ettirir |
Bir dosya içinde hareket etmek için aşağıdaki noktaların dikkate alınması gerekir -
vi, büyük / küçük harfe duyarlıdır. Komutları kullanırken büyük harf kullanımına dikkat etmeniz gerekir.
Vi'deki çoğu komut, eylemin gerçekleşmesini istediğiniz sayıda önceleri olabilir. Örneğin,2j imleci imleç konumunda iki satır aşağı taşır.
Vi'de bir dosya içinde hareket etmenin başka birçok yolu vardır. Komut modunda olmanız gerektiğini unutmayın (press Esc twice). Aşağıdaki tablo, dosya içinde hareket etmek için birkaç komut listelemektedir -
Sr.No. | Komut ve Açıklama |
---|---|
1 | 0 or | İmleci bir satırın başlangıcına konumlandırır |
2 | $ İmleci bir satırın sonuna konumlandırır |
3 | w İmleci bir sonraki kelimeye konumlandırır |
4 | b İmleci önceki kelimeye konumlandırır |
5 | ( İmleci mevcut cümlenin başına konumlandırır |
6 | ) İmleci sonraki cümlenin başına konumlandırır |
7 | E Sınırlandırılmış boş sözcüğün sonuna gider |
8 | { Paragrafı geriye taşır |
9 | } Bir paragrafı ileri taşır |
10 | [[ Bir bölümü geri taşır |
11 | ]] Bir bölümü ileri taşır |
12 | n| Sütuna gider n mevcut satırda |
13 | 1G Dosyanın ilk satırına gider |
14 | G Dosyanın son satırına gider |
15 | nG Taşınır nth dosyanın satırı |
16 | :n Taşınır nth dosyanın satırı |
17 | fc İleri gider c |
18 | Fc Geri döner c |
19 | H Ekranın en üstüne gider |
20 | nH Taşınır nth ekranın üstünden satır |
21 | M Ekranın ortasına gider |
22 | L Ekranın altına git |
23 | nL Taşınır nth ekranın altından satır |
24 | :x İki nokta üst üste ve ardından bir sayı, imleci ile gösterilen satır numarasına konumlandırır. x |
Kontrol Komutları
Aşağıdaki komutlar, aşağıdaki tabloda verilen işlevleri gerçekleştirmek için Kontrol Tuşuyla birlikte kullanılabilir -
Sr.No. | Komut ve Açıklama |
---|---|
1 | CTRL+d 1/2 ekran ileri gider |
2 | CTRL+f Bir tam ekran ileri gider |
3 | CTRL+u 1/2 ekran geri gider |
4 | CTRL+b Bir tam ekran geri gider |
5 | CTRL+e Ekranı bir satır yukarı taşır |
6 | CTRL+y Ekranı bir satır aşağı taşır |
7 | CTRL+u Ekranı 1/2 sayfa yukarı taşır |
8 | CTRL+d Ekranı 1/2 sayfa aşağı taşır |
9 | CTRL+b Ekranı bir sayfa yukarı taşır |
10 | CTRL+f Ekranı bir sayfa aşağı taşır |
11 | CTRL+I Ekranı yeniden çizer |
Dosyaları Düzenleme
Dosyayı düzenlemek için, ekleme modunda olmanız gerekir. Komut modundan ekleme moduna girmenin birçok yolu vardır -
Sr.No. | Komut ve Açıklama |
---|---|
1 | i Mevcut imleç konumundan önce metin ekler |
2 | I Mevcut satırın başına metin ekler |
3 | a Mevcut imleç konumundan sonra metin ekler |
4 | A Mevcut satırın sonuna metin ekler |
5 | o İmleç konumunun altında metin girişi için yeni bir satır oluşturur |
6 | O İmleç konumunun üzerinde metin girişi için yeni bir satır oluşturur |
Karakterleri Silme
Açık bir dosyadaki karakterleri ve satırları silmek için kullanılabilecek önemli komutların listesi aşağıdadır -
Sr.No. | Komut ve Açıklama |
---|---|
1 | x İmleç konumunun altındaki karakteri siler |
2 | X İmleç konumundan önceki karakteri siler |
3 | dw Mevcut imleç konumundan sonraki kelimeye kadar siler |
4 | d^ Mevcut imleç konumundan satırın başına kadar siler |
5 | d$ Mevcut imleç konumundan satırın sonuna kadar siler |
6 | D İmleç konumundan geçerli satırın sonuna kadar siler |
7 | dd İmlecin bulunduğu satırı siler |
Yukarıda belirtildiği gibi, vi'deki çoğu komut eylemin gerçekleşmesini istediğiniz sayıda önsöz olabilir. Örneğin,2x imleç konumunun altındaki iki karakteri siler ve 2dd imlecin üzerinde bulunduğu iki satırı siler.
Devam etmeden önce komutların alıştırma yapılması önerilir.
Komutları Değiştir
Ayrıca, vi'deki karakterleri, sözcükleri veya satırları silmeden değiştirme olanağına da sahipsiniz. İşte ilgili komutlar -
Sr.No. | Komut ve Açıklama |
---|---|
1 | cc Satır içeriğini kaldırarak sizi ekleme modunda bırakır. |
2 | cw İmlecin bulunduğu kelimeyi imleçten küçük harfe değiştirir w kelimenin sonu. |
3 | r İmlecin altındaki karakteri değiştirir. vi, değiştirme girildikten sonra komut moduna döner. |
4 | R O anda imlecin altında bulunan karakterle başlayan birden çok karakterin üzerine yazar. KullanmalısınEsc üzerine yazmayı durdurmak için. |
5 | s Mevcut karakteri yazdığınız karakterle değiştirir. Daha sonra, ekleme modunda kalırsınız. |
6 | S İmlecin bulunduğu satırı siler ve yeni metinle değiştirir. Yeni metin girildikten sonra vi, ekleme modunda kalır. |
Kopyala ve Yapıştır Komutları
Satırları veya kelimeleri bir yerden kopyalayabilir ve ardından aşağıdaki komutları kullanarak bunları başka bir yere yapıştırabilirsiniz:
Sr.No. | Komut ve Açıklama |
---|---|
1 | yy Mevcut satırı kopyalar. |
2 | yw Küçük w imlecinin üzerinde bulunduğu karakterden geçerli kelimeyi kelimenin sonuna kadar kopyalar. |
3 | p Kopyalanan metni imlecin arkasına koyar. |
4 | P Çekilmiş metni imlecin önüne koyar. |
Gelişmiş Komutlar
Günlük düzenlemeyi basitleştiren ve vi'nin daha verimli kullanımına izin veren bazı gelişmiş komutlar vardır -
Sr.No. | Komut ve Açıklama |
---|---|
1 | J Mevcut satırı bir sonrakiyle birleştirir. Bir dizi j komutu birçok satıra katılır. |
2 | << Mevcut satırı bir kaydırma genişliği kadar sola kaydırır. |
3 | >> Mevcut satırı bir kaydırma genişliği kadar sağa kaydırır. |
4 | ~ İmlecin altındaki karakterin büyük / küçük harf durumunu değiştirir. |
5 | ^G Mevcut dosya adını ve durumu göstermek için Ctrl ve G tuşlarına aynı anda basın. |
6 | U Mevcut satırı, imleç satıra girmeden önceki durumuna geri yükler. |
7 | u Bu, dosyada yapılan son değişikliğin geri alınmasına yardımcı olur. Tekrar 'u' yazmak, değişikliği yeniden yapacaktır. |
8 | J Mevcut satırı bir sonrakiyle birleştirir. Bir sayı bu kadar satıra katılır. |
9 | :f Dosyadaki mevcut konumu% olarak ve dosya adını, toplam dosya sayısını görüntüler. |
10 | :f filename Mevcut dosyayı dosya adı olarak yeniden adlandırır. |
11 | :w filename Dosya adını yazar. |
12 | :e filename Dosya adıyla başka bir dosya açar. |
13 | :cd dirname Mevcut çalışma dizinini dirname olarak değiştirir. |
14 | :e # İki açık dosya arasında geçiş yapar. |
15 | :n Vi kullanarak birden fazla dosya açmanız durumunda, şunu kullanın: :n Serideki sonraki dosyaya gitmek için. |
16 | :p Vi kullanarak birden fazla dosya açmanız durumunda, şunu kullanın: :p Serideki önceki dosyaya gitmek için. |
17 | :N Vi kullanarak birden fazla dosya açmanız durumunda, şunu kullanın: :N Serideki önceki dosyaya gitmek için. |
18 | :r file Dosyayı okur ve mevcut satırdan sonra ekler. |
19 | :nr file Dosyayı okur ve satırdan sonra ekler n. |
Kelime ve Karakter Arama
Vi düzenleyicinin iki tür araması vardır: string ve character. Bir dize araması için,/ ve ?komutlar kullanılır. Bu komutları başlattığınızda, az önce yazdığınız komut, aranacak dizgeyi yazdığınız ekranın son satırında gösterilecektir.
Bu iki komut yalnızca aramanın gerçekleştiği yönde farklılık gösterir -
/ komut dosyada ileriye (aşağı doğru) arama yapar.
? komut dosyada geriye doğru (yukarı doğru) arama yapar.
n ve Nkomutlar önceki arama komutunu sırasıyla aynı veya ters yönde tekrarlar. Bazı karakterlerin özel anlamları vardır. Bu karakterlerden önce ters eğik çizgi (\) arama ifadesinin bir parçası olarak dahil edilecektir.
Sr.No. | Karakter açıklaması |
---|---|
1 | ^ Satırın başında arar (Bir arama ifadesinin başında kullanın). |
2 | . Tek bir karakterle eşleşir. |
3 | * Önceki karakterin sıfır veya daha fazlasıyla eşleşir. |
4 | $ Satırın sonu (Arama ifadesinin sonunda kullanın). |
5 | [ Bir dizi eşleşen veya eşleşmeyen ifade başlatır. |
6 | < Bu, bir kelimenin sonunu veya başlangıcını bulmak için ters eğik çizgi ile kaçan bir ifadeye eklenir. |
7 | > Bu, '<'karakter açıklaması yukarıda. |
Karakter araması, komuttan sonra girilen bir karakteri bulmak için bir satır içinde arama yapar. f ve F komutlar yalnızca geçerli satırdaki bir karakteri arar. f ileriye doğru arar ve F geriye doğru arar ve imleç bulunan karakterin konumuna hareket eder.
t ve T komutlar yalnızca geçerli satırda bir karakter arar, ancak t, imleç karakterden önceki konuma hareket eder ve T satırı geriye doğru karakterden sonraki konuma doğru arar.
Komutları Ayarla
Aşağıdakileri kullanarak vi ekranınızın görünümünü ve hissini değiştirebilirsiniz. :setkomutlar. Komut modundayken şunu yazın::set followed by any of the following commands.
Sr.No. | Command & Description |
---|---|
1 | :set ic Ignores the case when searching |
2 | :set ai Sets autoindent |
3 | :set noai Unsets autoindent |
4 | :set nu Displays lines with line numbers on the left side |
5 | :set sw Sets the width of a software tabstop. For example, you would set a shift width of 4 with this command — :set sw = 4 |
6 | :set ws If wrapscan is set, and the word is not found at the bottom of the file, it will try searching for it at the beginning |
7 | :set wm If this option has a value greater than zero, the editor will automatically "word wrap". For example, to set the wrap margin to two characters, you would type this: :set wm = 2 |
8 | :set ro Changes file type to "read only" |
9 | :set term Prints terminal type |
10 | :set bf Discards control characters from input |
Running Commands
The vi has the capability to run commands from within the editor. To run a command, you only need to go to the command mode and type :! command.
For example, if you want to check whether a file exists before you try to save your file with that filename, you can type :! ls and you will see the output of ls on the screen.
You can press any key (or the command's escape sequence) to return to your vi session.
Replacing Text
The substitution command (:s/) enables you to quickly replace words or groups of words within your files. Following is the syntax to replace text −
:s/search/replace/g
gküresel olarak duruyor. Bu komutun sonucu, imlecin satırındaki tüm oluşumların değişmesidir.
Dikkat Edilmesi Gereken Önemli Noktalar
Aşağıdaki noktalar vi ile başarınıza katkıda bulunacaktır -
Komutları kullanmak için komut modunda olmalısınız. (Komut modunda olduğunuzdan emin olmak için herhangi bir zamanda Esc tuşuna iki kez basın.)
Komutlara dikkat etmelisiniz. Bunlar büyük / küçük harfe duyarlıdır.
Metin girmek için ekleme modunda olmalısınız.
Bir Shellsize Unix sistemine bir arayüz sağlar. Sizden girdi toplar ve bu girdiye göre programları yürütür. Bir program yürütülmeyi bitirdiğinde, o programın çıktısını görüntüler.
Shell, komutlarımızı, programlarımızı ve kabuk komut dosyalarımızı çalıştırabileceğimiz bir ortamdır. Tıpkı işletim sistemlerinin farklı tatları olduğu gibi, bir kabuğun da farklı lezzetleri vardır. Her kabuk çeşidinin kendi tanınmış komutları ve işlevleri vardır.
Kabuk İstemi
İstemi, $, buna denir command prompt, kabuk tarafından verilir. Komut istemi görüntülenirken bir komut yazabilirsiniz.
Shell, tuşuna bastıktan sonra girişinizi okur Enter. Girişinizin ilk kelimesine bakarak yürütülmesini istediğiniz komutu belirler. Sözcük, kesintisiz bir karakter kümesidir. Boşluklar ve sekmeler kelimeleri ayırır.
Aşağıda basit bir örnek verilmiştir. date geçerli tarih ve saati gösteren komut -
$date
Thu Jun 25 08:30:19 MST 2009
Komut isteminizi, Ortam öğreticisinde açıklanan ortam değişkenini PS1 kullanarak özelleştirebilirsiniz.
Kabuk Tipleri
Unix'te iki ana tür mermi vardır -
Bourne shell - Bourne tipi bir kabuk kullanıyorsanız, $ karakter varsayılan istemdir.
C shell - C tipi bir kabuk kullanıyorsanız,% karakteri varsayılan istemdir.
Bourne Kabuğu aşağıdaki alt kategorilere sahiptir -
- Bourne kabuğu (sh)
- Korn kabuğu (ksh)
- Bourne Again kabuğu (bash)
- POSIX kabuğu (sh)
Farklı C tipi mermiler takip eder -
- C kabuğu (csh)
- TENEX / TOPS C kabuğu (tcsh)
Orijinal Unix kabuğu 1970'lerin ortalarında Stephen R. Bourne tarafından New Jersey'deki AT&T Bell Labs'ta iken yazılmıştır.
Bourne kabuğu, Unix sistemlerinde ortaya çıkan ilk kabuktu, bu nedenle "kabuk" olarak anılır.
Bourne kabuğu genellikle şu şekilde kurulur: /bin/shUnix'in çoğu sürümünde. Bu nedenle, Unix'in farklı sürümlerinde kullanılabilen komut dosyaları yazmak için tercih edilen kabuktur.
Bu bölümde, Borne Shell'i temel alan Shell konseptlerinin çoğunu ele alacağız.
Kabuk Komut Dosyaları
Bir kabuk betiğinin temel kavramı, yürütme sırasına göre listelenen bir komutlar listesidir. İyi bir kabuk betiğinde açıklamalar bulunur.# adımları açıklayan işaret.
A değerinin B değerinden büyük olması gibi koşullu testler, devasa miktarda veriden geçmemize izin veren döngüler, verileri okumak ve depolamak için dosyalar ve verileri okumak ve depolamak için değişkenler vardır ve komut dosyası işlevleri içerebilir.
Sonraki bölümlerde birçok senaryo yazacağız. Tüm komutlarımızı ve kabuk ortamına ne yapacağını ve ne zaman yapacağını söyleyen diğer gerekli yapıları koyacağımız basit bir metin dosyası olurdu.
Kabuk betikleri ve işlevleri yorumlanır. Bu, derlenmedikleri anlamına gelir.
Örnek Komut Dosyası
Bir yarattığımızı varsayalım test.shsenaryo. Tüm komut dosyalarının.shuzantı. Betiğinize başka bir şey eklemeden önce, sistemi bir kabuk betiğinin başlatıldığına dair uyarmanız gerekir. Bu,shebanginşa etmek. Örneğin -
#!/bin/sh
Bu, sisteme aşağıdaki komutların Bourne kabuğu tarafından yürütüleceğini söyler. Buna shebang denir çünkü#sembolü karma olarak adlandırılır ve! sembole patlama denir .
Bu komutları içeren bir komut dosyası oluşturmak için önce shebang satırını ve ardından komutları ekleyin -
#!/bin/bash
pwd
ls
Kabuk Yorumları
Yorumlarınızı senaryonuza aşağıdaki gibi koyabilirsiniz -
#!/bin/bash
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
pwd
ls
Yukarıdaki içeriği kaydedin ve komut dosyasını çalıştırılabilir yapın -
$chmod +x test.sh
Kabuk betiği artık çalıştırılmaya hazır -
$./test.sh
Yürütme üzerine aşağıdaki sonucu alacaksınız -
/home/amrood
index.htm unix-basic_utilities.htm unix-directories.htm
test.sh unix-communication.htm unix-environment.htm
Note - Mevcut dizinde bulunan bir programı çalıştırmak için şunu kullanın: ./program_name
Genişletilmiş Kabuk Komut Dosyaları
Kabuk komut dosyalarının, kabuk ortamına ne yapacağını ve ne zaman yapacağını söyleyen gerekli yapıları vardır. Elbette çoğu komut dosyası yukarıdakinden daha karmaşıktır.
Sonuçta kabuk değişkenler, kontrol yapıları vb. İle tamamlanmış gerçek bir programlama dilidir. Bir betik ne kadar karmaşık olursa olsun, yine de sırayla çalıştırılan komutların bir listesidir.
Aşağıdaki komut dosyası, read girişi klavyeden alan ve bunu PERSON değişkeninin değeri olarak atayan ve son olarak STDOUT üzerine yazdıran komut.
#!/bin/sh
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"
İşte komut dosyasının örnek bir çalıştırması -
$./test.sh What is your name? Zara Ali Hello, Zara Ali $
Bu bölümde, Unix'te Shell değişkenlerinin nasıl kullanılacağını öğreneceğiz. Bir değişken, bir değer atadığımız bir karakter dizesidir. Atanan değer bir sayı, metin, dosya adı, cihaz veya başka herhangi bir veri türü olabilir.
Bir değişken, gerçek verilere bir göstericiden başka bir şey değildir. Kabuk, değişkenleri oluşturmanıza, atamanıza ve silmenize olanak tanır.
Değişken İsimler
Bir değişkenin adı yalnızca harfler (a'dan z'ye veya A'dan Z'ye), sayılar (0-9) veya alt çizgi karakteri (_) içerebilir.
Geleneksel olarak, Unix kabuk değişkenlerinin adları BÜYÜK HARF içinde olacaktır.
Aşağıdaki örnekler geçerli değişken isimleridir -
_ALI
TOKEN_A
VAR_1
VAR_2
Aşağıda geçersiz değişken adlarının örnekleri verilmiştir -
2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!
Gibi diğer karakterleri kullanamamanın nedeni !, *veya - bu karakterlerin kabuk için özel bir anlamı olmasıdır.
Değişkenleri Tanımlama
Değişkenler aşağıdaki gibi tanımlanır -
variable_name=variable_value
Örneğin -
NAME="Zara Ali"
Yukarıdaki örnek, NAME değişkenini tanımlar ve ona "Zara Ali" değerini atar. Bu türdeki değişkenlerescalar variables. Skaler bir değişken, bir seferde yalnızca bir değer tutabilir.
Shell, bir değişkende istediğiniz herhangi bir değeri saklamanıza olanak sağlar. Örneğin -
VAR1="Zara Ali"
VAR2=100
Değerlere Erişim
Bir değişkende depolanan değere erişmek için, adının önüne dolar işareti koyun ($) -
Örneğin, aşağıdaki komut dosyası, tanımlı NAME değişkeninin değerine erişecek ve bunu STDOUT'a yazdıracaktır -
#!/bin/sh
NAME="Zara Ali"
echo $NAME
Yukarıdaki komut dosyası aşağıdaki değeri üretecektir -
Zara Ali
Salt okunur Değişkenler
Kabuk, salt okunur komutunu kullanarak değişkenleri salt okunur olarak işaretlemek için bir yol sağlar. Bir değişken salt okunur olarak işaretlendikten sonra değeri değiştirilemez.
Örneğin, aşağıdaki komut dosyası, NAME öğesinin değerini değiştirmeye çalışırken bir hata oluşturur -
#!/bin/sh
NAME="Zara Ali"
readonly NAME
NAME="Qadiri"
Yukarıdaki komut dosyası aşağıdaki sonucu oluşturacaktır -
/bin/sh: NAME: This variable is read only.
Ayarsız Değişkenler
Bir değişkenin ayarının kaldırılması veya silinmesi, kabuğu, değişkeni izlediği değişkenler listesinden kaldırmaya yönlendirir. Bir değişkeni sildikten sonra, değişkendeki kayıtlı değere erişemezsiniz.
Aşağıdaki sözdizimi, tanımlanmış bir değişkeni kullanarak unset komut -
unset variable_name
Yukarıdaki komut, tanımlanmış bir değişkenin değerini kaldırır. İşte komutun nasıl çalıştığını gösteren basit bir örnek -
#!/bin/sh
NAME="Zara Ali"
unset NAME
echo $NAME
Yukarıdaki örnek hiçbir şey yazdırmaz. Unset komutunu kullanarakunset işaretlenen değişkenler readonly.
Değişken Türler
Bir kabuk çalışırken, üç ana değişken türü bulunur -
Local Variables- Yerel değişken, kabuğun geçerli örneğinde bulunan bir değişkendir. Kabuk tarafından başlatılan programlar için mevcut değildir. Komut isteminde ayarlanırlar.
Environment Variables- Kabuğun herhangi bir alt süreci için bir ortam değişkeni mevcuttur. Bazı programların doğru çalışması için ortam değişkenlerine ihtiyacı vardır. Genellikle, bir kabuk komut dosyası yalnızca çalıştırdığı programlar tarafından ihtiyaç duyulan ortam değişkenlerini tanımlar.
Shell Variables- Kabuk değişkeni, kabuk tarafından ayarlanan ve doğru çalışması için kabuk tarafından gerekli olan özel bir değişkendir. Bu değişkenlerin bazıları ortam değişkenleri iken diğerleri yerel değişkenlerdir.
Bu bölümde, Unix'teki özel değişken hakkında ayrıntılı olarak tartışacağız. Önceki bölümlerimizden birinde, değişken adlarında belirli alfasayısal olmayan karakterleri kullandığımızda nasıl dikkatli olacağımızı anladık. Bunun nedeni, bu karakterlerin özel Unix değişkenlerinin adlarında kullanılmasıdır. Bu değişkenler belirli işlevler için ayrılmıştır.
Örneğin, $ karakteri, geçerli kabuğun işlem kimlik numarasını veya PID'sini temsil eder -
$echo $$
Yukarıdaki komut mevcut kabuğun PID'sini yazar -
29949
Aşağıdaki tablo, kabuk komut dosyalarınızda kullanabileceğiniz bir dizi özel değişkeni göstermektedir -
Sr.No. | Değişken ve Açıklama |
---|---|
1 | $0 Mevcut betiğin dosya adı. |
2 | $n Bu değişkenler, bir komut dosyasının çağrıldığı argümanlara karşılık gelir. Burayan bir bağımsız değişkenin konumuna karşılık gelen pozitif bir ondalık sayıdır (ilk bağımsız değişken $1, the second argument is $2 ve benzeri). |
3 | $# Bir betiğe sağlanan bağımsız değişkenlerin sayısı. |
4 | $* Tüm argümanlar çift tırnaklıdır. Bir komut dosyası iki argüman alırsa,$* is equivalent to $1 $ 2. |
5 | $@ Tüm argümanlar tek tek çift tırnaklıdır. Bir komut dosyası iki argüman alırsa,$@ is equivalent to $1 $ 2. |
6 | $? Yürütülen son komutun çıkış durumu. |
7 | $$ Mevcut kabuğun işlem numarası. Kabuk betikleri için bu, altında çalıştırıldıkları işlem kimliğidir. |
8 | $! Son arka plan komutunun işlem numarası. |
Komut Satırı Bağımsız Değişkenleri
Komut satırı argümanları $1, $2, $3, ...$9 konumsal parametrelerdir, $0 pointing to the actual command, program, shell script, or function and $1, $2, $3, ... 9 $ komutun argümanları olarak.
Aşağıdaki komut dosyası, komut satırıyla ilgili çeşitli özel değişkenler kullanır -
#!/bin/sh
echo "File Name: $0"
echo "First Parameter : $1" echo "Second Parameter : $2"
echo "Quoted Values: $@" echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
İşte yukarıdaki komut dosyası için bir örnek çalıştırma -
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
Özel Parametreler $* and $@
Tüm komut satırı argümanlarına aynı anda erişime izin veren özel parametreler vardır. $* ve $@ çift tırnak içine alınmadıkça ikisi de aynı şekilde davranacaktır, "".
Her iki parametre de komut satırı bağımsız değişkenlerini belirtir. Ancak "$*" special parameter takes the entire list as one argument with spaces between and the "$@ "özel parametresi tüm listeyi alır ve ayrı bağımsız değişkenlere ayırır.
Bilinmeyen sayıda komut satırı argümanını işlemek için kabuk betiğini aşağıda gösterildiği gibi yazabiliriz. $* or $@ özel parametreler -
#!/bin/sh
for TOKEN in $* do echo $TOKEN
done
İşte yukarıdaki komut dosyası için bir örnek çalıştırma -
$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old
Note - Burada do...done sonraki öğreticide ele alınacak bir tür döngüdür.
Çıkış Durumu
$? değişken, önceki komutun çıkış durumunu temsil eder.
Çıkış durumu, tamamlandığında her komut tarafından döndürülen sayısal bir değerdir. Kural olarak, çoğu komut, başarılı olduklarında 0, başarısız olduklarında ise 1 çıkış durumunu döndürür.
Bazı komutlar, belirli nedenlerle ek çıkış durumları döndürür. Örneğin, bazı komutlar hata türleri arasında ayrım yapar ve belirli hata türüne bağlı olarak çeşitli çıkış değerleri döndürür.
Başarılı komut örneği aşağıdadır -
$./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara Ali Quoted Values: Zara Ali Total Number of Parameters : 2 $echo $? 0 $
Bu bölümde, Unix'te kabuk dizilerinin nasıl kullanılacağını tartışacağız. Bir kabuk değişkeni, tek bir değeri tutacak kadar yeteneklidir. Bu değişkenlere skaler değişkenler denir.
Kabuk, adı verilen farklı türde bir değişkeni destekler array variable. Bu, aynı anda birden fazla değeri tutabilir. Diziler, bir dizi değişkeni gruplama yöntemi sağlar. Gereken her değişken için yeni bir ad oluşturmak yerine, diğer tüm değişkenleri saklayan tek bir dizi değişkeni kullanabilirsiniz.
Dizileri adlandırırken Kabuk Değişkenleri için tartışılan tüm adlandırma kuralları geçerli olacaktır.
Dizi Değerlerini Tanımlama
Bir dizi değişkeni ile bir skaler değişken arasındaki fark aşağıdaki gibi açıklanabilir.
Çeşitli öğrencilerin isimlerini bir dizi değişken olarak temsil etmeye çalıştığınızı varsayalım. Bireysel değişkenlerin her biri aşağıdaki gibi skaler bir değişkendir -
NAME01="Zara"
NAME02="Qadir"
NAME03="Mahnaz"
NAME04="Ayan"
NAME05="Daisy"
Yukarıda belirtilen tüm isimleri saklamak için tek bir dizi kullanabiliriz. Aşağıda, bir dizi değişkeni oluşturmanın en basit yöntemi verilmiştir. Bu, endekslerinden birine bir değer atamaya yardımcı olur.
array_name[index]=value
Burada dizi_adı , dizinin adıdır, dizin , dizideki ayarlamak istediğiniz öğenin dizinidir ve değer, bu öğe için ayarlamak istediğiniz değerdir.
Örnek olarak, aşağıdaki komutlar -
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
Eğer kullanıyorsanız ksh kabuk, işte dizi başlatmanın sözdizimi -
set -A array_name value1 value2 ... valuen
Eğer kullanıyorsanız bash kabuk, işte dizi başlatmanın sözdizimi -
array_name=(value1 ... valuen)
Dizi Değerlerine Erişim
Herhangi bir dizi değişkenini ayarladıktan sonra, ona aşağıdaki şekilde erişirsiniz -
${array_name[index]}
Burada dizi_adı , dizinin adıdır ve dizin , erişilecek değerin dizinidir. Aşağıda kavramı anlamak için bir örnek verilmiştir -
#!/bin/sh
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"
Yukarıdaki örnek şu sonucu üretecektir -
$./test.sh
First Index: Zara
Second Index: Qadir
Bir dizideki tüm öğelere aşağıdaki yollardan biriyle erişebilirsiniz -
${array_name[*]} ${array_name[@]}
Buraya array_name ilgilendiğiniz dizinin adıdır. Aşağıdaki örnek, kavramı anlamanıza yardımcı olacaktır -
#!/bin/sh
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Method: ${NAME[*]}" echo "Second Method: ${NAME[@]}"
Yukarıdaki örnek şu sonucu üretecektir -
$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy
Her bir kabuk tarafından desteklenen çeşitli operatörler vardır. Bu bölümde Bourne kabuğu (varsayılan kabuk) hakkında ayrıntılı olarak tartışacağız.
Şimdi aşağıdaki operatörleri tartışacağız -
- Aritmetik operatörler
- İlişkisel Operatörler
- Boole Operatörleri
- Dize Operatörleri
- Dosya Test Operatörleri
Bourne kabuğunun başlangıçta basit aritmetik işlemleri gerçekleştirmek için herhangi bir mekanizması yoktu, ancak harici programlar da kullanıyor. awk veya expr.
Aşağıdaki örnek, iki sayının nasıl ekleneceğini gösterir -
#!/bin/sh
val=`expr 2 + 2`
echo "Total value : $val"
Yukarıdaki komut dosyası aşağıdaki sonucu oluşturacaktır -
Total value : 4
Eklerken aşağıdaki noktaların dikkate alınması gerekir -
Operatörler ve ifadeler arasında boşluklar olmalıdır. Örneğin 2 + 2 doğru değil; 2 + 2 şeklinde yazılmalıdır.
Tam ifade arasına alınmalıdır ‘ ‘, backtick çağırdı.
Aritmetik operatörler
Aşağıdaki aritmetik operatörler Bourne Shell tarafından desteklenmektedir.
Değişken varsay a 10 ve değişken tutar b 20 tutar sonra -
Örnekleri Göster
Şebeke | Açıklama | Misal |
---|---|---|
+ (Toplama) | Operatörün her iki tarafına da değerler ekler | `ifade $a + $b` 30 verir |
- (Çıkarma) | Sağ el işleneni sol el işlenenden çıkarır | `ifade $a - $b` -10 verir |
* (Çarpma işlemi) | İşlecin her iki tarafındaki değerleri çarpar | `ifade $a \* $b` 200 verir |
/ (Bölünme) | Sol el işleneni sağ el işlenene böler | `ifade $b / $a` 2 verir |
% (Modül) | Sol el işleneni sağ el işlenene böler ve kalanı döndürür | `ifade $b % $a` 0 verir |
= (Ödev) | Sol operandda sağ operand atar | a = $ b, b'nin değerini a'ya atar |
== (Eşitlik) | İki sayıyı karşılaştırır, eğer ikisi de aynıysa true döndürür. | [$ a == $ b] yanlış döndürür. |
! = (Eşitlik Değil) | İki sayıyı karşılaştırır, eğer ikisi de farklıysa doğru döndürür. | [$ a! = $ b] doğru döndürür. |
Tüm koşullu ifadelerin, örneğin, köşeli parantez içinde ve etraflarında boşluklar olması gerektiğini anlamak çok önemlidir. [ $a == $b ] doğru oysa [$a==$b] yanlış.
Tüm aritmetik hesaplamalar uzun tamsayılar kullanılarak yapılır.
İlişkisel Operatörler
Bourne Shell, sayısal değerlere özgü aşağıdaki ilişkisel operatörleri destekler. Bu operatörler, değerleri sayısal olmadıkça dize değerleri için çalışmaz.
Örneğin, aşağıdaki operatörler 10 ile 20 arasındaki ve "10" ile "20" arasındaki bir ilişkiyi kontrol etmeye çalışacaklar, ancak "on" ile "yirmi" arasında değil.
Değişken varsay a 10 ve değişken tutar b 20 tutar sonra -
Örnekleri Göster
Şebeke | Açıklama | Misal |
---|---|---|
-eq | İki işlenenin değerinin eşit olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [$ a -eq $ b] doğru değil. |
-ne | İki işlenenin değerinin eşit olup olmadığını kontrol eder; değerler eşit değilse, koşul doğru olur. | [$ a -ne $ b] doğrudur. |
-gt | Soldaki işlenenin değerinin sağ işlenenin değerinden büyük olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [$ a -gt $ b] doğru değil. |
-lt | Sol işlenenin değerinin sağ işlenenin değerinden küçük olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [$ a -lt $ b] doğrudur. |
-ge | Sol işlenenin değerinin sağ işlenenin değerinden büyük veya ona eşit olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [$ a -ge $ b] doğru değil. |
-le | Sol işlenenin değerinin sağ işlenenin değerinden küçük veya ona eşit olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [$ a -le $ b] doğrudur. |
Tüm koşullu ifadelerin, etraflarında boşluklar bulunan köşeli parantezlerin içine yerleştirilmesi gerektiğini anlamak çok önemlidir. Örneğin,[ $a <= $b ] doğru oysa [$a <= $b] yanlış.
Boole Operatörleri
Aşağıdaki Boolean operatörleri Bourne Shell tarafından desteklenmektedir.
Değişken varsay a 10 ve değişken tutar b 20 tutar sonra -
Örnekleri Göster
Şebeke | Açıklama | Misal |
---|---|---|
! | Bu mantıksal olumsuzlamadır. Bu, gerçek bir koşulu yanlışa çevirir ve bunun tersi de geçerlidir. | [! false] doğrudur. |
-o | Bu mantıklı OR. İşlenenlerden biri doğruysa, koşul doğru olur. | [$ a -lt 20 -o $ b -gt 100] doğrudur. |
-a | Bu mantıklı AND. Her iki işlenen de doğruysa, koşul, aksi takdirde yanlış olur. | [$ a -lt 20 -a $ b -gt 100] yanlıştır. |
Dize Operatörleri
Aşağıdaki dize operatörleri Bourne Shell tarafından desteklenmektedir.
Değişken varsay a "abc" ve değişken tutar b "efg" tutar ve sonra -
Örnekleri Göster
Şebeke | Açıklama | Misal |
---|---|---|
= | İki işlenenin değerinin eşit olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [$ a = $ b] doğru değil. |
!= | İki işlenenin değerinin eşit olup olmadığını kontrol eder; değerler eşit değilse, koşul doğru olur. | [$ a! = $ b] doğrudur. |
-z | Verilen dizge işlenen boyutunun sıfır olup olmadığını kontrol eder; sıfır uzunlukta ise true döndürür. | [-z $ a] doğru değil. |
-n | Verilen dizge işlenen boyutunun sıfır olup olmadığını kontrol eder; sıfır olmayan uzunlukta ise true döndürür. | [-n $ a] yanlış değil. |
str | Kontrol eder strboş dize değil; boşsa, yanlış döndürür. | [$ a] yanlış değil. |
Dosya Test Operatörleri
Bir Unix dosyasıyla ilişkili çeşitli özellikleri test etmek için kullanılabilecek birkaç operatörümüz var.
Bir değişken varsayın file boyutu 100 bayt olan mevcut bir dosya adı "test" tutar ve read, write ve execute izin -
Örnekleri Göster
Şebeke | Açıklama | Misal |
---|---|---|
-b file | Dosyanın özel bir blok dosya olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [-b $ dosya] yanlış. |
-c file | Dosyanın bir karakter özel dosyası olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [-c $ dosya] yanlış. |
-d file | Dosyanın bir dizin olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [-d $ dosya] doğru değil. |
-f file | Dosyanın bir dizin veya özel dosya yerine sıradan bir dosya olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [-f $ dosya] doğrudur. |
-g file | Dosyanın kendi grup kimliği (SGID) bitinin ayarlanıp ayarlanmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [-g $ dosya] yanlış. |
-k file | Dosyanın yapışkan bit setine sahip olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [-k $ dosya] yanlış. |
-p file | Dosyanın adlandırılmış bir kanal olup olmadığını denetler; evet ise, o zaman durum gerçek olur. | [-p $ dosya] yanlıştır. |
-t file | Dosya tanımlayıcısının açık olup olmadığını ve bir uçbirimle ilişkili olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [-t $ dosya] yanlıştır. |
-u file | Dosyanın Kullanıcı Kimliği Ayarla (SUID) bitinin ayarlanıp ayarlanmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [-u $ dosya] yanlıştır. |
-r file | Dosyanın okunabilir olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [-r $ dosya] doğrudur. |
-w file | Dosyanın yazılabilir olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [-w $ dosya] doğrudur. |
-x file | Dosyanın çalıştırılabilir olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [-x $ dosya] doğrudur. |
-s file | Dosyanın 0'dan büyük boyuta sahip olup olmadığını kontrol eder; evet ise, o zaman durum gerçek olur. | [-s $ dosya] doğrudur. |
-e file | Dosyanın var olup olmadığını kontrol eder; dosya bir dizin olsa da var olsa bile doğrudur. | [-e $ dosya] doğrudur. |
C Kabuk Operatörleri
Aşağıdaki bağlantı size C Kabuğu Operatörleri hakkında kısa bir fikir verecektir -
C Kabuk Operatörleri
Korn Shell Operatörleri
Aşağıdaki bağlantı, Korn Shell Operatörlerini anlamanıza yardımcı olur -
Korn Shell Operatörleri
Bu bölümde, Unix'te kabuk karar vermeyi anlayacağız. Bir kabuk betiği yazarken, verilen iki yoldan bir yolu benimsemeniz gereken bir durum olabilir. Bu nedenle, programınızın doğru kararlar vermesine ve doğru eylemleri gerçekleştirmesine izin veren koşullu ifadelerden yararlanmanız gerekir.
Unix Shell, farklı koşullara dayalı olarak farklı eylemler gerçekleştirmek için kullanılan koşullu ifadeleri destekler. Şimdi burada iki karar verme ifadesini anlayacağız -
if...else Beyan
case...esac Beyan
İf ... else ifadeleri
If else ifadeleri, belirli bir seçenek kümesinden bir seçeneği seçmek için kullanılabilen yararlı karar verme ifadeleridir.
Unix Shell aşağıdaki formları destekler if…else ifade -
- if ... fi ifadesi
- if ... else ... fi ifadesi
- if ... elif ... else ... fi ifadesi
İf ifadelerinin çoğu, önceki bölümde tartışılan ilişkisel operatörleri kullanarak ilişkileri kontrol eder.
Durum ... esac İfadesi
Birden fazla kullanabilirsiniz if...elifçok yollu bir dallanma gerçekleştirmek için ifadeler. Ancak, özellikle tüm dallar tek bir değişkenin değerine bağlı olduğunda bu her zaman en iyi çözüm değildir.
Unix Shell destekler case...esac tam olarak bu durumu ele alan ve bunu tekrarlanandan daha verimli bir şekilde yapan ifade if...elif ifadeler.
Sadece bir şekli var case...esac burada ayrıntılı olarak açıklanan ifade -
- case ... esac ifadesi
case...esac Unix kabuğundaki ifade, switch...case diğer programlama dillerinde sahip olduğumuz ifade C veya C++ ve PERL, vb.
Bu bölümde, Unix'teki kabuk döngülerini tartışacağız. Döngü, bir dizi komutu tekrar tekrar çalıştırmanızı sağlayan güçlü bir programlama aracıdır. Bu bölümde, kabuk programcılarının kullanabileceği aşağıdaki döngü türlerini inceleyeceğiz -
- While döngüsü
- For döngüsü
- Kadar döngü
- Seçme döngüsü
Duruma göre farklı döngüler kullanacaksınız. Örneğin,whiledöngü, verilen koşul doğru kalana kadar verilen komutları yürütür; until döngü, belirli bir koşul gerçekleşene kadar yürütülür.
İyi bir programlama pratiğine sahip olduğunuzda, uzmanlık kazanacak ve böylece duruma göre uygun döngüyü kullanmaya başlayacaksınız. Buraya,while ve for döngüler, diğer programlama dillerinin çoğunda mevcuttur. C, C++ ve PERL, vb.
Yuvalama Döngüleri
Tüm döngüler yuvalama konseptini destekler; bu, bir döngüyü başka bir benzer veya farklı döngülerin içine koyabileceğiniz anlamına gelir. Bu yuvalama, gereksiniminize bağlı olarak sınırsız sayıda olabilir.
İşte bir yuvalama örneği whiledöngü. Diğer döngüler, programlama gereksinimine göre benzer şekilde iç içe yerleştirilebilir -
Döngüler sırasında yuvalama
Bir while döngüsünü başka bir while döngüsünün gövdesinin bir parçası olarak kullanmak mümkündür.
Sözdizimi
while command1 ; # this is loop1, the outer loop
do
Statement(s) to be executed if command1 is true
while command2 ; # this is loop2, the inner loop
do
Statement(s) to be executed if command2 is true
done
Statement(s) to be executed if command1 is true
done
Misal
Burada basit bir döngü iç içe yerleştirme örneği verilmiştir. Dokuza kadar saydığınız döngünün içine başka bir geri sayım döngüsü ekleyelim -
#!/bin/sh
a=0
while [ "$a" -lt 10 ] # this is loop1 do b="$a"
while [ "$b" -ge 0 ] # this is loop2 do echo -n "$b "
b=`expr $b - 1` done echo a=`expr $a + 1`
done
Bu, aşağıdaki sonucu verecektir. Nasıl olduğuna dikkat etmek önemlidirecho -nburada çalışıyor. Buraya-n seçeneği, yankının yeni bir satır karakteri yazdırmasını önlemesini sağlar.
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
Bu bölümde, Unix'te kabuk döngü kontrolünü tartışacağız. Şimdiye kadar, farklı görevleri gerçekleştirmek için döngüler oluşturmaya ve döngülerle çalışmaya baktınız. Bazen bir döngüyü durdurmanız veya döngünün yinelemelerini atlamanız gerekir.
Bu bölümde, kabuk döngülerini kontrol etmek için kullanılan iki ifadeyi öğreneceğiz−
break Beyan
continue Beyan
Sonsuz Döngü
Tüm döngülerin sınırlı bir ömrü vardır ve döngüye bağlı olarak durum yanlış veya doğru olduğunda ortaya çıkarlar.
Gerekli koşul karşılanmazsa bir döngü sonsuza kadar devam edebilir. Sonsuz sayıda yürütmeyi sonlandırmadan sonsuza kadar çalışan bir döngü. Bu nedenle, bu tür döngüler sonsuz döngüler olarak adlandırılır.
Misal
İşte basit bir örnek while sıfırdan dokuza kadar olan sayıları görüntülemek için döngü -
#!/bin/sh
a=10
until [ $a -lt 10 ] do echo $a
a=`expr $a + 1`
done
Bu döngü sonsuza kadar devam ediyor çünkü a her zaman greater than veya equal to 10 ve asla 10'dan az değildir.
Break İfadesi
breakdeyimi, break deyimine kadar tüm kod satırlarının yürütülmesini tamamladıktan sonra tüm döngünün yürütülmesini sonlandırmak için kullanılır. Daha sonra, döngünün sonunu izleyen koda iner.
Sözdizimi
Aşağıdaki break deyimi bir döngüden çıkmak için kullanılır -
break
Break komutu, bu formatı kullanarak iç içe bir döngüden çıkmak için de kullanılabilir -
break n
Here n specifies the nth enclosing loop to the exit from.
Example
Here is a simple example which shows that loop terminates as soon as a becomes 5 −
#!/bin/sh
a=0
while [ $a -lt 10 ]
do
echo $a if [ $a -eq 5 ]
then
break
fi
a=`expr $a + 1`
done
Upon execution, you will receive the following result −
0
1
2
3
4
5
Here is a simple example of nested for loop. This script breaks out of both loops if var1 equals 2 and var2 equals 0 −
#!/bin/sh
for var1 in 1 2 3
do
for var2 in 0 5
do
if [ $var1 -eq 2 -a $var2 -eq 0 ] then break 2 else echo "$var1 $var2"
fi
done
done
Upon execution, you will receive the following result. In the inner loop, you have a break command with the argument 2. This indicates that if a condition is met you should break out of outer loop and ultimately from the inner loop as well.
1 0
1 5
The continue statement
The continue statement is similar to the break command, except that it causes the current iteration of the loop to exit, rather than the entire loop.
This statement is useful when an error has occurred but you want to try to execute the next iteration of the loop.
Syntax
continue
Like with the break statement, an integer argument can be given to the continue command to skip commands from nested loops.
continue n
Here n specifies the nth enclosing loop to continue from.
Example
The following loop makes use of the continue statement which returns from the continue statement and starts processing the next statement −
#!/bin/sh
NUMS="1 2 3 4 5 6 7"
for NUM in $NUMS
do
Q=`expr $NUM % 2` if [ $Q -eq 0 ]
then
echo "Number is an even number!!"
continue
fi
echo "Found odd number"
done
Upon execution, you will receive the following result −
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
What is Substitution?
The shell performs substitution when it encounters an expression that contains one or more special characters.
Example
Here, the printing value of the variable is substituted by its value. Same time, "\n" is substituted by a new line −
#!/bin/sh
a=10
echo -e "Value of a is $a \n"
You will receive the following result. Here the -e option enables the interpretation of backslash escapes.
Value of a is 10
Following is the result without -e option −
Value of a is 10\n
Here are following escape sequences which can be used in echo command −
Sr.No. | Escape & Description |
---|---|
1 | \\ backslash |
2 | \a alert (BEL) |
3 | \b backspace |
4 | \c suppress trailing newline |
5 | \f form feed |
6 | \n new line |
7 | \r carriage return |
8 | \t horizontal tab |
9 | \v vertical tab |
You can use the -E option to disable the interpretation of the backslash escapes (default).
You can use the -n option to disable the insertion of a new line.
Command Substitution
Command substitution is the mechanism by which the shell performs a given set of commands and then substitutes their output in the place of the commands.
Syntax
The command substitution is performed when a command is given as −
`command`
When performing the command substitution make sure that you use the backquote, not the single quote character.
Example
Command substitution is generally used to assign the output of a command to a variable. Each of the following examples demonstrates the command substitution −
#!/bin/sh
DATE=`date`
echo "Date is $DATE"
USERS=`who | wc -l`
echo "Logged in user are $USERS" UP=`date ; uptime` echo "Uptime is $UP"
Upon execution, you will receive the following result −
Date is Thu Jul 2 03:59:57 MST 2009
Logged in user are 1
Uptime is Thu Jul 2 03:59:57 MST 2009
03:59:57 up 20 days, 14:03, 1 user, load avg: 0.13, 0.07, 0.15
Variable Substitution
Variable substitution enables the shell programmer to manipulate the value of a variable based on its state.
Here is the following table for all the possible substitutions −
Sr.No. | Form & Description |
---|---|
1 | ${var} Substitute the value of var. |
2 | ${var:-word} If var is null or unset, word is substituted for var. The value of var does not change. |
3 | ${var:=word} If var is null or unset, var is set to the value of word. |
4 | ${var:?message} If var is null or unset, message is printed to standard error. This checks that variables are set correctly. |
5 | ${var:+word} If var is set, word is substituted for var. The value of var does not change. |
Example
Following is the example to show various states of the above substitution −
#!/bin/sh
echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}" echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}" unset var echo ${var:+"This is default value"}
echo "3 - Value of var is $var" var="Prefix" echo ${var:+"This is default value"}
echo "4 - Value of var is $var" echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"
Upon execution, you will receive the following result −
Variable is not set
1 - Value of var is
Variable is not set
2 - Value of var is Variable is not set
3 - Value of var is
This is default value
4 - Value of var is Prefix
Prefix
5 - Value of var is Prefix
In this chapter, we will discuss in detail about the Shell quoting mechanisms. We will start by discussing the metacharacters.
The Metacharacters
Unix Shell provides various metacharacters which have special meaning while using them in any Shell Script and causes termination of a word unless quoted.
For example, ? matches with a single character while listing files in a directory and an * matches more than one character. Here is a list of most of the shell special characters (also called metacharacters) −
* ? [ ] ' " \ $ ; & ( ) | ^ < > new-line space tab
A character may be quoted (i.e., made to stand for itself) by preceding it with a \.
Example
Following example shows how to print a * or a ? −
#!/bin/sh
echo Hello; Word
Upon execution, you will receive the following result −
Hello
./test.sh: line 2: Word: command not found
shell returned 127
Let us now try using a quoted character −
#!/bin/sh
echo Hello\; Word
Upon execution, you will receive the following result −
Hello; Word
The $ sign is one of the metacharacters, so it must be quoted to avoid special handling by the shell −
#!/bin/sh
echo "I have \$1200"
Upon execution, you will receive the following result −
I have $1200
The following table lists the four forms of quoting −
Sr.No. | Quoting & Description |
---|---|
1 | Single quote All special characters between these quotes lose their special meaning. |
2 | Double quote Most special characters between these quotes lose their special meaning with these exceptions −
|
3 | Backslash Any character immediately following the backslash loses its special meaning. |
4 | Back quote Anything in between back quotes would be treated as a command and would be executed. |
The Single Quotes
Consider an echo command that contains many special shell characters −
echo <-$1500.**>; (update?) [y|n]
Putting a backslash in front of each special character is tedious and makes the line difficult to read −
echo \<-\$1500.\*\*\>\; \(update\?\) \[y\|n\]
There is an easy way to quote a large group of characters. Put a single quote (') at the beginning and at the end of the string −
echo '<-$1500.**>; (update?) [y|n]'
Characters within single quotes are quoted just as if a backslash is in front of each character. With this, the echo command displays in a proper way.
If a single quote appears within a string to be output, you should not put the whole string within single quotes instead you should precede that using a backslash (\) as follows −
echo 'It\'s Shell Programming
The Double Quotes
Try to execute the following shell script. This shell script makes use of single quote −
VAR=ZARA
echo '$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]'
Upon execution, you will receive the following result −
$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]
This is not what had to be displayed. It is obvious that single quotes prevent variable substitution. If you want to substitute variable values and to make inverted commas work as expected, then you would need to put your commands in double quotes as follows −
VAR=ZARA
echo "$VAR owes <-\$1500.**>; [ as of (`date +%m/%d`) ]"
Upon execution, you will receive the following result −
ZARA owes <-$1500.**>; [ as of (07/02) ]
Double quotes take away the special meaning of all characters except the following −
$ for parameter substitution
Backquotes for command substitution
\$ to enable literal dollar signs
\` to enable literal backquotes
\" to enable embedded double quotes
\\ to enable embedded backslashes
All other \ characters are literal (not special)
Characters within single quotes are quoted just as if a backslash is in front of each character. This helps the echo command display properly.
If a single quote appears within a string to be output, you should not put the whole string within single quotes instead you should precede that using a backslash (\) as follows −
echo 'It\'s Shell Programming'
The Backquotes
Putting any Shell command in between backquotes executes the command.
Syntax
Here is the simple syntax to put any Shell command in between backquotes −
var=`command`
Example
The date command is executed in the following example and the produced result is stored in DATA variable.
DATE=`date`
echo "Current Date: $DATE"
Upon execution, you will receive the following result −
Current Date: Thu Jul 2 05:28:45 MST 2009
In this chapter, we will discuss in detail about the Shell input/output redirections. Most Unix system commands take input from your terminal and send the resulting output back to your terminal. A command normally reads its input from the standard input, which happens to be your terminal by default. Similarly, a command normally writes its output to standard output, which is again your terminal by default.
Output Redirection
The output from a command normally intended for standard output can be easily diverted to a file instead. This capability is known as output redirection.
If the notation > file is appended to any command that normally writes its output to standard output, the output of that command will be written to file instead of your terminal.
Check the following who command which redirects the complete output of the command in the users file.
$ who > users
Notice that no output appears at the terminal. This is because the output has been redirected from the default standard output device (the terminal) into the specified file. You can check the users file for the complete content −
$ cat users
oko tty01 Sep 12 07:30
ai tty15 Sep 12 13:32
ruth tty21 Sep 12 10:10
pat tty24 Sep 12 13:07
steve tty25 Sep 12 13:03
$
If a command has its output redirected to a file and the file already contains some data, that data will be lost. Consider the following example −
$ echo line 1 > users
$ cat users line 1 $
You can use >> operator to append the output in an existing file as follows −
$ echo line 2 >> users $ cat users
line 1
line 2
$
Input Redirection
Just as the output of a command can be redirected to a file, so can the input of a command be redirected from a file. As the greater-than character > is used for output redirection, the less-than character < is used to redirect the input of a command.
The commands that normally take their input from the standard input can have their input redirected from a file in this manner. For example, to count the number of lines in the file users generated above, you can execute the command as follows −
$ wc -l users
2 users
$
Upon execution, you will receive the following output. You can count the number of lines in the file by redirecting the standard input of the wc command from the file users −
$ wc -l < users
2
$
Note that there is a difference in the output produced by the two forms of the wc command. In the first case, the name of the file users is listed with the line count; in the second case, it is not.
In the first case, wc knows that it is reading its input from the file users. In the second case, it only knows that it is reading its input from standard input so it does not display file name.
Here Document
Bir here document girdiyi etkileşimli bir kabuk betiğine veya programına yeniden yönlendirmek için kullanılır.
Etkileşimli program için gerekli girdiyi veya etkileşimli kabuk komut dosyasını sağlayarak, kullanıcı eylemi olmadan bir kabuk betiği içinde etkileşimli bir programı çalıştırabiliriz.
Genel form here belge -
command << delimiter
document
delimiter
Burada kabuk, <<Belirtilen sınırlayıcıyı içeren bir satır bulana kadar girişi okumak için bir talimat olarak operatör. Sınırlayıcıyı içeren satıra kadar olan tüm giriş satırları daha sonra komutun standart girişine beslenir.
Sınırlayıcı, kabuğa herebelge tamamlandı. Onsuz, kabuk girdiyi sonsuza kadar okumaya devam eder. Sınırlayıcı, boşluk veya sekme içermeyen tek bir kelime olmalıdır.
Aşağıdaki komutun girdisidir wc -l toplam satır sayısını saymak için -
$wc -l << EOF
This is a simple lookup program
for good (and bad) restaurants
in Cape Town.
EOF
3
$
Kullanabilirsiniz here document komut dosyanızı kullanarak birden çok satırı aşağıdaki gibi yazdırmak için -
#!/bin/sh
cat << EOF
This is a simple lookup program
for good (and bad) restaurants
in Cape Town.
EOF
Yürütme üzerine aşağıdaki sonucu alacaksınız -
This is a simple lookup program
for good (and bad) restaurants
in Cape Town.
Aşağıdaki komut dosyası, vi metin editörü ve girişi dosyaya kaydeder test.txt.
#!/bin/sh
filename=test.txt
vi $filename <<EndOfCommands
i
This file was created automatically from
a shell script
^[
ZZ
EndOfCommands
Bu betiği vi gibi davranan vim ile çalıştırırsanız, muhtemelen aşağıdaki gibi bir çıktı göreceksiniz -
$ sh test.sh Vim: Warning: Input is not from a terminal $
Komut dosyasını çalıştırdıktan sonra, aşağıdakilerin dosyaya eklendiğini görmelisiniz test.txt -
$ cat test.txt This file was created automatically from a shell script $
Çıkışı atın
Bazen bir komutu yürütmeniz gerekir, ancak çıktının ekranda görüntülenmesini istemezsiniz. Bu gibi durumlarda, çıktıyı dosyaya yeniden yönlendirerek atabilirsiniz./dev/null -
$ command > /dev/null
Burada komut, yürütmek istediğiniz komutun adıdır. Dosya/dev/null tüm girdilerini otomatik olarak atan özel bir dosyadır.
Bir komutun hem çıktısını hem de hata çıktısını atmak için, yeniden yönlendirmek için standart yeniden yönlendirmeyi kullanın STDERR -e STDOUT -
$ command > /dev/null 2>&1
Buraya 2 temsil eder STDERR ve 1 temsil eder STDOUT. STDOUT'u aşağıdaki gibi STDERR'a yönlendirerek STDERR'da bir mesaj görüntüleyebilirsiniz -
$ echo message 1>&2
Yönlendirme Komutları
Yönlendirme için kullanabileceğiniz komutların tam listesi aşağıdadır -
Sr.No. | Komut ve Açıklama |
---|---|
1 | pgm > file Pgm çıktısı dosyaya yeniden yönlendirilir |
2 | pgm < file Program pgm girdisini dosyadan okur |
3 | pgm >> file Pgm çıktısı dosyaya eklenir |
4 | n > file Açıklayıcı ile akıştan çıktı n dosyaya yeniden yönlendirildi |
5 | n >> file Açıklayıcı ile akıştan çıktı n dosyaya eklendi |
6 | n >& m Akıştan gelen çıktıyı birleştirir n akışla m |
7 | n <& m Akıştan gelen girdiyi birleştirir n akışla m |
8 | << tag Standart giriş buradan satırın başlangıcındaki bir sonraki etikete kadar gelir |
9 | | Bir programdan veya işlemden çıktı alır ve diğerine gönderir |
Dosya tanımlayıcısının 0 normalde standart giriştir (STDIN), 1 standart çıktıdır (STDOUT) ve 2 standart hata çıktısıdır (STDERR).
Bu bölümde, kabuk işlevleri hakkında ayrıntılı olarak tartışacağız. İşlevler, bir komut dosyasının genel işlevselliğini daha küçük, mantıksal alt bölümlere ayırmanıza olanak tanır, bu alt bölümler gerektiğinde kendi görevlerini gerçekleştirmek için çağrılabilir.
Tekrarlayan görevleri gerçekleştirmek için işlevleri kullanmak, oluşturmanın mükemmel bir yoludur. code reuse. Bu, modern nesne yönelimli programlama ilkelerinin önemli bir parçasıdır.
Kabuk işlevleri, diğer programlama dillerindeki alt yordamlara, yordamlara ve işlevlere benzer.
Fonksiyon Oluşturma
Bir işlevi bildirmek için aşağıdaki sözdizimini kullanmanız yeterlidir -
function_name () {
list of commands
}
Fonksiyonunuzun adı function_nameve bu, komut dosyalarınızın herhangi bir yerinden adlandırmak için kullanacağınız şeydir. İşlev adının ardından parantez ve ardından parantez içine alınmış komutların bir listesi gelmelidir.
Misal
Aşağıdaki örnek fonksiyonun kullanımını göstermektedir -
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World"
}
# Invoke your function
Hello
Yürütme üzerine, aşağıdaki çıktıyı alacaksınız -
$./test.sh
Hello World
Parametreleri İşleve Geçirme
Fonksiyonu çağırırken parametreleri kabul edecek bir fonksiyon tanımlayabilirsiniz. Bu parametreler şu şekilde temsil edilecektir:$1, $2 ve bunun gibi.
Aşağıda, iki parametre Zara ve Ali'yi geçirdiğimiz ve ardından bu parametreleri yakalayıp işlevde yazdırdığımız bir örnek verilmiştir .
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World $1 $2"
}
# Invoke your function
Hello Zara Ali
Yürütme üzerine aşağıdaki sonucu alacaksınız -
$./test.sh
Hello World Zara Ali
İşlevlerden Değerleri Döndürme
Eğer bir exit bir işlevin içinden komut, etkisi yalnızca işlevin yürütülmesini değil, aynı zamanda işlevi çağıran kabuk programının da sonlandırılmasıdır.
Bunun yerine sadece işlevin yürütülmesini sonlandırmak istiyorsanız, o zaman tanımlanmış bir işlevden çıkmanın bir yolu vardır.
Duruma bağlı olarak işlevinizden herhangi bir değeri döndürebilirsiniz. return sözdizimi aşağıdaki gibi olan komut -
return code
Buraya code burada seçtiğiniz herhangi bir şey olabilir, ancak tabii ki bir bütün olarak senaryonuzun bağlamında anlamlı veya yararlı olan bir şey seçmelisiniz.
Misal
Aşağıdaki işlev 10 değerini döndürür -
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World $1 $2" return 10 } # Invoke your function Hello Zara Ali # Capture value returnd by last command ret=$?
echo "Return value is $ret"
Yürütme üzerine aşağıdaki sonucu alacaksınız -
$./test.sh
Hello World Zara Ali
Return value is 10
İç İçe İşlevler
Fonksiyonların daha ilginç özelliklerinden biri, kendilerini ve diğer fonksiyonları da çağırabilmeleridir. Kendini çağıran bir işlev,recursive function.
Aşağıdaki örnek, iki işlevin yuvalanmasını gösterir -
#!/bin/sh
# Calling one function from another
number_one () {
echo "This is the first function speaking..."
number_two
}
number_two () {
echo "This is now the second function speaking..."
}
# Calling function one.
number_one
Yürütme üzerine aşağıdaki sonucu alacaksınız -
This is the first function speaking...
This is now the second function speaking...
İstemden İşlev Çağrısı
Yaygın olarak kullanılan işlevler için tanımlar koyabilirsiniz. .profile. Bu tanımlar, her oturum açtığınızda kullanılabilir olacak ve bunları komut isteminde kullanabilirsiniz.
Alternatif olarak, tanımları bir dosyada gruplayabilirsiniz. test.shve sonra - yazarak mevcut kabuktaki dosyayı yürütün.
$. test.sh
Bu, içinde tanımlanan işlevlere neden olma etkisine sahiptir. test.sh mevcut kabuğa aşağıdaki gibi okunacak ve tanımlanacaktır -
$ number_one
This is the first function speaking...
This is now the second function speaking...
$
Bir işlevin tanımını kabuktan kaldırmak için unset komutunu kullanarak .fseçeneği. Bu komut aynı zamanda kabuğa bir değişkenin tanımını kaldırmak için kullanılır.
$ unset -f function_name
Tüm Unix komutları bir dizi isteğe bağlı ve zorunlu seçenekle birlikte gelir. Bu komutların tam sözdizimini unutmak çok yaygındır.
Hiç kimse muhtemelen her Unix komutunu ve tüm seçeneklerini hatırlayamayacağı için, bunu Unix geliştirme aşamasındayken azaltmak için çevrimiçi yardıma sahibiz.
Unix'in sürümü Help files arandı man pages. Bir komut adı varsa ve onu nasıl kullanacağınızdan emin değilseniz, Man Pages her adımda size yardımcı olur.
Sözdizimi
Sistemle çalışırken herhangi bir Unix komutunun ayrıntılarını almanıza yardımcı olacak basit komut şu şekildedir:
$man command
Misal
Yardım almanızı gerektiren bir komut olduğunu varsayalım; hakkında bilmek istediğinizi varsayalımpwd o zaman aşağıdaki komutu kullanmanız yeterlidir -
$man pwd
Yukarıdaki komut, cihazla ilgili tüm bilgilerle size yardımcı olur. pwdkomut. Daha fazla ayrıntı elde etmek için komut isteminizde kendiniz deneyin.
Hakkında tam ayrıntı alabilirsiniz man aşağıdaki komutu kullanarak komutun kendisi -
$man man
Man Page Bölümleri
Man sayfaları, genellikle man sayfası yazarının tercihine göre değişen bölümlere ayrılır. Aşağıdaki tablo bazı yaygın bölümleri listeler -
Sr.No. | Bölüm ve Açıklama |
---|---|
1 | NAME Komutun adı |
2 | SYNOPSIS Komutun genel kullanım parametreleri |
3 | DESCRIPTION Komutun ne yaptığını açıklar |
4 | OPTIONS Komuta tüm argümanları veya seçenekleri açıklar |
5 | SEE ALSO Man sayfasındaki komutla doğrudan ilişkili olan veya işlevine çok benzeyen diğer komutları listeler |
6 | BUGS Komut veya çıktısında var olan bilinen sorunları veya hataları açıklar |
7 | EXAMPLES Okuyucuya komutun nasıl kullanılabileceği konusunda fikir veren yaygın kullanım örnekleri |
8 | AUTHORS Man sayfasının / komutunun yazarı |
Özetlemek gerekirse, man sayfaları hayati bir kaynaktır ve bir Unix sistemindeki komutlar veya dosyalar hakkında bilgiye ihtiyaç duyduğunuzda araştırmanın ilk yoludur.
Yararlı Kabuk Komutları
Aşağıdaki bağlantı size en önemli ve en sık kullanılan Unix Shell komutlarının bir listesini verir.
Herhangi bir komutu nasıl kullanacağınızı bilmiyorsanız, komut hakkında tam ayrıntı almak için man sayfasını kullanın.
İşte Unix Shell - Faydalı Komutların listesi
Bu bölümde, Unix'te SED ile düzenli ifadeler hakkında ayrıntılı olarak tartışacağız.
Normal ifade, birkaç karakter dizisini açıklamak için kullanılabilen bir dizedir. Normal ifadeler birkaç farklı Unix komutu tarafından kullanılır.ed, sed, awk, grepve daha sınırlı bir ölçüde, vi.
Buraya SED duruyor soyun editor. Bu akış odaklı düzenleyici, özellikle komut dosyalarını yürütmek için oluşturuldu. Böylece, içine beslediğiniz tüm girdiler geçer ve STDOUT'a gider ve girdi dosyasını değiştirmez.
Sed çağırmak
Başlamadan önce, yerel bir kopyasına sahip olduğumuzdan emin olalım. /etc/passwd çalışmak için metin dosyası sed.
Daha önce belirtildiği gibi, sed, aşağıdaki gibi bir boru aracılığıyla veri gönderilerek çağrılabilir -
$ cat /etc/passwd | sed
Usage: sed [OPTION]... {script-other-script} [input-file]...
-n, --quiet, --silent
suppress automatic printing of pattern space
-e script, --expression = script
...............................
cat komut içeriğinin dökümünü alır /etc/passwd -e sedborudan sed'in desen boşluğuna. Desen alanı, sed'in işlemleri için kullandığı dahili çalışma tamponudur.
Sed Genel Sözdizimi
Sed için genel sözdizimi aşağıdadır -
/pattern/action
Buraya, pattern normal bir ifadedir ve actionaşağıdaki tabloda verilen komutlardan biridir. Eğerpattern ihmal edildi, action yukarıda gördüğümüz gibi her satır için yapılır.
Sınırlayıcı olarak kullanıldığından, deseni çevreleyen eğik çizgi karakteri (/) gereklidir.
Sr.No. | Aralık ve Açıklama |
---|---|
1 | p Satırı yazdırır |
2 | d Satırı siler |
3 | s/pattern1/pattern2/ Pattern1'in ilk oluşumunu pattern2 ile değiştirir |
Sed ile Tüm Satırları Silme
Şimdi sed ile tüm satırların nasıl silineceğini anlayacağız. Sed'i yeniden çağırın; ancak sed'in artık kullanması gerekiyorediting command delete line, tek harfle gösterilir d -
$ cat /etc/passwd | sed 'd' $
Sed'e bir boru yoluyla bir dosya göndererek çağırmak yerine, aşağıdaki örnekte olduğu gibi, sed'e bir dosyadan verileri okuması talimatı verilebilir.
Aşağıdaki komut, cat komutu olmadan önceki örnekteki ile tamamen aynı şeyi yapar -
$ sed -e 'd' /etc/passwd $
Sed Adresleri
Sed ayrıca adresleri de destekler. Adresler ya bir dosyadaki belirli konumlardır ya da belirli bir düzenleme komutunun uygulanması gereken bir aralıktır. Sed herhangi bir adresle karşılaşmadığında, işlemlerini dosyanın her satırında gerçekleştirir.
Aşağıdaki komut, kullanmakta olduğunuz sed komutuna temel bir adres ekler -
$ cat /etc/passwd | sed '1d' |more daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh $
1 rakamının, delete editkomut. Bu, sed'e, düzenleme komutunu dosyanın ilk satırında gerçekleştirmesi talimatını verir. Bu örnekte sed, ilk satırını silecektir./etc/password ve dosyanın geri kalanını yazdırın.
Sed Adres Aralıkları
Şimdi nasıl çalışılacağını anlayacağız the sed address ranges. Peki ya bir dosyadan birden fazla satırı kaldırmak isterseniz? Sed ile aşağıdaki gibi bir adres aralığı belirtebilirsiniz -
$ cat /etc/passwd | sed '1, 5d' |more games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh $
Yukarıdaki komut 1'den 5'e kadar tüm satırlara uygulanacaktır. Bu, ilk beş satırı siler.
Aşağıdaki adres aralıklarını deneyin -
Sr.No. | Aralık ve Açıklama |
---|---|
1 | '4,10d' 4. sıradan 10. sıraya kadar olan satırlar silinir. |
2 | '10,4d' Sadece 10 inci sed eser ters yönde değil çünkü hat, silinir |
3 | '4,+5d' Bu, dosyadaki 4. satırla eşleşir, bu satırı siler, sonraki beş satırı silmeye devam eder ve ardından silme işlemini durdurur ve geri kalanını yazdırır |
4 | '2,5!d' Bu, 2. satırdan 5. satıra kadar her şeyi siler. |
5 | '1~3d' Bu, ilk satırı siler, sonraki üç satırın üzerinden geçer ve ardından dördüncü satırı siler. Sed, dosyanın sonuna kadar bu kalıbı uygulamaya devam ediyor. |
6 | '2~2d' Bu, sed'e ikinci satırı silmesini, sonraki satıra geçmesini, sonraki satırı silmesini ve dosyanın sonuna ulaşılana kadar tekrar etmesini söyler. |
7 | '4,10p' 4 itibaren hatlar th 10 kadar inci basılır |
8 | '4,d' Bu, sözdizimi hatası oluşturur |
9 | ',10d' Bu aynı zamanda sözdizimi hatası oluşturur |
Note - Kullanırken p eylem, kullanmalısınız -nsatır baskısının tekrarını önlemek için seçenek. Aşağıdaki iki komut arasındaki farkı kontrol edin -
$ cat /etc/passwd | sed -n '1,3p' Check the above command without -n as follows − $ cat /etc/passwd | sed '1,3p'
Değiştirme Komutu
İkame komutu ile gösterilen s, belirttiğiniz herhangi bir dizeyi, belirttiğiniz diğer dizelerle değiştirir.
Bir dizgiyi diğeriyle değiştirmek için, sed'in ilk dizenin nerede bittiği ve ikame dizesinin başladığı yer hakkında bilgiye sahip olması gerekir. Bunun için, iki dizeyi eğik çizgi (/) karakter.
Aşağıdaki komut, dizenin bir satırındaki ilk oluşumun yerini alır root ip ile amrood.
$ cat /etc/passwd | sed 's/root/amrood/'
amrood:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
..........................
Sed'in bir satırda yalnızca ilk geçtiği yeri değiştirdiğine dikkat etmek çok önemlidir. Dize kökü bir satırda birden fazla ortaya çıkarsa, yalnızca ilk eşleşme değiştirilecektir.
Sed'in global bir ikame gerçekleştirmesi için, harfi ekleyin g aşağıdaki gibi komutun sonuna kadar -
$ cat /etc/passwd | sed 's/root/amrood/g'
amrood:x:0:0:amrood user:/amrood:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
...........................
Oyuncu Değişikliği Bayrakları
Ek olarak aktarılabilecek bir dizi başka yararlı bayrak vardır. g bayrak ve aynı anda birden fazla belirtebilirsiniz.
Sr.No. | Bayrak ve Açıklama |
---|---|
1 | g Yalnızca ilk eşleşmeyi değil, tüm eşleşmeleri değiştirir |
2 | NUMBER Yerini sadece SAYISI inci maçın |
3 | p Değiştirme yapıldıysa, desen alanını yazdırır |
4 | w FILENAME Değiştirme yapılmışsa, sonucu FILENAME'e yazar |
5 | I or i Büyük / küçük harfe duyarlı olmayan bir şekilde eşleşir |
6 | M or m Özel normal ifade karakterlerinin normal davranışına ek olarak ^ ve $, this flag causes ^ to match the empty string after a newline and $ yeni satırdan önceki boş dizeyle eşleştirmek için |
Alternatif Bir Dize Ayırıcı Kullanma
Eğik çizgi karakterini içeren bir dizge üzerinde bir değişiklik yapmanız gerektiğini varsayalım. Bu durumda, belirtilen karakteri girerek farklı bir ayırıcı belirtebilirsiniz.s.
$ cat /etc/passwd | sed 's:/root:/amrood:g'
amrood:x:0:0:amrood user:/amrood:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
Yukarıdaki örnekte kullandık : olarak delimiter eğik çizgi yerine / aramaya çalıştığımız için /root basit kök yerine.
Boş Alanla Değiştirme
Kök dizeyi listeden silmek için boş bir ikame dizesi kullanın. /etc/passwd tamamen dosya -
$ cat /etc/passwd | sed 's/root//g'
:x:0:0::/:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
Adres Değiştirme
Dizeyi değiştirmek istiyorsanız sh ip ile quiet yalnızca 10. satırda, aşağıdaki şekilde belirtebilirsiniz -
$ cat /etc/passwd | sed '10s/sh/quiet/g'
root:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/quiet
Benzer şekilde, bir adres aralığı değişikliği yapmak için aşağıdaki gibi bir şey yapabilirsiniz -
$ cat /etc/passwd | sed '1,5s/sh/quiet/g'
root:x:0:0:root user:/root:/bin/quiet
daemon:x:1:1:daemon:/usr/sbin:/bin/quiet
bin:x:2:2:bin:/bin:/bin/quiet
sys:x:3:3:sys:/dev:/bin/quiet
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
Çıktıdan da görebileceğiniz gibi, ilk beş satırda dize vardı sh olarak değiştirildi quiet, ancak satırların geri kalanı dokunulmadan kaldı.
Eşleşen Komut
Kullanacaksın p ile birlikte seçenek -n tüm eşleşen satırları aşağıdaki gibi yazdırma seçeneği -
$ cat testing | sed -n '/root/p'
root:x:0:0:root user:/root:/bin/sh
[root@ip-72-167-112-17 amrood]# vi testing
root:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
Normal İfadeyi Kullanma
Kalıpları eşleştirirken, daha fazla esneklik sağlayan normal ifadeyi kullanabilirsiniz.
Daemon ile başlayan tüm satırlarla eşleşen ve ardından bunları silen aşağıdaki örneği kontrol edin -
$ cat testing | sed '/^daemon/d'
root:x:0:0:root user:/root:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
Aşağıda, ile biten tüm satırları silen örnek verilmiştir. sh -
$ cat testing | sed '/sh$/d'
sync:x:4:65534:sync:/bin:/bin/sync
Aşağıdaki tablo, normal ifadelerde çok yararlı olan dört özel karakteri listelemektedir.
Sr.No. | Karakter açıklaması |
---|---|
1 | ^ Satırın başlangıcıyla eşleşir |
2 | $ Satırın sonuyla eşleşir |
3 | . Herhangi bir tek karakterle eşleşir |
4 | * Önceki karakterin sıfır veya daha fazla oluşumuyla eşleşir |
5 | [chars] Karakterlerin bir dizi karakter olduğu karakterlerde verilen karakterlerden herhangi biriyle eşleşir. Bir karakter aralığını belirtmek için - karakterini kullanabilirsiniz. |
Eşleşen Karakterler
Kullanımını göstermek için birkaç ifadeye daha bakın metacharacters. Örneğin, aşağıdaki model -
Sr.No. | İfade ve Açıklama |
---|---|
1 | /a.c/ Şunun gibi dizeler içeren satırları eşleştirir: a+c, a-c, abc, match, ve a3c |
2 | /a*c/ Aşağıdaki gibi dizelerle aynı dizelerle eşleşir: ace, yacc, ve arctic |
3 | /[tT]he/ Dizeyle eşleşir The ve the |
4 | /^$/ Boş satırlarla eşleşir |
5 | /^.*$/ Her ne olursa olsun tüm bir çizgiyle eşleşir |
6 | / */ Bir veya daha fazla boşlukla eşleşir |
7 | /^$/ Maçlar blank çizgiler |
Aşağıdaki tablo, sık kullanılan bazı karakter kümelerini göstermektedir -
Sr.No. | Set ve Açıklama |
---|---|
1 | [a-z] Tek bir küçük harfle eşleşir |
2 | [A-Z] Tek bir büyük harfle eşleşir |
3 | [a-zA-Z] Tek bir harfle eşleşir |
4 | [0-9] Tek bir numarayla eşleşir |
5 | [a-zA-Z0-9] Tek bir harf veya sayıyla eşleşir |
Karakter Sınıfı Anahtar Kelimeleri
Bazı özel anahtar kelimeler yaygın olarak kullanılabilir regexps, özellikle de kullanan GNU yardımcı programları regexps. Bunlar, şeyleri basitleştirdikleri ve okunabilirliği artırdıkları için sed düzenli ifadeler için çok kullanışlıdır.
Örneğin, karakterler a through z ve karakterler A through Z, anahtar kelimesini içeren böyle bir karakter sınıfı oluşturun [[:alpha:]]
Alfabe karakteri sınıfı anahtar sözcüğünü kullanarak, bu komut yalnızca /etc/syslog.conf alfabenin bir harfiyle başlayan dosya -
$ cat /etc/syslog.conf | sed -n '/^[[:alpha:]]/p'
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
Aşağıdaki tablo, GNU sed'deki kullanılabilir karakter sınıfı anahtar sözcüklerinin tam bir listesidir.
Sr.No. | Karakter Sınıfı ve Açıklama |
---|---|
1 | [[:alnum:]] Alfasayısal [az AZ 0-9] |
2 | [[:alpha:]] Alfabetik [az AZ] |
3 | [[:blank:]] Boş karakterler (boşluklar veya sekmeler) |
4 | [[:cntrl:]] Kontrol karakterleri |
5 | [[:digit:]] Sayılar [0-9] |
6 | [[:graph:]] Görünür tüm karakterler (boşluklar hariç) |
7 | [[:lower:]] Küçük harfler [az] |
8 | [[:print:]] Yazdırılabilir karakterler (kontrol dışı karakterler) |
9 | [[:punct:]] Noktalama karakterleri |
10 | [[:space:]] Beyaz boşluk |
11 | [[:upper:]] Büyük harfler [AZ] |
12 | [[:xdigit:]] Onaltılık rakamlar [0-9 af AF] |
Aampersand Referanslama
sed metacharacter &eşleşen modelin içeriğini temsil eder. Örneğin, adında bir dosyanız olduğunu varsayalımphone.txt aşağıdaki gibi telefon numaralarıyla dolu -
5555551212
5555551213
5555551214
6665551215
6665551216
7775551217
Yapmak istiyorsun area code(ilk üç hane) daha kolay okunması için parantez içine alınır. Bunu yapmak için, "ve" yerine koyma karakterini kullanabilirsiniz -
$ sed -e 's/^[[:digit:]][[:digit:]][[:digit:]]/(&)/g' phone.txt
(555)5551212
(555)5551213
(555)5551214
(666)5551215
(666)5551216
(777)5551217
Burada desen bölümünde ilk 3 rakamı eşleştiriyorsunuz ve sonra & bu 3 haneyi çevreleyen ile değiştiriyorsunuz parentheses.
Çoklu sed Komutlarını Kullanma
Tek bir sed komutunda birden çok sed komutunu aşağıdaki gibi kullanabilirsiniz -
$ sed -e 'command1' -e 'command2' ... -e 'commandN' files
Buraya command1 vasıtasıyla commandNdaha önce tartışılan türden sed komutlarıdır. Bu komutlar, dosyalar tarafından verilen dosyalar listesindeki satırların her birine uygulanır.
Aynı mekanizmayı kullanarak yukarıdaki telefon numarası örneğini aşağıdaki gibi yazabiliriz -
$ sed -e 's/^[[:digit:]]\{3\}/(&)/g' \
-e 's/)[[:digit:]]\{3\}/&-/g' phone.txt
(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(666)555-1216
(777)555-1217
Note - Yukarıdaki örnekte, karakter sınıfı anahtar kelimesini tekrarlamak yerine [[:digit:]] üç kez değiştirdik \{3\}, bu önceki normal ifadenin üç kez eşleştiği anlamına gelir. Ayrıca kullandık\ satır sonu vermek ve komut çalıştırılmadan önce bunun kaldırılması gerekir.
Geri Referanslar
ampersand metacharacterkullanışlıdır, ancak daha da kullanışlı olanı, normal ifadelerde belirli bölgeleri tanımlama yeteneğidir. Bu özel bölgeler, değiştirme dizelerinizde referans olarak kullanılabilir. Normal bir ifadenin belirli bölümlerini tanımlayarak, daha sonra bu bölümlere özel bir referans karakteriyle geri dönebilirsiniz.
Yapmak back references, önce bir bölge tanımlamanız ve ardından o bölgeye geri dönmeniz gerekir. Bir bölge tanımlamak içinbackslashed parenthesesilgilenilen her bölgenin çevresinde. Ters eğik çizgilerle çevrelediğiniz ilk bölge daha sonra\1, ikinci bölge \2, ve bunun gibi.
Varsayım phone.txt aşağıdaki metne sahiptir -
(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(666)555-1216
(777)555-1217
Aşağıdaki komutu deneyin -
$ cat phone.txt | sed 's/\(.*)\)\(.*-\)\(.*$\)/Area \
code: \1 Second: \2 Third: \3/'
Area code: (555) Second: 555- Third: 1212
Area code: (555) Second: 555- Third: 1213
Area code: (555) Second: 555- Third: 1214
Area code: (666) Second: 555- Third: 1215
Area code: (666) Second: 555- Third: 1216
Area code: (777) Second: 555- Third: 1217
Note - Yukarıdaki örnekte, parantez içindeki her bir normal ifadeye geri dönerek referans verilecektir. \1, \2ve bunun gibi. Kullandık\burada satır sonu vermek için. Komutu çalıştırmadan önce bu kaldırılmalıdır.
Bir dosya sistemi, bir bölüm veya diskteki mantıksal bir dosya koleksiyonudur. Bölüm, bilgi için bir kaptır ve istenirse tüm sabit sürücüyü kapsayabilir.
Sabit sürücünüz, genellikle yalnızca bir dosya sistemi içeren çeşitli bölümlere sahip olabilir; örneğin, /file system veya içeren başka /home file system.
Bölüm başına bir dosya sistemi, farklı dosya sistemlerinin mantıksal bakımına ve yönetimine izin verir.
Unix'teki her şey, DVD-ROM'lar, USB aygıtları ve disket sürücüleri gibi fiziksel aygıtlar dahil olmak üzere bir dosya olarak kabul edilir.
Dizin Yapısı
Unix, dosya sisteminin tabanında kök (/) ve oradan yayılan diğer tüm dizinler ile ters çevrilmiş bir ağaç gibi hiyerarşik bir dosya sistemi yapısı kullanır.
Bir Unix dosya sistemi, aşağıdaki özelliklere sahip bir dosya ve dizin koleksiyonudur:
Bir kök dizini vardır (/) diğer dosyaları ve dizinleri içeren.
Her dosya veya dizin; adı, bulunduğu dizin ve tipik olarak bir ad olarak adlandırılan benzersiz bir tanımlayıcı ile benzersiz bir şekilde tanımlanır. inode.
Geleneksel olarak, kök dizinin bir inode sayısı 2 ve lost+found dizinde bir inode sayısı 3. Inode numaraları0 ve 1kullanılmaz. Dosya inode numaraları,-i option -e ls command.
Bağımsızdır. Bir dosya sistemi ile diğeri arasında bağımlılık yoktur.
Dizinlerin belirli amaçları vardır ve genellikle dosyaları kolayca bulmak için aynı tür bilgileri tutarlar. Unix'in ana sürümlerinde bulunan dizinler aşağıdadır:
Sr.No. | Dizin ve Açıklama |
---|---|
1 | / Bu, yalnızca dosya yapısının en üst düzeyinde ihtiyaç duyulan dizinleri içermesi gereken kök dizindir. |
2 | /bin Çalıştırılabilir dosyaların bulunduğu yer burasıdır. Bu dosyalar tüm kullanıcılar tarafından kullanılabilir |
3 | /dev Bunlar aygıt sürücüleri |
4 | /etc Denetleyici dizin komutları, yapılandırma dosyaları, disk yapılandırma dosyaları, geçerli kullanıcı listeleri, gruplar, ethernet, ana bilgisayarlar, kritik mesajların nereye gönderileceği |
5 | /lib Paylaşılan kitaplık dosyalarını ve bazen diğer çekirdekle ilgili dosyaları içerir |
6 | /boot Sistemi başlatmak için dosyalar içerir |
7 | /home Kullanıcılar ve diğer hesaplar için ana dizini içerir |
8 | /mnt Gibi diğer geçici dosya sistemlerini bağlamak için kullanılır. cdrom ve floppy için CD-ROM sür ve floppy diskette drive, sırasıyla |
9 | /proc Dosya olarak işaretlenmiş tüm işlemleri içerir. process number veya sisteme dinamik olan diğer bilgiler |
10 | /tmp Sistem önyüklemeleri arasında kullanılan geçici dosyaları tutar |
11 | /usr Çeşitli amaçlar için kullanılır ve birçok kullanıcı tarafından kullanılabilir. Yönetim komutlarını, paylaşılan dosyaları, kitaplık dosyalarını ve diğerlerini içerir |
12 | /var Genellikle günlük ve yazdırma dosyaları ve değişken miktarda veri içerebilecek diğer dosya türleri gibi değişken uzunluklu dosyalar içerir |
13 | /sbin Genellikle sistem yönetimi için ikili (yürütülebilir) dosyalar içerir. Örneğin,fdisk ve ifconfig yardımcı programlar |
14 | /kernel Çekirdek dosyalarını içerir |
Dosya Sisteminde Gezinme
Artık dosya sisteminin temellerini anladığınıza göre, ihtiyacınız olan dosyalara gitmeye başlayabilirsiniz. Sistemde gezinmek için aşağıdaki komutlar kullanılır -
Sr.No. | Komut ve Açıklama |
---|---|
1 | cat filename Bir dosya adı görüntüler |
2 | cd dirname Sizi tanımlanmış dizine taşır |
3 | cp file1 file2 Bir dosyayı / dizini belirtilen konuma kopyalar |
4 | file filename Dosya türünü (ikili, metin vb.) Tanımlar |
5 | find filename dir Bir dosya / dizin bulur |
6 | head filename Bir dosyanın başlangıcını gösterir |
7 | less filename Sonundan veya başından bir dosyaya göz atar |
8 | ls dirname Belirtilen dizinin içeriğini gösterir |
9 | mkdir dirname Belirtilen dizini oluşturur |
10 | more filename Baştan sona bir dosyaya göz atar |
11 | mv file1 file2 Bir dosyanın / dizinin konumunu taşır veya yeniden adlandırır |
12 | pwd Kullanıcının bulunduğu mevcut dizini gösterir |
13 | rm filename Bir dosyayı kaldırır |
14 | rmdir dirname Bir dizini kaldırır |
15 | tail filename Bir dosyanın sonunu gösterir |
16 | touch filename Boş bir dosya oluşturur veya mevcut bir dosyayı veya özniteliklerini değiştirir |
17 | whereis filename Bir dosyanın konumunu gösterir |
18 | which filename YOLUNUZDA ise bir dosyanın konumunu gösterir |
Burada bahsedilen her komutun sözdiziminin tamamını kontrol etmek için Manpage Yardım'ı kullanabilirsiniz .
Df Komutu
Bölüm alanınızı yönetmenin ilk yolu, df (disk free)komut. Komutadf -k (disk free) görüntüler disk space usage in kilobytesaşağıda gösterildiği gibi -
$df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/vzfs 10485760 7836644 2649116 75% / /devices 0 0 0 0% /devices $
Bazı dizinler, örneğin /devices, kbayt, kullanılan ve uygun sütunlarda 0'ı ve kapasite için% 0'ı gösterir. Bunlar özel (veya sanal) dosya sistemleridir ve diskte / altında bulunsalar da kendi başlarına disk alanı tüketmezler.
df -kçıktı genellikle tüm Unix sistemlerinde aynıdır. İşte genellikle içerdiği şeyler -
Sr.No. | Kolon AÇIKLAMASI |
---|---|
1 | Filesystem Fiziksel dosya sistemi adı |
2 | kbytes Depolama ortamında toplam kilobayt kullanılabilir alan |
3 | used Kullanılan toplam alan kilobayt (dosyalara göre) |
4 | avail Kullanılabilen toplam kilobayt |
5 | capacity Dosyalar tarafından kullanılan toplam alan yüzdesi |
6 | Mounted on Dosya sistemi neye bağlı |
Kullanabilirsiniz -h (human readable) option çıktıyı boyutu daha kolay anlaşılır bir gösterimle gösteren bir biçimde görüntülemek için.
Du Command
du (disk usage) command belirli bir dizindeki disk alanı kullanımını gösterecek dizinleri belirlemenizi sağlar.
Bu komut, belirli bir dizinin ne kadar yer kapladığını belirlemek istiyorsanız yararlıdır. Aşağıdaki komut, her dizin tarafından tüketilen blok sayısını gösterir. Tek bir blok, sisteminize bağlı olarak 512 Bayt veya 1 Kilo Bayt alabilir.
$du /etc 10 /etc/cron.d 126 /etc/default 6 /etc/dfs ... $
-h seçeneği çıktının anlaşılmasını kolaylaştırır -
$du -h /etc 5k /etc/cron.d 63k /etc/default 3k /etc/dfs ... $
Dosya Sistemini Bağlama
Sistem tarafından kullanılabilmesi için bir dosya sistemi monte edilmelidir. Sisteminizde şu anda neyin takılı olduğunu (kullanıma hazır) görmek için aşağıdaki komutu kullanın -
$ mount /dev/vzfs on / type reiserfs (rw,usrquota,grpquota) proc on /proc type proc (rw,nodiratime) devpts on /dev/pts type devpts (rw) $
/mntdizin, Unix kuralına göre, geçici bağlantıların (CDROM sürücüleri, uzak ağ sürücüleri ve disket sürücüleri gibi) bulunduğu yerdir. Bir dosya sistemi bağlamanız gerekiyorsa, aşağıdaki sözdizimi ile mount komutunu kullanabilirsiniz -
mount -t file_system_type device_to_mount directory_to_mount_to
Örneğin, bir CD-ROM dizine /mnt/cdrom, you can type −
$ mount -t iso9660 /dev/cdrom /mnt/cdrom
This assumes that your CD-ROM device is called /dev/cdrom and that you want to mount it to /mnt/cdrom. Refer to the mount man page for more specific information or type mount -h at the command line for help information.
After mounting, you can use the cd command to navigate the newly available file system through the mount point you just made.
Unmounting the File System
To unmount (remove) the file system from your system, use the umount command by identifying the mount point or device.
For example, to unmount cdrom, use the following command −
$ umount /dev/cdrom
The mount command enables you to access your file systems, but on most modern Unix systems, the automount function makes this process invisible to the user and requires no intervention.
User and Group Quotas
The user and group quotas provide the mechanisms by which the amount of space used by a single user or all users within a specific group can be limited to a value defined by the administrator.
Quotas operate around two limits that allow the user to take some action if the amount of space or number of disk blocks start to exceed the administrator defined limits −
Soft Limit − If the user exceeds the limit defined, there is a grace period that allows the user to free up some space.
Hard Limit − When the hard limit is reached, regardless of the grace period, no further files or blocks can be allocated.
There are a number of commands to administer quotas −
Sr.No. | Command & Description |
---|---|
1 | quota Displays disk usage and limits for a user of group |
2 | edquota This is a quota editor. Users or Groups quota can be edited using this command |
3 | quotacheck Scans a filesystem for disk usage, creates, checks and repairs quota files |
4 | setquota This is a command line quota editor |
5 | quotaon This announces to the system that disk quotas should be enabled on one or more filesystems |
6 | quotaoff This announces to the system that disk quotas should be disabled for one or more filesystems |
7 | repquota This prints a summary of the disc usage and quotas for the specified file systems |
You can use Manpage Help to check complete syntax for each command mentioned here.
In this chapter, we will discuss in detail about user administration in Unix.
There are three types of accounts on a Unix system −
Root account
This is also called superuser and would have complete and unfettered control of the system. A superuser can run any commands without any restriction. This user should be assumed as a system administrator.
System accounts
System accounts are those needed for the operation of system-specific components for example mail accounts and the sshd accounts. These accounts are usually needed for some specific function on your system, and any modifications to them could adversely affect the system.
User accounts
User accounts provide interactive access to the system for users and groups of users. General users are typically assigned to these accounts and usually have limited access to critical system files and directories.
Unix supports a concept of Group Account which logically groups a number of accounts. Every account would be a part of another group account. A Unix group plays important role in handling file permissions and process management.
Managing Users and Groups
There are four main user administration files −
/etc/passwd − Keeps the user account and password information. This file holds the majority of information about accounts on the Unix system.
/etc/shadow − Holds the encrypted password of the corresponding account. Not all the systems support this file.
/etc/group − This file contains the group information for each account.
/etc/gshadow − This file contains secure group account information.
Check all the above files using the cat command.
The following table lists out commands that are available on majority of Unix systems to create and manage accounts and groups −
Sr.No. | Command & Description |
---|---|
1 | useradd Adds accounts to the system |
2 | usermod Modifies account attributes |
3 | userdel Deletes accounts from the system |
4 | groupadd Adds groups to the system |
5 | groupmod Modifies group attributes |
6 | groupdel Removes groups from the system |
You can use Manpage Help to check complete syntax for each command mentioned here.
Create a Group
We will now understand how to create a group. For this, we need to create groups before creating any account otherwise, we can make use of the existing groups in our system. We have all the groups listed in /etc/groups file.
All the default groups are system account specific groups and it is not recommended to use them for ordinary accounts. So, following is the syntax to create a new group account −
groupadd [-g gid [-o]] [-r] [-f] groupname
The following table lists out the parameters −
Sr.No. | Option & Description |
---|---|
1 | -g GID The numerical value of the group's ID |
2 | -o This option permits to add group with non-unique GID |
3 | -r This flag instructs groupadd to add a system account |
4 | -f This option causes to just exit with success status, if the specified group already exists. With -g, if the specified GID already exists, other (unique) GID is chosen |
5 | groupname Actual group name to be created |
If you do not specify any parameter, then the system makes use of the default values.
Following example creates a developers group with default values, which is very much acceptable for most of the administrators.
$ groupadd developers
Modify a Group
To modify a group, use the groupmod syntax −
$ groupmod -n new_modified_group_name old_group_name
To change the developers_2 group name to developer, type −
$ groupmod -n developer developer_2
Here is how you will change the financial GID to 545 −
$ groupmod -g 545 developer
Delete a Group
We will now understand how to delete a group. To delete an existing group, all you need is the groupdel command and the group name. To delete the financial group, the command is −
$ groupdel developer
This removes only the group, not the files associated with that group. The files are still accessible by their owners.
Create an Account
Let us see how to create a new account on your Unix system. Following is the syntax to create a user's account −
useradd -d homedir -g groupname -m -s shell -u userid accountname
The following table lists out the parameters −
Sr.No. | Option & Description |
---|---|
1 | -d homedir Specifies home directory for the account |
2 | -g groupname Specifies a group account for this account |
3 | -m Creates the home directory if it doesn't exist |
4 | -s shell Specifies the default shell for this account |
5 | -u userid You can specify a user id for this account |
6 | accountname Actual account name to be created |
If you do not specify any parameter, then the system makes use of the default values. The useradd command modifies the /etc/passwd, /etc/shadow, and /etc/group files and creates a home directory.
Following is the example that creates an account mcmohd, setting its home directory to /home/mcmohd and the group as developers. This user would have Korn Shell assigned to it.
$ useradd -d /home/mcmohd -g developers -s /bin/ksh mcmohd
Before issuing the above command, make sure you already have the developers group created using the groupadd command.
Once an account is created you can set its password using the passwd command as follows −
$ passwd mcmohd20
Changing password for user mcmohd20.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Yazarken passwd accountname, süper kullanıcı olmanız koşuluyla size şifreyi değiştirme seçeneği sunar. Aksi takdirde, aynı komutu kullanarak ancak hesap adınızı belirtmeden yalnızca parolanızı değiştirebilirsiniz.
Bir Hesabı Değiştirin
usermodkomutu, komut satırından mevcut bir hesapta değişiklik yapmanızı sağlar. Aynı argümanları kullanıruseradd komutunun yanı sıra hesap adını değiştirmenize izin veren -l bağımsız değişkeni.
Örneğin, hesap adını değiştirmek için mcmohd -e mcmohd20 ve ana dizini buna göre değiştirmek için aşağıdaki komutu vermeniz gerekir -
$ usermod -d /home/mcmohd20 -m -l mcmohd mcmohd20
Bir Hesabı Sil
userdelkomutu mevcut bir kullanıcıyı silmek için kullanılabilir. Dikkatli kullanılmazsa bu çok tehlikeli bir komuttur.
Komut için kullanılabilen yalnızca bir argüman veya seçenek var .r, hesabın ana dizinini ve posta dosyasını kaldırmak için.
Örneğin, mcmohd20 hesabını kaldırmak için aşağıdaki komutu verin -
$ userdel -r mcmohd20
Ana dizini yedekleme amacıyla saklamak istiyorsanız, -rseçeneği. Ana dizini daha sonra gerektiğinde kaldırabilirsiniz.
Bu bölümde, Unix'teki sistem performansı hakkında ayrıntılı olarak tartışacağız.
Unix sistemlerinde performansı izlemek ve yönetmek için kullanılabilen birkaç ücretsiz aracı size tanıtacağız. Bu araçlar ayrıca Unix ortamında performans sorunlarının nasıl teşhis edilip düzeltileceğine dair yönergeler de sağlar.
Unix, izlenmesi ve ayarlanması gereken aşağıdaki ana kaynak türlerine sahiptir:
CPU
Memory
Disk space
Communications lines
I/O Time
Network Time
Applications programs
Performans Bileşenleri
Aşağıdaki tablo, sistem zamanını alan beş ana bileşeni listelemektedir -
Sr.No. | Bileşen Açıklaması |
---|---|
1 | User State CPU CPU'nun kullanıcıların programını kullanıcı durumunda çalıştırmak için harcadığı gerçek süre. Kitaplık çağrılarını yürütmek için harcanan zamanı içerir, ancak çekirdek adına çekirdekte harcanan zamanı içermez |
2 | System State CPU Bu, CPU'nun bu program adına sistem durumunda harcadığı süredir. HerşeyI/O routinesçekirdek hizmetleri gerektirir. Programcı, G / Ç transferlerini engelleyerek bu değeri etkileyebilir |
3 | I/O Time and Network Time Bu, verileri taşımak ve G / Ç isteklerine hizmet vermek için harcanan süredir |
4 | Virtual Memory Performance Bu, bağlam değiştirme ve değiştirmeyi içerir |
5 | Application Program Diğer programları çalıştırmak için harcanan süre - şu anda başka bir uygulama CPU'ya sahip olduğundan sistem bu uygulamaya hizmet vermediğinde |
Performans Araçları
Unix, Unix sistem performansını ölçmek ve ince ayar yapmak için aşağıdaki önemli araçları sağlar:
Sr.No. | Komut ve Açıklama |
---|---|
1 | nice/renice Programlama önceliği değiştirilmiş bir programı çalıştırır |
2 | netstat Ağ bağlantılarını, yönlendirme tablolarını, arayüz istatistiklerini, maskeli bağlantıları ve çok noktaya yayın üyeliklerini yazdırır |
3 | time Basit bir komutu zamanlamaya veya kaynak kullanımı sağlamaya yardımcı olur |
4 | uptime Bu, Sistem Yükü Ortalamasıdır |
5 | ps Mevcut işlemlerin anlık görüntüsünü raporlar |
6 | vmstat Sanal bellek istatistiklerini raporlar |
7 | gprof Çağrı grafiği profil verilerini görüntüler |
8 | prof Süreç Profili Oluşturmayı Kolaylaştırır |
9 | top Sistem görevlerini görüntüler |
Burada bahsedilen her komutun sözdiziminin tamamını kontrol etmek için Manpage Yardım'ı kullanabilirsiniz .
Bu bölümde, Unix'te sistem oturum açma hakkında ayrıntılı olarak tartışacağız.
Unix sistemleri, hayal edebileceğiniz neredeyse her şeyi kaydetmenize ve ardından ihtiyacınız olan bilgileri almak için günlükleri değiştirmenize olanak tanıyan çok esnek ve güçlü bir kayıt sistemine sahiptir.
Unix'in birçok sürümü, adı verilen genel amaçlı bir günlük kaydı olanağı sağlar. syslog. Bilgilerin günlüğe kaydedilmesi gereken bireysel programlar, bilgileri syslog'a gönderir.
Unix syslog , ana bilgisayar tarafından yapılandırılabilen, tek tip bir sistem günlük kaydı olanağıdır. Sistem, programı çalıştıran merkezi bir sistem günlük kaydı sürecini kullanır/etc/syslogd veya /etc/syslog.
Sistem kaydedicinin çalışması oldukça basittir. Programlar, günlük girdilerini yapılandırma dosyasına başvuran syslogd'ye gönderir./etc/syslogd.conf veya /etc/syslog ve bir eşleşme bulunduğunda, günlük mesajını istenen günlük dosyasına yazar.
Anlamanız gereken dört temel syslog terimi vardır -
Sr.No. | Terim ve Açıklama |
---|---|
1 | Facility Günlük mesajını gönderen uygulamayı veya işlemi açıklamak için kullanılan tanımlayıcı. Örneğin, mail, kernel ve ftp. |
2 | Priority Mesajın öneminin bir göstergesi. Seviyeler, hata ayıklama bilgilerinden kritik olaylara kadar syslog içinde kılavuz olarak tanımlanır. |
3 | Selector Bir veya daha fazla tesis ve seviyenin birleşimi. Gelen bir olay bir seçiciyle eşleştiğinde, bir eylem gerçekleştirilir. |
4 | Action Bir seçiciyle eşleşen gelen bir mesaja ne olur - Eylemler mesajı bir günlük dosyasına yazabilir, mesajı bir konsola veya başka bir cihaza yansıtabilir, mesajı oturum açmış bir kullanıcıya yazabilir veya mesajı başka bir syslog sunucusuna gönderebilir. |
Sistem Günlüğü Olanakları
Şimdi syslog olanaklarını anlayacağız. Seçici için mevcut olanaklar şunlardır. Tüm tesisler Unix'in tüm sürümlerinde mevcut değildir.
Tesis | Açıklama |
---|---|
1 | auth İsim ve şifre isteme ile ilgili aktivite (getty, su, giriş) |
2 | authpriv Yetkilendirmeyle aynı, ancak yalnızca seçili kullanıcılar tarafından okunabilen bir dosyada oturum açtı |
3 | console Genellikle sistem konsoluna yönlendirilen mesajları yakalamak için kullanılır |
4 | cron Cron sistem planlayıcısından gelen mesajlar |
5 | daemon Sistem arka plan programı tümünü yakalama |
6 | ftp Ftp arka plan programıyla ilgili mesajlar |
7 | kern Çekirdek mesajları |
8 | local0.local7 Site başına tanımlanan yerel tesisler |
9 | lpr Satır baskı sisteminden gelen mesajlar |
10 | Posta sistemiyle ilgili mesajlar |
11 | mark Günlük dosyalarında zaman damgaları oluşturmak için kullanılan sözde olay |
12 | news Ağ haber protokolü (nntp) ile ilgili mesajlar |
13 | ntp Ağ zaman protokolüyle ilgili mesajlar |
14 | user Düzenli kullanıcı süreçleri |
15 | uucp UUCP alt sistemi |
Sistem Günlüğü Öncelikleri
Sistem günlüğü öncelikleri aşağıdaki tabloda özetlenmiştir -
Sr.No. | Öncelik ve Açıklama |
---|---|
1 | emerg Olası bir sistem çökmesi gibi acil durum, genellikle tüm kullanıcılara yayınlanır |
2 | alert Bozuk bir sistem veritabanı gibi hemen düzeltilmesi gereken durum |
3 | crit Donanım hatası gibi kritik durum |
4 | err Sıradan hata |
5 | Warning Uyarı |
6 | notice Hata olmayan ancak muhtemelen özel bir şekilde ele alınması gereken durum |
7 | info Bilgi mesajı |
8 | debug Programlarda hata ayıklarken kullanılan mesajlar |
9 | none İletilerin günlüğe kaydedilmemesini belirtmek için kullanılan sözde düzey |
Tesislerin ve seviyelerin birleşimi, nelerin günlüğe kaydedildiğini ve bu bilgilerin nereye gittiğini ayırt etmenizi sağlar.
Her program, mesajlarını görev bilinciyle sistem kaydedicisine gönderirken, kaydedici, seçicide tanımlanan seviyelere göre neyin izleneceği ve neyin atılacağı konusunda kararlar verir.
Bir seviye belirlediğinizde, sistem o seviye ve daha yüksek seviyedeki her şeyi takip edecektir.
/Etc/syslog.conf dosyası
/etc/syslog.confmesajların kaydedildiği dosya kontrolleri. Tipiksyslog.conf dosya şöyle görünebilir -
*.err;kern.debug;auth.notice /dev/console
daemon,auth.notice /var/log/messages
lpr.info /var/log/lpr.log
mail.* /var/log/mail.log
ftp.* /var/log/ftp.log
auth.* @prep.ai.mit.edu
auth.* root,amrood
netinfo.err /var/log/netinfo.log
install.* /var/log/install.log
*.emerg *
*.alert |program_name
mark.* /dev/console
Dosyanın her satırı iki bölümden oluşur -
Bir message selectorhangi tür mesajların günlüğe kaydedileceğini belirtir. Örneğin, tüm hata mesajları veya çekirdekten gelen tüm hata ayıklama mesajları.
Bir action fieldbu mesajla ne yapılması gerektiğini söylüyor. Örneğin, bir dosyaya koyun veya mesajı bir kullanıcının terminaline gönderin.
Aşağıda, yukarıdaki yapılandırma için dikkate değer noktalar verilmiştir -
Mesaj seçiciler iki bölümden oluşur: a facility ve a priority. Örneğin, kern.debug , çekirdek (tesis) tarafından üretilen tüm hata ayıklama mesajlarını (öncelik) seçer.
Mesaj seçici kern.debug , hata ayıklamadan daha büyük olan tüm öncelikleri seçer.
Tesis veya önceliğin yerine bir yıldız işareti "tümünü" belirtir. Örneğin,*.debug tüm hata ayıklama mesajları anlamına gelir, kern.* çekirdek tarafından oluşturulan tüm mesajlar anlamına gelir.
Birden fazla tesisi belirtmek için virgül de kullanabilirsiniz. İki veya daha fazla seçici, noktalı virgül kullanılarak birlikte gruplanabilir.
Günlük İşlemleri
Eylem alanı beş eylemden birini belirtir -
Mesajı bir dosyaya veya cihaza kaydedin. Örneğin,/var/log/lpr.log veya /dev/console.
Bir kullanıcıya mesaj gönderin. Birden çok kullanıcı adını virgülle ayırarak belirtebilirsiniz; örneğin, kök, amrood.
Tüm kullanıcılara bir mesaj gönderin. Bu durumda, eylem alanı bir yıldız işaretinden oluşur; Örneğin, *.
Mesajı bir programa aktarın. Bu durumda, program Unix boru sembolünden (|) sonra belirtilir.
Mesajı başka bir ana bilgisayardaki sistem günlüğüne gönderin. Bu durumda işlem alanı, önünde bir at işareti bulunan bir ana bilgisayar adından oluşur; örneğin, @ tutorialspoint.com.
Logger Komutu
Unix, loggerkomut, sistem günlüğü ile başa çıkmak için son derece yararlı bir komuttur. logger command günlük mesajlarını syslogd arka plan programına gönderir ve sonuç olarak sistem günlüğünü tetikler.
Bu, herhangi bir zamanda komut satırından kontrol edebileceğimiz anlamına gelir. syslogddaemon ve yapılandırması. Logger komutu, komut satırından sistem günlük dosyasına tek satırlık girişler eklemek için bir yöntem sağlar.
Komutun biçimi -
logger [-i] [-f file] [-p priority] [-t tag] [message]...
İşte parametrelerin detayı -
Sr.No. | Seçenek ve Açıklama |
---|---|
1 | -f filename Dosya adı içeriğini günlüğe kaydedilecek mesaj olarak kullanır. |
2 | -i Kaydedici işleminin işlem kimliğini her satırla birlikte günlüğe kaydeder. |
3 | -p priority Mesajı belirtilen öncelikle girer (belirtilen seçici girişi); mesaj önceliği sayısal olarak veya bir tesis öncelik çifti olarak belirtilebilir. Varsayılan öncelik user.notice'dir. |
4 | -t tag Günlüğe eklenen her satırı belirtilen etiketle işaretler. |
5 | message İçerikleri, boşlukla ayrılmış, belirtilen sırayla birbirine birleştirilen dize bağımsız değişkenleri. |
Bu komutun sözdiziminin tamamını kontrol etmek için Manpage Yardım'ı kullanabilirsiniz .
Günlük Döndürme
Günlük dosyaları, çok hızlı büyüme ve büyük miktarda disk alanı kullanma eğilimindedir. Günlük rotasyonlarını etkinleştirmek için çoğu dağıtım aşağıdaki gibi araçlar kullanır:newsyslog veya logrotate.
Bu araçlar, cihaz kullanılarak sık bir zaman aralığında çağrılmalıdır. cron daemon. Daha fazla ayrıntı için haber günlüğü veya logrotate için man sayfalarına bakın.
Önemli Günlük Konumları
Tüm sistem uygulamaları kendi günlük dosyalarını oluşturur /var/logve alt dizinleri. İşte birkaç önemli uygulama ve bunlara karşılık gelen günlük dizinleri -
Uygulama | Rehber |
---|---|
httpd | / var / log / httpd |
samba | / var / log / samba |
cron | / var / log / |
posta | / var / log / |
mysql | / var / log / |
Bu bölümde, Unix'teki Sinyaller ve Tuzaklar hakkında ayrıntılı olarak tartışacağız.
Sinyaller, önemli bir olayın meydana geldiğini belirtmek için bir programa gönderilen yazılım kesintileridir. Olaylar, kullanıcı isteklerinden yasadışı bellek erişim hatalarına kadar değişebilir. Kesme sinyali gibi bazı sinyaller, bir kullanıcının programdan normal kontrol akışında olmayan bir şey yapmasını istediğini gösterir.
Aşağıdaki tablo karşılaşabileceğiniz ve programlarınızda kullanmak isteyebileceğiniz genel sinyalleri listelemektedir -
Sinyal Adı | Sinyal Numarası | Açıklama |
---|---|---|
GÖRÜŞ | 1 | Kontrol terminalinde takılma veya kontrol sürecinin ölümü tespit edildi |
SIGINT | 2 | Kullanıcı bir kesme sinyali gönderirse verilir (Ctrl + C) |
SIGQUIT | 3 | Kullanıcı bir çıkış sinyali gönderirse verilir (Ctrl + D) |
SIGFPE | 8 | Yasadışı bir matematiksel işlem yapılmaya çalışılırsa verilir |
SIGKILL | 9 | Bir işlem bu sinyali alırsa hemen çıkmalıdır ve herhangi bir temizleme işlemi gerçekleştirmez. |
SİGALRM | 14 | Çalar saat sinyali (zamanlayıcılar için kullanılır) |
SİGTERM | 15 | Yazılım sonlandırma sinyali (varsayılan olarak öldürme ile gönderilir) |
Sinyal Listesi
Sisteminiz tarafından desteklenen tüm sinyalleri listelemenin kolay bir yolu vardır. Sadece yayınlayınkill -l komut ve desteklenen tüm sinyalleri görüntüler -
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
Gerçek sinyal listesi Solaris, HP-UX ve Linux arasında değişiklik gösterir.
Varsayılan Eylemler
Her sinyalin kendisiyle ilişkili varsayılan bir eylemi vardır. Bir sinyal için varsayılan eylem, bir komut dosyası veya programın bir sinyal aldığında gerçekleştirdiği eylemdir.
Olası varsayılan eylemlerden bazıları -
Süreci sonlandırın.
Sinyali görmezden gelin.
Çekirdeği boşaltın. Bu, adında bir dosya oluştururcore sinyali aldığında sürecin hafıza görüntüsünü içerir.
Süreci durdurun.
Durdurulmuş bir işleme devam edin.
Sinyal Gönderme
Bir programa veya komut dosyasına sinyal göndermenin birkaç yöntemi vardır. En yaygın olanlardan biri, bir kullanıcının yazmasıdırCONTROL-C ya da INTERRUPT key bir komut dosyası yürütülürken.
Düğmesine bastığınızda Ctrl+C anahtar, bir SIGINT betiğe gönderilir ve tanımlanan varsayılan eylem betiğine göre sona erer.
Sinyal iletmenin diğer yaygın yöntemi, kill commandsözdizimi aşağıdaki gibidir -
$ kill -signal pid
Buraya signal teslim edilecek sinyalin numarası veya adıdır ve pidsinyalin gönderilmesi gereken işlem kimliğidir. Örneğin -
$ kill -1 1001
Yukarıdaki komut, HUP veya kapatma sinyalini birlikte çalışan programa gönderir. process ID 1001. Aynı işleme bir kill sinyali göndermek için aşağıdaki komutu kullanın -
$ kill -9 1001
Bu, çalışan süreci öldürür process ID 1001.
Sinyalleri Yakalama
Bir kabuk programının yürütülmesi sırasında terminalinizde Ctrl + C veya Break tuşuna bastığınızda, normalde bu program hemen sonlandırılır ve komut isteminiz geri döner. Bu her zaman arzu edilen bir durum olmayabilir. Örneğin, temizlenmeyecek bir sürü geçici dosya bırakabilirsiniz.
Bu sinyalleri yakalamak oldukça kolaydır ve trap komutu aşağıdaki sözdizimine sahiptir -
$ trap commands signals
Burada komut , herhangi bir geçerli Unix komutu veya hatta kullanıcı tanımlı bir işlev olabilir ve sinyal, yakalamak istediğiniz herhangi bir sayıda sinyalin bir listesi olabilir.
Kabuk betiklerinde tuzak için iki yaygın kullanım vardır -
- Geçici dosyaları temizleyin
- Sinyalleri yoksay
Geçici Dosyaları Temizleme
Tuzak komutunun bir örneği olarak, aşağıda, bazı dosyaları nasıl kaldırabileceğiniz ve ardından birisi programı terminalden iptal etmeye çalışırsa çıkabileceğiniz gösterilmektedir -
$ trap "rm -f $WORKDIR/work1$$ $WORKDIR/dataout$$; exit" 2
Kabuk programında bu tuzağın çalıştırıldığı noktadan, iki dosya work1$$ ve dataout$$ program tarafından sinyal numarası 2 alınırsa otomatik olarak kaldırılacaktır.
Bu nedenle, kullanıcı bu tuzak çalıştırıldıktan sonra programın çalışmasını kesintiye uğratırsa, bu iki dosyanın temizleneceğinden emin olabilirsiniz. exit takip eden komut rm gereklidir çünkü bu olmadan, sinyal alındığında yürütme programda kaldığı noktada devam eder.
1 numaralı sinyal hangup. Ya birisi kasıtlı olarak hattı kapatır ya da hat yanlışlıkla kesilir.
Sinyaller listesine sinyal numarası 1 ekleyerek, bu durumda belirtilen iki dosyayı da kaldırmak için önceki tuzağı değiştirebilirsiniz -
$ trap "rm $WORKDIR/work1$$ $WORKDIR/dataout$$; exit" 1 2
Artık satır kapanırsa veya Ctrl + C tuşuna basılırsa bu dosyalar kaldırılacaktır .
Tuzak için belirtilen komutlar, birden fazla komut içeriyorlarsa, tırnak içine alınmalıdır. Ayrıca, kabuğun, tuzak komutu çalıştırıldığında ve ayrıca listelenen sinyallerden biri alındığında komut satırını taradığına dikkat edin.
Bu nedenle, önceki örnekte, değeri WORKDIR ve $$tuzak komutu yürütüldüğünde değiştirilecektir. Bu değişikliğin sinyal 1 veya 2 alındığında gerçekleşmesini istiyorsanız, komutları tek tırnak içine koyabilirsiniz -
$ trap 'rm $WORKDIR/work1$$ $WORKDIR/dataout$$; exit' 1 2
Sinyalleri Yoksaymak
Tuzak için listelenen komut boş ise, belirtilen sinyal alındığında göz ardı edilecektir. Örneğin, - komutu -
$ trap '' 2
Bu, kesme sinyalinin yok sayılacağını belirtir. Kesilmesini istemediğiniz bir işlemi gerçekleştirirken belirli sinyalleri göz ardı etmek isteyebilirsiniz. Göz ardı edilecek birden fazla sinyali aşağıdaki gibi belirtebilirsiniz -
$ trap '' 1 2 3 15
Bir sinyalin göz ardı edilmesi için ilk argümanın belirtilmesi gerektiğini ve kendi başına ayrı bir anlamı olan aşağıdakini yazmakla eşdeğer olmadığını unutmayın -
$ trap 2
Bir sinyali görmezden gelirseniz, tüm alt kabuklar da bu sinyali yok sayar. Bununla birlikte, bir sinyal alındığında gerçekleştirilecek bir eylem belirtirseniz, tüm alt kabuklar o sinyal alındığında yine de varsayılan eylemi gerçekleştirecektir.
Tuzakları Sıfırlama
Bir sinyal alındığında yapılacak varsayılan eylemi değiştirdikten sonra, ilk bağımsız değişkeni atlarsanız, tuzakla tekrar değiştirebilirsiniz; yani -
$ trap 1 2
Bu, 1 veya 2 sinyallerinin alınması üzerine yapılacak eylemi varsayılana geri döndürür.