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

mail

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.