Unix / Linux - Panduan Cepat

Apa itu Unix?

Sistem operasi Unix adalah sekumpulan program yang bertindak sebagai penghubung antara komputer dan pengguna.

Program komputer yang mengalokasikan sumber daya sistem dan mengoordinasikan semua detail internal komputer disebut operating system atau kernel.

Pengguna berkomunikasi dengan kernel melalui program yang dikenal sebagai shell. Shell adalah penerjemah baris perintah; itu menerjemahkan perintah yang dimasukkan oleh pengguna dan mengubahnya menjadi bahasa yang dimengerti oleh kernel.

  • Unix awalnya dikembangkan pada tahun 1969 oleh sekelompok karyawan AT&T Ken Thompson, Dennis Ritchie, Douglas McIlroy, dan Joe Ossanna di Bell Labs.

  • Ada berbagai varian Unix yang tersedia di pasaran. Solaris Unix, AIX, HP Unix dan BSD adalah beberapa contohnya. Linux juga merupakan varian Unix yang tersedia secara gratis.

  • Beberapa orang dapat menggunakan komputer Unix pada saat bersamaan; karenanya Unix disebut sistem multiuser.

  • Seorang pengguna juga dapat menjalankan beberapa program secara bersamaan; karenanya Unix adalah lingkungan multitasking.

Arsitektur Unix

Berikut adalah diagram blok dasar dari sistem Unix -

Konsep utama yang menyatukan semua versi Unix adalah empat dasar berikut -

  • Kernel- Kernel adalah jantung dari sistem operasi. Ini berinteraksi dengan perangkat keras dan sebagian besar tugas seperti manajemen memori, penjadwalan tugas dan manajemen file.

  • Shell- Shell adalah utilitas yang memproses permintaan Anda. Ketika Anda mengetikkan perintah di terminal Anda, shell menafsirkan perintah dan memanggil program yang Anda inginkan. Shell menggunakan sintaks standar untuk semua perintah. C Shell, Bourne Shell dan Korn Shell adalah cangkang paling terkenal yang tersedia dengan sebagian besar varian Unix.

  • Commands and Utilities - Ada berbagai perintah dan utilitas yang dapat Anda gunakan dalam aktivitas sehari-hari. cp, mv, cat dan grep, dll. adalah beberapa contoh perintah dan utilitas. Ada lebih dari 250 perintah standar ditambah banyak lainnya disediakan melalui 3 rd perangkat lunak pihak. Semua perintah datang dengan berbagai opsi.

  • Files and Directories- Semua data Unix diatur ke dalam file. Semua file kemudian diatur ke dalam direktori. Direktori ini selanjutnya diatur ke dalam struktur seperti pohon yang disebutfilesystem.

Boot Sistem

Jika Anda memiliki komputer yang memiliki sistem operasi Unix terpasang di dalamnya, maka Anda hanya perlu menyalakan sistem untuk membuatnya hidup.

Segera setelah Anda menghidupkan sistem, sistem mulai boot dan akhirnya meminta Anda untuk masuk ke sistem, yang merupakan aktivitas untuk masuk ke sistem dan menggunakannya untuk aktivitas sehari-hari Anda.

Masuk Unix

Saat Anda pertama kali terhubung ke sistem Unix, Anda biasanya melihat prompt seperti berikut -

login:

Untuk masuk

  • Siapkan ID pengguna (identifikasi pengguna) dan kata sandi Anda. Hubungi administrator sistem Anda jika Anda belum memilikinya.

  • Ketik userid Anda pada prompt login, lalu tekan ENTER. ID pengguna Anda adalahcase-sensitive, jadi pastikan Anda mengetiknya persis seperti yang diperintahkan administrator sistem Anda.

  • Ketik kata sandi Anda pada prompt kata sandi, lalu tekan ENTER. Kata sandi Anda juga peka huruf besar / kecil.

  • Jika Anda memberikan userid dan password yang benar, maka Anda akan diizinkan untuk masuk ke dalam sistem. Bacalah informasi dan pesan yang muncul di layar, yaitu sebagai berikut.

login : amrood
amrood's password:
Last login: Sun Jun 14 09:32:32 2009 from 62.61.164.73
$

Anda akan diberikan prompt perintah (kadang-kadang disebut $prompt) tempat Anda mengetik semua perintah Anda. Misalnya, untuk memeriksa kalender, Anda perlu mengetikcal perintah sebagai berikut -

$ 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 $

Ganti kata sandi

Semua sistem Unix memerlukan kata sandi untuk membantu memastikan bahwa file dan data Anda tetap milik Anda dan bahwa sistem itu sendiri aman dari peretas dan peretas. Berikut adalah langkah-langkah untuk mengubah kata sandi Anda -

Step 1 - Untuk memulai, ketikkan kata sandi pada prompt perintah seperti yang ditunjukkan di bawah ini.

Step 2 - Masukkan kata sandi lama Anda, yang saat ini Anda gunakan.

Step 3- Ketikkan kata sandi baru Anda. Jagalah selalu kata sandi Anda cukup rumit sehingga tidak ada yang dapat menebaknya. Tapi pastikan, Anda mengingatnya.

Step 4 - Anda harus memverifikasi kata sandi dengan mengetiknya lagi.

$ passwd Changing password for amrood (current) Unix password:****** New UNIX password:******* Retype new UNIX password:******* passwd: all authentication tokens updated successfully $

Note- Kami telah menambahkan tanda bintang (*) di sini hanya untuk menunjukkan lokasi di mana Anda perlu memasukkan kata sandi saat ini dan yang baru di sistem Anda. Itu tidak menunjukkan karakter apa pun saat Anda mengetik.

Daftar Direktori dan File

Semua data di Unix diatur ke dalam file. Semua file diatur ke dalam direktori. Direktori ini diatur ke dalam struktur mirip pohon yang disebut sistem file.

Anda bisa menggunakan lsperintah untuk mencantumkan semua file atau direktori yang tersedia dalam direktori. Berikut adalah contoh penggunaanls perintah dengan -l pilihan.

$ 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 $

Di sini entri dimulai dengan d.....mewakili direktori. Misalnya, uml, univ dan urlspedia adalah direktori dan entri lainnya adalah file.

Kamu siapa?

Saat Anda masuk ke sistem, Anda mungkin ingin mengetahui: Who am I?

Cara termudah untuk mengetahui "siapa Anda" adalah dengan memasukkan whoami perintah -

$ whoami amrood $

Cobalah di sistem Anda. Perintah ini mencantumkan nama akun yang terkait dengan login saat ini. Anda dapat mencobawho am i perintah juga untuk mendapatkan informasi tentang diri Anda.

Siapa yang Masuk?

Terkadang Anda mungkin tertarik untuk mengetahui siapa yang masuk ke komputer pada saat yang sama.

Ada tiga perintah yang tersedia untuk memberi Anda informasi ini, berdasarkan seberapa banyak Anda ingin tahu tentang pengguna lain: users, who, dan 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)

$

Coba wperintah di sistem Anda untuk memeriksa output. Ini mencantumkan informasi yang terkait dengan pengguna yang masuk ke sistem.

Keluar

Ketika Anda menyelesaikan sesi Anda, Anda harus keluar dari sistem. Ini untuk memastikan bahwa tidak ada orang lain yang mengakses file Anda.

To log out

  • Ketik saja logout perintah pada prompt perintah, dan sistem akan membersihkan semuanya dan memutus koneksi.

Sistem Shutdown

Cara paling konsisten untuk mematikan sistem Unix dengan benar melalui baris perintah adalah dengan menggunakan salah satu dari perintah berikut -

Sr.No. Perintah & Deskripsi
1

halt

Segera mematikan sistem

2

init 0

Matikan sistem menggunakan skrip yang telah ditentukan untuk menyinkronkan dan membersihkan sistem sebelum mematikan

3

init 6

Reboot sistem dengan mematikannya sepenuhnya dan kemudian restart

4

poweroff

Matikan sistem dengan mematikan

5

reboot

Mulai ulang sistem

6

shutdown

Matikan sistem

Anda biasanya perlu menjadi pengguna super atau root (akun paling istimewa di sistem Unix) untuk mematikan sistem. Namun, pada beberapa kotak Unix yang berdiri sendiri atau milik pribadi, pengguna administratif dan terkadang pengguna biasa dapat melakukannya.

Pada bab ini, kita akan membahas secara detail tentang manajemen file di Unix. Semua data di Unix diatur ke dalam file. Semua file diatur ke dalam direktori. Direktori ini diatur ke dalam struktur mirip pohon yang disebut sistem file.

Saat Anda bekerja dengan Unix, dengan satu atau lain cara, Anda menghabiskan sebagian besar waktu Anda bekerja dengan file. Tutorial ini akan membantu Anda memahami cara membuat dan menghapus file, menyalin dan mengganti namanya, membuat tautan ke sana, dll.

Di Unix, ada tiga jenis file dasar -

  • Ordinary Files- File biasa adalah file pada sistem yang berisi data, teks, atau instruksi program. Dalam tutorial ini, Anda melihat bekerja dengan file biasa.

  • Directories- Direktori menyimpan file khusus dan biasa. Untuk pengguna yang akrab dengan Windows atau Mac OS, direktori Unix setara dengan folder.

  • Special Files- Beberapa file khusus menyediakan akses ke perangkat keras seperti hard drive, drive CD-ROM, modem, dan adaptor Ethernet. File khusus lainnya mirip dengan alias atau pintasan dan memungkinkan Anda mengakses satu file menggunakan nama yang berbeda.

Daftar File

Untuk membuat daftar file dan direktori yang disimpan di direktori saat ini, gunakan perintah berikut -

$ls

Berikut adalah contoh keluaran dari perintah di atas -

$ls

bin        hosts  lib     res.03
ch07       hw1    pub     test_results
ch07.bak   hw2    res.01  users
docs       hw3    res.02  work

Perintah ls mendukung -l opsi yang akan membantu Anda mendapatkan informasi lebih lanjut tentang file yang terdaftar -

$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
$

Berikut adalah informasi tentang semua kolom yang terdaftar -

  • First Column- Mewakili jenis file dan izin yang diberikan pada file. Di bawah ini adalah deskripsi dari semua jenis file.

  • Second Column - Mewakili jumlah blok memori yang diambil oleh file atau direktori.

  • Third Column- Mewakili pemilik file. Ini adalah pengguna Unix yang membuat file ini.

  • Fourth Column- Mewakili grup pemilik. Setiap pengguna Unix akan memiliki grup terkait.

  • Fifth Column - Mewakili ukuran file dalam byte.

  • Sixth Column - Merupakan tanggal dan waktu saat file ini dibuat atau dimodifikasi untuk terakhir kali.

  • Seventh Column - Mewakili file atau nama direktori.

Dalam ls -l daftar contoh, setiap baris file dimulai dengan a d, -, atau l. Karakter ini menunjukkan jenis file yang terdaftar.

Sr.No. Awalan & Deskripsi
1

-

File biasa, seperti file teks ASCII, file biner yang dapat dieksekusi, atau tautan keras.

2

b

Blokir file khusus. Blokir file perangkat input / output seperti hard drive fisik.

3

c

File khusus karakter. File perangkat input / output mentah seperti hard drive fisik.

4

d

File direktori yang berisi daftar file dan direktori lain.

5

l

File tautan simbolis. Tautan pada file biasa apa pun.

6

p

Pipa bernama. Sebuah mekanisme komunikasi antarproses.

7

s

Socket yang digunakan untuk komunikasi antarproses.

Metakarakter

Metakarakter memiliki arti khusus di Unix. Sebagai contoh,* dan ?adalah karakter meta. Kita gunakan* untuk mencocokkan 0 atau lebih karakter, tanda tanya (?) cocok dengan satu karakter.

Sebagai Contoh -

$ls ch*.doc

Menampilkan semua file, yang namanya dimulai dengan ch dan diakhiri dengan .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

Sini, *berfungsi sebagai karakter meta yang cocok dengan karakter apa pun. Jika ingin menampilkan semua file yang diakhiri dengan just.doc, lalu Anda dapat menggunakan perintah berikut -

$ls *.doc

File Tersembunyi

File yang tidak terlihat adalah satu, karakter pertamanya adalah titik atau karakter titik (.). Program Unix (termasuk shell) menggunakan sebagian besar file ini untuk menyimpan informasi konfigurasi.

Beberapa contoh umum dari file tersembunyi termasuk file -

  • .profile - Skrip inisialisasi Bourne shell (sh)

  • .kshrc - Skrip inisialisasi Korn shell (ksh)

  • .cshrc - Skrip inisialisasi C shell (csh)

  • .rhosts - File konfigurasi shell jarak jauh

Untuk membuat daftar file yang tidak terlihat, tentukan -a pilihan untuk 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 (.) - Ini mewakili direktori saat ini.

  • Double dot (..) - Ini mewakili direktori induk.

Membuat File

Anda bisa menggunakan vieditor untuk membuat file biasa pada sistem Unix apa pun. Anda hanya perlu memberikan perintah berikut -

$ vi filename

Perintah di atas akan membuka file dengan nama file yang diberikan. Sekarang, tekan tombolnyaiuntuk masuk ke mode edit. Setelah Anda berada dalam mode edit, Anda dapat mulai menulis konten Anda di file seperti pada program berikut -

This is unix file....I created it for the first time.....
I'm going to save this content in this file.

Setelah Anda selesai dengan program ini, ikuti langkah-langkah ini -

  • Tekan tombolnya esc untuk keluar dari mode edit.

  • Tekan dua tombol Shift + ZZ bersama-sama untuk keluar dari file sepenuhnya.

Anda sekarang akan memiliki file yang dibuat dengan filename di direktori saat ini.

$ vi filename $

Mengedit File

Anda dapat mengedit file yang sudah ada menggunakan vieditor. Kami akan membahas secara singkat bagaimana membuka file yang ada -

$ vi filename

Setelah file dibuka, Anda dapat masuk ke mode edit dengan menekan tombol ilalu Anda dapat melanjutkan dengan mengedit file. Jika Anda ingin pindah ke sana-sini di dalam file, maka pertama-tama Anda harus keluar dari mode edit dengan menekan tombolEsc. Setelah ini, Anda dapat menggunakan kunci berikut untuk pindah ke dalam file -

  • l kunci untuk pindah ke sisi kanan.

  • h kunci untuk pindah ke sisi kiri.

  • k kunci untuk pindah ke atas di file.

  • j kunci untuk memindahkan sisi bawah file.

Jadi dengan menggunakan tombol di atas, Anda dapat memposisikan kursor di mana pun Anda ingin mengedit. Setelah Anda diposisikan, maka Anda dapat menggunakanikunci untuk masuk ke mode edit. Setelah Anda selesai mengedit file Anda, tekanEsc dan akhirnya dua kunci Shift + ZZ bersama-sama untuk keluar dari file sepenuhnya.

Tampilkan Isi File

Anda bisa menggunakan catperintah untuk melihat konten file. Berikut adalah contoh sederhana untuk melihat konten file yang dibuat di atas -

$ cat filename
This is unix file....I created it for the first time.....
I'm going to save this content in this file.
$

Anda dapat menampilkan nomor baris dengan menggunakan -b opsi bersama dengan cat perintah sebagai berikut -

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

Menghitung Kata dalam File

Anda bisa menggunakan wcperintah untuk mendapatkan hitungan jumlah baris, kata, dan karakter yang terdapat dalam file. Berikut adalah contoh sederhana untuk melihat informasi tentang file yang dibuat di atas -

$ wc filename
2  19 103 filename
$

Berikut adalah detail dari keempat kolom -

  • First Column - Mewakili jumlah baris dalam file.

  • Second Column - Mewakili jumlah kata dalam file.

  • Third Column- Mewakili jumlah total byte dalam file. Ini adalah ukuran sebenarnya dari file tersebut.

  • Fourth Column - Mewakili nama file.

Anda dapat memberikan banyak file dan mendapatkan informasi tentang file tersebut dalam satu waktu. Berikut ini adalah sintaks sederhana -

$ wc filename1 filename2 filename3

Menyalin File

Untuk membuat salinan file, gunakan cpperintah. Sintaks dasar dari perintah ini adalah -

$ cp source_file destination_file

Berikut adalah contoh untuk membuat salinan dari file yang sudah ada filename.

$ cp filename copyfile
$

Sekarang Anda akan menemukan satu file lagi copyfiledi direktori Anda saat ini. File ini akan sama persis dengan file aslinyafilename.

Mengganti Nama File

Untuk mengubah nama file, gunakan mvperintah. Berikut ini adalah sintaks dasarnya -

$ mv old_file new_file

Program berikut akan mengganti nama file yang sudah ada filename untuk newfile.

$ mv filename newfile $

Itu mvPerintah akan memindahkan file yang ada sepenuhnya ke file baru. Dalam hal ini, Anda hanya akan menemukannewfile di direktori Anda saat ini.

Menghapus File

Untuk menghapus file yang sudah ada, gunakan rmperintah. Berikut ini adalah sintaks dasarnya -

$ rm filename

Caution- File mungkin berisi informasi berguna. Selalu disarankan untuk berhati-hati saat menggunakan iniDeleteperintah. Lebih baik menggunakan-i opsi bersama dengan rm perintah.

Berikut adalah contoh yang menunjukkan bagaimana menghapus file yang ada filename.

$ rm filename
$

Anda dapat menghapus banyak file sekaligus dengan perintah yang diberikan di bawah ini -

$ rm filename1 filename2 filename3
$

Streaming Unix Standar

Dalam keadaan normal, setiap program Unix memiliki tiga aliran (file) yang dibuka saat dijalankan -

  • stdin- Ini disebut sebagai input standar dan deskriptor file terkait adalah 0. Ini juga direpresentasikan sebagai STDIN. Program Unix akan membaca input default dari STDIN.

  • stdout- Ini disebut sebagai keluaran standar dan deskriptor file terkait adalah 1. Ini juga direpresentasikan sebagai STDOUT. Program Unix akan menulis keluaran default di STDOUT

  • stderr- Ini disebut sebagai kesalahan standar dan deskriptor file terkait adalah 2. Ini juga direpresentasikan sebagai STDERR. Program Unix akan menulis semua pesan kesalahan di STDERR.

Pada bab ini, kita akan membahas secara detail tentang manajemen direktori di Unix.

Direktori adalah file pekerjaan solo yang menyimpan nama file dan informasi terkait. Semua file, baik biasa, khusus, atau direktori, terdapat dalam direktori.

Unix menggunakan struktur hierarki untuk mengatur file dan direktori. Struktur ini sering disebut sebagai pohon direktori. Pohon memiliki satu simpul akar, karakter garis miring (/), dan semua direktori lainnya ada di bawahnya.

Direktori Rumah

Direktori tempat Anda berada saat login pertama kali disebut direktori home Anda.

Anda akan melakukan banyak pekerjaan di direktori home dan subdirektori yang akan Anda buat untuk mengatur file Anda.

Anda dapat masuk ke direktori home Anda kapan saja menggunakan perintah berikut -

$cd ~
$

Sini ~menunjukkan direktori home. Misalkan Anda harus masuk ke direktori home pengguna lain, gunakan perintah berikut -

$cd ~username
$

Untuk masuk ke direktori terakhir Anda, Anda dapat menggunakan perintah berikut -

$cd -
$

Nama Jalur Mutlak / Relatif

Direktori disusun dalam hierarki dengan root (/) di bagian atas. Posisi file apa pun dalam hierarki dijelaskan oleh nama jalurnya.

Elemen nama jalur dipisahkan dengan /. Nama jalur adalah absolut, jika dijelaskan dalam kaitannya dengan root, maka nama jalur absolut selalu dimulai dengan /.

Berikut adalah beberapa contoh nama file absolut.

/etc/passwd
/users/sjones/chem/notes
/dev/rdsk/Os3

Sebuah nama jalur juga bisa berhubungan dengan direktori kerja Anda saat ini. Nama jalur relatif tidak pernah dimulai dengan /. Sehubungan dengan direktori home user amrood, beberapa nama path mungkin terlihat seperti ini -

chem/notes
personal/res

Untuk menentukan di mana Anda berada dalam hierarki sistem file kapan saja, masukkan perintah pwd untuk mencetak direktori kerja saat ini -

$pwd
/user0/home/amrood

$

Direktori Pencatatan

Untuk membuat daftar file dalam direktori, Anda dapat menggunakan sintaks berikut -

$ls dirname

Berikut adalah contoh untuk membuat daftar semua file yang ada di dalamnya /usr/local direktori -

$ls /usr/local

X11       bin          gimp       jikes       sbin
ace       doc          include    lib         share
atalk     etc          info       man         ami

Membuat Direktori

Kami sekarang akan memahami cara membuat direktori. Direktori dibuat dengan perintah berikut -

$mkdir dirname

Di sini, direktori adalah nama jalur absolut atau relatif dari direktori yang ingin Anda buat. Misalnya, perintah -

$mkdir mydir $

Membuat direktori mydirdi direktori saat ini. Ini contoh lain -

$mkdir /tmp/test-dir $

Perintah ini membuat direktori test-dir dalam /tmpdirektori. Itumkdir perintah tidak menghasilkan keluaran jika berhasil membuat direktori yang diminta.

Jika Anda memberikan lebih dari satu direktori pada baris perintah, mkdirmembuat setiap direktori. Misalnya, -

$mkdir docs pub $

Membuat direktori docs dan pub di bawah direktori saat ini.

Membuat Direktori Induk

Kami sekarang akan memahami cara membuat direktori induk. Terkadang saat Anda ingin membuat direktori, direktori induk atau direktorinya mungkin tidak ada. Pada kasus ini,mkdir mengeluarkan pesan kesalahan sebagai berikut -

$mkdir /tmp/amrood/test mkdir: Failed to make directory "/tmp/amrood/test"; No such file or directory $

Dalam kasus seperti itu, Anda dapat menentukan -p opsi ke mkdirperintah. Ini menciptakan semua direktori yang diperlukan untuk Anda. Misalnya -

$mkdir -p /tmp/amrood/test $

Perintah di atas membuat semua direktori induk yang diperlukan.

Menghapus Direktori

Direktori dapat dihapus menggunakan rmdir perintah sebagai berikut -

$rmdir dirname $

Note - Untuk menghapus direktori, pastikan kosong yang berarti tidak boleh ada file atau sub-direktori di dalam direktori ini.

Anda dapat menghapus beberapa direktori sekaligus sebagai berikut -

$rmdir dirname1 dirname2 dirname3 $

Perintah di atas menghapus direktori dirname1, dirname2, dan dirname3, jika kosong. Iturmdir perintah tidak menghasilkan keluaran jika berhasil.

Mengubah Direktori

Anda bisa menggunakan cdperintah untuk melakukan lebih dari sekedar mengubah ke direktori home. Anda dapat menggunakannya untuk mengubah ke direktori mana pun dengan menentukan jalur absolut atau relatif yang valid. Sintaksnya seperti yang diberikan di bawah ini -

$cd dirname $

Sini, dirnameadalah nama direktori yang ingin Anda ubah. Misalnya, perintah -

$cd /usr/local/bin $

Perubahan direktori /usr/local/bin. Dari direktori ini, Anda bisacd ke direktori /usr/home/amrood menggunakan jalur relatif berikut -

$cd ../../home/amrood $

Mengganti Nama Direktori

Itu mv (move)perintah juga dapat digunakan untuk mengganti nama direktori. Sintaksnya adalah sebagai berikut -

$mv olddir newdir $

Anda dapat mengganti nama direktori mydir untuk yourdir sebagai berikut -

$mv mydir yourdir $

Direktori. (titik) dan .. (titik titik)

Itu filename .(titik) mewakili direktori kerja saat ini; danfilename .. (titik titik) mewakili direktori satu tingkat di atas direktori kerja saat ini, sering disebut sebagai direktori induk.

Jika kita memasukkan perintah untuk menampilkan daftar direktori / file kerja saat ini dan menggunakan -a option untuk mendaftar semua file dan -l option untuk memberikan daftar panjang, kami akan menerima hasil sebagai berikut.

$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 $

Pada bab ini, kita akan membahas secara detail tentang izin file dan mode akses di Unix. Kepemilikan file adalah komponen penting dari Unix yang menyediakan metode aman untuk menyimpan file. Setiap file di Unix memiliki atribut berikut -

  • Owner permissions - Izin pemilik menentukan tindakan apa yang dapat dilakukan oleh pemilik file pada file tersebut.

  • Group permissions - Izin grup menentukan tindakan apa yang dapat dilakukan pengguna, yang merupakan anggota grup tempat file tersebut, dapat dilakukan pada file tersebut.

  • Other (world) permissions - Izin untuk orang lain menunjukkan tindakan apa yang dapat dilakukan oleh semua pengguna lain pada file tersebut.

Indikator Izin

Saat menggunakan ls -l perintah, ini menampilkan berbagai informasi yang berkaitan dengan izin file sebagai berikut -

$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

Di sini, kolom pertama menunjukkan mode akses yang berbeda, yaitu izin yang terkait dengan file atau direktori.

Izin dipecah menjadi tiga kelompok, dan setiap posisi dalam kelompok menunjukkan izin tertentu, dalam urutan ini: baca (r), tulis (w), eksekusi (x) -

  • Tiga karakter pertama (2-4) mewakili izin untuk pemilik file. Sebagai contoh,-rwxr-xr-- menyatakan bahwa pemilik telah membaca (r), menulis (w) dan menjalankan (x) izin.

  • Grup kedua dari tiga karakter (5-7) terdiri dari hak akses untuk grup tempat file tersebut berada. Sebagai contoh,-rwxr-xr-- menyatakan bahwa grup memiliki izin baca (r) dan eksekusi (x), tetapi tidak ada izin tulis.

  • Grup terakhir dari tiga karakter (8-10) mewakili izin untuk orang lain. Sebagai contoh,-rwxr-xr-- mewakili apa yang ada read (r) hanya izin.

Mode Akses File

Izin file adalah baris pertahanan pertama dalam keamanan sistem Unix. Blok bangunan dasar dari izin Unix adalahread, write, dan execute izin, yang telah dijelaskan di bawah -

Baca

Memberi kemampuan untuk membaca, yaitu melihat konten file.

Menulis

Memberikan kemampuan untuk mengubah, atau menghapus konten file.

Menjalankan

Pengguna dengan izin eksekusi dapat menjalankan file sebagai program.

Mode Akses Direktori

Mode akses direktori terdaftar dan diatur dengan cara yang sama seperti file lainnya. Ada beberapa perbedaan yang perlu disebutkan -

Baca

Akses ke direktori berarti pengguna dapat membaca isinya. Pengguna dapat melihat filefilenames di dalam direktori.

Menulis

Akses berarti bahwa pengguna dapat menambah atau menghapus file dari direktori.

Menjalankan

Menjalankan direktori tidak terlalu masuk akal, jadi anggaplah ini sebagai izin lintas.

Seorang pengguna harus memiliki execute akses ke bin direktori untuk menjalankan file ls atau cd perintah.

Mengubah Izin

Untuk mengubah file atau izin direktori, Anda menggunakan file chmod(ubah mode) perintah. Ada dua cara untuk menggunakan chmod - mode simbolik dan mode absolut.

Menggunakan chmod dalam Mode Simbolik

Cara termudah bagi pemula untuk mengubah izin file atau direktori adalah dengan menggunakan mode simbolik. Dengan izin simbolis Anda bisa menambahkan, menghapus, atau menentukan set izin yang Anda inginkan dengan menggunakan operator di tabel berikut ini.

Sr.No. Deskripsi & Operator Chmod
1

+

Menambahkan izin yang ditentukan ke file atau direktori.

2

-

Menghapus izin yang ditentukan dari file atau direktori.

3

=

Menetapkan izin yang ditentukan.

Berikut contoh penggunaan testfile. Larils -1 pada testfile menunjukkan bahwa hak akses file adalah sebagai berikut -

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

Kemudian setiap contoh chmod perintah dari tabel sebelumnya dijalankan pada testfile, diikuti oleh ls –l, sehingga Anda dapat melihat perubahan izin -

$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

Inilah cara Anda menggabungkan perintah-perintah ini dalam satu baris -

$chmod o+wx,u-x,g = rx testfile $ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

Menggunakan chmod dengan Izin Mutlak

Cara kedua untuk mengubah izin dengan perintah chmod adalah menggunakan nomor untuk menentukan setiap set izin untuk file tersebut.

Setiap izin diberi nilai, seperti yang diperlihatkan tabel berikut, dan total setiap set izin memberikan nomor untuk set itu.

Jumlah Representasi Izin Oktal Ref
0 Tidak ada izin ---
1 Jalankan izin --x
2 Izin menulis -w-
3 Jalankan dan tulis izin: 1 (jalankan) + 2 (tulis) = 3 -wx
4 Izin baca r--
5 Izin baca dan eksekusi: 4 (baca) + 1 (eksekusi) = 5 rx
6 Izin baca dan tulis: 4 (baca) + 2 (tulis) = 6 rw-
7 Semua izin: 4 (baca) + 2 (tulis) + 1 (jalankan) = 7 rwx

Berikut adalah contoh menggunakan testfile. Larils -1 pada testfile menunjukkan bahwa hak akses file adalah sebagai berikut -

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

Kemudian setiap contoh chmod perintah dari tabel sebelumnya dijalankan pada testfile, diikuti oleh ls –l, sehingga Anda dapat melihat perubahan izin -

$ 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

Mengubah Pemilik dan Grup

Saat membuat akun di Unix, itu menetapkan owner ID dan a group IDuntuk setiap pengguna. Semua izin yang disebutkan di atas juga ditetapkan berdasarkan Pemilik dan Grup.

Tersedia dua perintah untuk mengubah pemilik dan grup file -

  • chown - Itu chown perintah singkatan "change owner" dan digunakan untuk mengubah pemilik file.

  • chgrp - Itu chgrp perintah singkatan "change group" dan digunakan untuk mengubah grup file.

Mengubah Kepemilikan

Itu chownperintah mengubah kepemilikan file. Sintaks dasarnya adalah sebagai berikut -

$ chown user filelist

Nilai pengguna dapat berupa name of a user pada sistem atau user id (uid) pengguna di sistem.

Contoh berikut akan membantu Anda memahami konsep -

$ chown amrood testfile $

Mengubah pemilik file yang diberikan menjadi pengguna amrood.

NOTE - Pengguna super, root, memiliki kemampuan tidak terbatas untuk mengubah kepemilikan file apa pun, tetapi pengguna biasa hanya dapat mengubah kepemilikan file yang mereka miliki.

Mengubah Kepemilikan Grup

Itu chgrpperintah mengubah kepemilikan grup dari sebuah file. Sintaks dasarnya adalah sebagai berikut -

$ chgrp group filelist

Nilai grup bisa menjadi name of a group pada sistem atau the group ID (GID) dari grup di sistem.

Contoh berikut membantu Anda memahami konsep -

$ chgrp special testfile
$

Mengubah grup file yang diberikan menjadi special kelompok.

Izin File SUID dan SGID

Seringkali ketika sebuah perintah dijalankan, itu harus dijalankan dengan hak khusus untuk menyelesaikan tugasnya.

Sebagai contoh, ketika Anda mengubah kata sandi Anda dengan passwd perintah, kata sandi baru Anda disimpan dalam file /etc/shadow.

Sebagai pengguna biasa, Anda tidak punya read atau writeakses ke file ini untuk alasan keamanan, tetapi ketika Anda mengubah kata sandi, Anda harus memiliki izin menulis ke file ini. Artinya filepasswd Program harus memberi Anda izin tambahan sehingga Anda dapat menulis ke file /etc/shadow.

Izin tambahan diberikan ke program melalui mekanisme yang dikenal sebagai Set User ID (SUID) dan Set Group ID (SGID) bit.

Ketika Anda menjalankan program yang mengaktifkan bit SUID, Anda mewarisi izin dari pemilik program itu. Program yang tidak memiliki kumpulan bit SUID dijalankan dengan izin pengguna yang memulai program.

Ini juga terjadi dengan SGID. Biasanya, program dijalankan dengan izin grup Anda, tetapi grup Anda akan diubah hanya untuk program ini menjadi pemilik grup program.

Bit SUID dan SGID akan muncul sebagai huruf "s"jika izin tersedia. SUID tersebut"s" bit akan ditempatkan di bit izin tempat pemilik execute izin biasanya ada.

Misalnya, perintah -

$ ls -l /usr/bin/passwd
-r-sr-xr-x  1   root   bin  19031 Feb 7 13:47  /usr/bin/passwd*
$

Menunjukkan bahwa bit SUID disetel dan perintah tersebut dimiliki oleh root. Huruf kapitalS dalam posisi eksekusi, bukan huruf kecil s menunjukkan bahwa bit eksekusi tidak disetel.

Jika bit lengket diaktifkan pada direktori, file hanya dapat dihapus jika Anda adalah salah satu pengguna berikut -

  • Pemilik direktori tempel
  • Pemilik file sedang dihapus
  • Pengguna super, root

Untuk mengatur bit SUID dan SGID untuk direktori manapun coba perintah berikut -

$ chmod ug+s dirname
$ ls -l drwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname $

Dalam bab ini, kita akan membahas secara detail tentang lingkungan Unix. Konsep Unix yang penting adalahenvironment, yang ditentukan oleh variabel lingkungan. Beberapa diatur oleh sistem, yang lain oleh Anda, yang lain oleh shell, atau program apa pun yang memuat program lain.

Variabel adalah string karakter yang kita beri nilai. Nilai yang diberikan bisa berupa angka, teks, nama file, perangkat, atau jenis data lainnya.

Misalnya, pertama kami menetapkan TEST variabel dan kemudian kami mengakses nilainya menggunakan echo perintah -

$TEST="Unix Programming" $echo $TEST

Ini menghasilkan hasil sebagai berikut.

Unix Programming

Perhatikan bahwa variabel lingkungan disetel tanpa menggunakan $tanda tangan tetapi saat mengaksesnya kami menggunakan tanda $ sebagai awalan. Variabel ini mempertahankan nilainya sampai kita keluar dari cangkang.

Saat Anda masuk ke sistem, shell mengalami fase yang disebut initializationuntuk mengatur lingkungan. Ini biasanya merupakan proses dua langkah yang melibatkan shell membaca file-file berikut -

  • /etc/profile
  • profile

Prosesnya adalah sebagai berikut -

  • Shell memeriksa untuk melihat apakah file tersebut /etc/profile ada.

  • Jika ada, shell akan membacanya. Jika tidak, file ini akan dilewati. Tidak ada pesan kesalahan yang ditampilkan.

  • Shell memeriksa untuk melihat apakah file tersebut .profileada di direktori home Anda. Direktori home Anda adalah direktori tempat Anda memulai setelah Anda masuk.

  • Jika ada, shell akan membacanya; jika tidak, cangkang akan melewatinya. Tidak ada pesan kesalahan yang ditampilkan.

Segera setelah kedua file ini dibaca, shell menampilkan prompt -

$

Ini adalah prompt di mana Anda dapat memasukkan perintah untuk menjalankannya.

Note - Proses inisialisasi shell yang dijelaskan di sini berlaku untuk semua Bourne ketik shell, tetapi beberapa file tambahan digunakan oleh bash dan ksh.

File .profile

Berkas /etc/profile dikelola oleh administrator sistem mesin Unix Anda dan berisi informasi inisialisasi shell yang diperlukan oleh semua pengguna di sistem.

Berkas .profileberada di bawah kendali Anda. Anda dapat menambahkan informasi kustomisasi shell sebanyak yang Anda inginkan ke file ini. Kumpulan informasi minimum yang perlu Anda konfigurasikan meliputi -

  • Jenis terminal yang Anda gunakan.
  • Daftar direktori untuk mencari perintah.
  • Daftar variabel yang memengaruhi tampilan dan nuansa terminal Anda.

Anda dapat memeriksa .profiletersedia di direktori home Anda. Buka menggunakan editor vi dan periksa semua variabel yang disetel untuk lingkungan Anda.

Mengatur Jenis Terminal

Biasanya, tipe terminal yang Anda gunakan secara otomatis dikonfigurasi oleh login atau gettyprogram. Terkadang, proses konfigurasi otomatis salah menebak terminal Anda.

Jika terminal Anda tidak disetel dengan benar, keluaran dari perintah mungkin terlihat aneh, atau Anda mungkin tidak dapat berinteraksi dengan shell dengan benar.

Untuk memastikan bahwa hal ini tidak terjadi, sebagian besar pengguna menyetel terminal mereka ke penyebut umum terendah dengan cara berikut -

$TERM=vt100 $

Mengatur PATH

Saat Anda mengetik perintah apa pun pada prompt perintah, shell harus menemukan perintah tersebut sebelum dapat dijalankan.

Variabel PATH menentukan lokasi di mana shell harus mencari perintah. Biasanya variabel Path diatur sebagai berikut -

$PATH=/bin:/usr/bin $

Di sini, setiap entri individu dipisahkan oleh karakter titik dua (:)adalah direktori. Jika Anda meminta shell untuk menjalankan perintah dan tidak dapat menemukannya di direktori mana pun yang diberikan dalam variabel PATH, pesan yang mirip dengan berikut ini akan muncul -

$hello hello: not found $

Ada variabel seperti PS1 dan PS2 yang dibahas di bagian selanjutnya.

Variabel PS1 dan PS2

Karakter yang ditampilkan shell sebagai prompt perintah Anda disimpan dalam variabel PS1. Anda dapat mengubah variabel ini menjadi apapun yang Anda inginkan. Segera setelah Anda mengubahnya, itu akan digunakan oleh shell sejak saat itu.

Misalnya, jika Anda mengeluarkan perintah -

$PS1='=>'
=>
=>
=>

Prompt Anda akan menjadi =>. Untuk mengatur nilaiPS1 sehingga itu menunjukkan direktori kerja, keluarkan perintah -

=>PS1="[\u@\h \w]\$"
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$ [root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$

Hasil dari perintah ini adalah prompt menampilkan nama pengguna pengguna, nama mesin (nama host), dan direktori kerja.

Ada cukup banyak escape sequencesyang dapat digunakan sebagai argumen nilai untuk PS1; cobalah untuk membatasi diri Anda pada yang paling kritis sehingga prompt tidak membanjiri Anda dengan informasi.

Sr.No. Urutan & Deskripsi Escape
1

\t

Waktu saat ini, dinyatakan sebagai HH: MM: SS

2

\d

Tanggal sekarang, dinyatakan sebagai Tanggal Bulan Hari Kerja

3

\n

Garis baru

4

\s

Lingkungan shell saat ini

5

\W

Direktori kerja

6

\w

Path lengkap dari direktori kerja

7

\u

Nama pengguna pengguna saat ini

8

\h

Nama host mesin saat ini

9

\#

Nomor perintah dari perintah saat ini. Meningkat saat perintah baru dimasukkan

10

\$

Jika UID yang efektif adalah 0 (yaitu, jika Anda login sebagai root), akhiri prompt dengan karakter #; jika tidak, gunakan tanda $

Anda dapat membuat perubahan sendiri setiap kali Anda masuk, atau Anda dapat membuat perubahan secara otomatis di PS1 dengan menambahkannya ke .profile mengajukan.

Ketika Anda mengeluarkan perintah yang tidak lengkap, shell akan menampilkan prompt sekunder dan menunggu Anda menyelesaikan perintah dan menekan Enter lagi.

Perintah sekunder default adalah > (tanda lebih besar dari), tetapi dapat diubah dengan mendefinisikan ulang PS2 variabel shell -

Berikut adalah contoh yang menggunakan prompt sekunder default -

$ echo "this is a > test" this is a test $

Contoh yang diberikan di bawah ini mendefinisikan ulang PS2 dengan prompt yang disesuaikan -

$ PS2="secondary prompt->" $ echo "this is a
secondary prompt->test"
this is a
test
$

Variabel Lingkungan

Berikut adalah daftar parsial variabel lingkungan penting. Variabel-variabel ini ditetapkan dan diakses seperti yang disebutkan di bawah ini -

Sr.No. Variabel & Deskripsi
1

DISPLAY

Berisi pengenal untuk tampilan itu X11 program harus digunakan secara default.

2

HOME

Menunjukkan direktori home dari pengguna saat ini: argumen default untuk cd built-in perintah.

3

IFS

Menunjukkan Internal Field Separator yang digunakan oleh pengurai untuk pemisahan kata setelah perluasan.

4

LANG

LANG memperluas ke lokal sistem default; LC_ALL dapat digunakan untuk menimpa ini. Misalnya, jika nilainya adalahpt_BR, kemudian bahasanya disetel ke Portugis (Brasil) dan lokal ke Brasil.

5

LD_LIBRARY_PATH

Sistem Unix dengan penaut dinamis, berisi daftar direktori yang dipisahkan oleh penaut dinamis yang harus mencari objek bersama saat membuat gambar proses setelah exec, sebelum mencari di direktori lain.

6

PATH

Menunjukkan jalur pencarian untuk perintah. Ini adalah daftar direktori yang dipisahkan oleh titik dua tempat shell mencari perintah.

7

PWD

Menunjukkan direktori kerja saat ini sebagaimana diatur oleh perintah cd.

8

RANDOM

Menghasilkan bilangan bulat acak antara 0 dan 32.767 setiap kali direferensikan.

9

SHLVL

Bertambah satu setiap kali instance bash dimulai. Variabel ini berguna untuk menentukan apakah perintah keluar built-in mengakhiri sesi saat ini.

10

TERM

Mengacu pada tipe tampilan.

11

TZ

Mengacu pada Zona waktu. Ini bisa mengambil nilai seperti GMT, AST, dll.

12

UID

Memperluas ke ID pengguna numerik dari pengguna saat ini, yang diinisialisasi saat memulai shell.

Berikut adalah contoh contoh yang menunjukkan beberapa variabel lingkungan -

$ echo $HOME /root ]$ echo $DISPLAY $ echo $TERM xterm $ echo $PATH /usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin $

Dalam bab ini, kita akan membahas secara detail tentang Printing dan Email sebagai utilitas dasar Unix. Sejauh ini, kami telah mencoba memahami OS Unix dan sifat perintah dasarnya. Dalam bab ini, kita akan mempelajari beberapa utilitas Unix penting yang dapat digunakan dalam kehidupan sehari-hari.

Mencetak File

Sebelum Anda mencetak file pada sistem Unix, Anda mungkin ingin memformatnya untuk menyesuaikan margin, menyorot beberapa kata, dan seterusnya. Sebagian besar file juga dapat dicetak tanpa diformat ulang, tetapi hasil cetakan mentahnya mungkin tidak terlalu menarik.

Banyak versi Unix menyertakan dua pemformat teks yang kuat, nroff dan troff.

Perintah pr

Itu prperintah melakukan pemformatan kecil file pada layar terminal atau untuk printer. Misalnya, jika Anda memiliki daftar nama yang panjang dalam sebuah file, Anda dapat memformatnya di layar menjadi dua kolom atau lebih.

Berikut ini adalah sintaks untuk pr perintah -

pr option(s) filename(s)

Itu prmengubah format file hanya di layar atau pada salinan cetak; itu tidak mengubah file asli. Tabel berikut mencantumkan beberapapr pilihan -

Sr.No. Opsi & Deskripsi
1

-k

Menghasilkan k kolom keluaran

2

-d

Beri spasi ganda pada keluaran (tidak untuk semua pr versi)

3

-h "header"

Mengambil item berikutnya sebagai header laporan

4

-t

Menghilangkan pencetakan header dan margin atas / bawah

5

-l PAGE_LENGTH

Setel panjang halaman menjadi PAGE_LENGTH (66) baris. Jumlah baris teks default adalah 56

6

-o MARGIN

Offset setiap baris dengan MARGIN (nol) spasi

7

-w PAGE_WIDTH

Setel lebar halaman menjadi PAGE_WIDTH (72) karakter untuk keluaran beberapa kolom teks saja

Sebelum menggunakan pr, berikut adalah isi dari file contoh bernama makanan.

$cat food Sweet Tooth Bangkok Wok Mandalay Afghani Cuisine Isle of Java Big Apple Deli Sushi and Sashimi Tio Pepe's Peppers ........ $

Mari kita gunakan prperintah untuk membuat laporan dua kolom dengan tajuk Restoran -

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

Perintah lp dan lpr

Perintah lp atau lprmencetak file di atas kertas sebagai lawan dari tampilan layar. Setelah Anda siap dengan pemformatan menggunakanpr perintah, Anda dapat menggunakan salah satu dari perintah ini untuk mencetak file Anda pada printer yang terhubung ke komputer Anda.

Administrator sistem Anda mungkin telah menyiapkan printer default di situs Anda. Untuk mencetak file bernamafood pada printer default, gunakan lp atau lpr perintah, seperti pada contoh berikut -

$lp food request id is laserp-525 (1 file) $

Itu lp Perintah menunjukkan ID yang dapat Anda gunakan untuk membatalkan pekerjaan cetak atau memeriksa statusnya.

  • Jika Anda menggunakan lp perintah, Anda dapat menggunakan -nNumpilihan untuk mencetak Jumlah salinan. Bersamaan dengan perintahlpr, Kamu dapat memakai -Num untuk yang sama.

  • Jika ada beberapa printer yang terhubung dengan jaringan bersama, Anda dapat memilih printer menggunakan -dprinter opsi bersama dengan perintah lp dan untuk tujuan yang sama Anda dapat menggunakan -Pprinteropsi bersama dengan perintah lpr. Di sini printer adalah nama printer.

Perintah lpstat dan lpq

Itu lpstat perintah menunjukkan apa yang ada di antrian printer: ID permintaan, pemilik, ukuran file, kapan pekerjaan dikirim untuk dicetak, dan status permintaan.

Menggunakan lpstat -ojika Anda ingin melihat semua permintaan keluaran selain permintaan Anda sendiri. Permintaan ditampilkan sesuai urutan pencetakannya -

$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 $

Itu lpq memberikan informasi yang sedikit berbeda dari 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 $

Di sini baris pertama menampilkan status pencetak. Jika pencetak dinonaktifkan atau kehabisan kertas, Anda mungkin melihat pesan yang berbeda pada baris pertama ini.

Perintah pembatalan dan lprm

Itu cancel perintah menghentikan permintaan pencetakan dari lp command. Itulprm perintah menghentikan semua lpr requests. Anda dapat menentukan ID permintaan (ditampilkan dengan lp atau lpq) atau nama printer.

$cancel laserp-575 request "laserp-575" cancelled $

Untuk membatalkan permintaan apa pun yang sedang dicetak, terlepas dari ID-nya, cukup masukkan batal dan nama printer -

$cancel laserp request "laserp-573" cancelled $

Itu lprmperintah akan membatalkan pekerjaan aktif jika itu milik Anda. Jika tidak, Anda dapat memberikan nomor pekerjaan sebagai argumen, atau menggunakandash (-) untuk menghapus semua pekerjaan Anda -

$lprm 575 dfA575diamond dequeued cfA575diamond dequeued $

Itu lprm perintah memberitahu Anda nama file sebenarnya dihapus dari antrian printer.

Mengirim Email

Anda menggunakan perintah email Unix untuk mengirim dan menerima email. Berikut ini sintaks untuk mengirim email -

$mail [-s subject] [-c cc-addr] [-b bcc-addr] to-addr

Berikut adalah opsi penting yang terkait dengan perintah mail −s

Sr.No. Opsi & Deskripsi
1

-s

Menentukan subjek pada baris perintah.

2

-c

Mengirimkan salinan karbon ke daftar pengguna. Daftar harus berupa daftar nama yang dipisahkan dengan koma.

3

-b

Mengirimkan salinan karbon buta ke daftar. Daftar harus berupa daftar nama yang dipisahkan dengan koma.

Berikut adalah contoh untuk mengirim pesan percobaan ke [email protected].

$mail -s "Test Message" [email protected]

Anda kemudian diharapkan untuk mengetikkan pesan Anda, diikuti dengan "control-D"di awal baris. Untuk berhenti, cukup ketik titik(.) sebagai berikut -

Hi,

This is a test
.
Cc:

Anda dapat mengirim file lengkap menggunakan file redirect < operator sebagai berikut -

$mail -s "Report 05/06/07" [email protected] < demo.txt

Untuk memeriksa email masuk di sistem Unix Anda, Anda cukup mengetik email sebagai berikut -

$mail
no email

Pada bab ini, kita akan membahas secara detail tentang pipa dan filter di Unix. Anda dapat menghubungkan dua perintah secara bersamaan sehingga keluaran dari satu program menjadi masukan program berikutnya. Dua atau lebih perintah yang dihubungkan dengan cara ini membentuk pipa.

Untuk membuat pipa, letakkan batang vertikal (|) pada baris perintah di antara dua perintah.

Ketika sebuah program mengambil masukannya dari program lain, ia melakukan beberapa operasi pada masukan itu, dan menulis hasilnya ke keluaran standar. Ini disebut sebagai afilter.

Perintah grep

Perintah grep mencari file atau file untuk baris yang memiliki pola tertentu. Sintaksnya adalah -

$grep pattern file(s)

Nama "grep" berasal dari perintah ed (editor baris Unix) g/re/p yang berarti "menelusuri ekspresi reguler secara global dan mencetak semua baris yang memuatnya".

Ekspresi reguler adalah beberapa teks biasa (kata, misalnya) dan / atau karakter khusus yang digunakan untuk pencocokan pola.

Penggunaan grep yang paling sederhana adalah mencari pola yang terdiri dari satu kata. Ini dapat digunakan dalam pipa sehingga hanya baris dari file input yang berisi string tertentu yang dikirim ke output standar. Jika Anda tidak memberi nama file pada grep untuk dibaca, grep membaca input standarnya; begitulah cara semua program filter bekerja -

$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
$

Ada berbagai opsi yang dapat Anda gunakan bersama dengan grep perintah -

Sr.No. Opsi & Deskripsi
1

-v

Mencetak semua garis yang tidak cocok dengan pola.

2

-n

Mencetak garis yang cocok dan nomor barisnya.

3

-l

Mencetak hanya nama file dengan baris yang cocok (huruf "l")

4

-c

Mencetak hanya jumlah garis yang cocok.

5

-i

Cocok dengan huruf besar atau kecil.

Sekarang mari kita menggunakan ekspresi reguler yang memberi tahu grep untuk mencari baris "carol", diikuti dengan nol atau karakter lain yang disingkat dalam ekspresi reguler sebagai ". *"), lalu diikuti oleh "Agustus" .−

Di sini, kami menggunakan -i pilihan untuk memiliki pencarian case insensitive -

$ls -l | grep -i "carol.*aug"
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

Perintah sortir

Itu sortperintah mengatur baris teks menurut abjad atau numerik. Contoh berikut mengurutkan baris dalam file makanan -

$sort food
Afghani Cuisine
Bangkok Wok
Big Apple Deli
Isle of Java

Mandalay
Sushi and Sashimi
Sweet Tooth
Tio Pepe's Peppers
$

Itu sortperintah mengatur baris teks menurut abjad secara default. Ada banyak opsi yang mengontrol pengurutan -

Sr.No. Deskripsi
1

-n

Mengurutkan secara numerik (contoh: 10 akan mengurutkan setelah 2), mengabaikan tab dan kosong.

2

-r

Membalik urutan pengurutan.

3

-f

Mengurutkan huruf besar dan kecil menjadi satu.

4

+x

Abaikan dulu x bidang saat menyortir.

Lebih dari dua perintah dapat dihubungkan menjadi pipa. Mengambil contoh pipa sebelumnya menggunakangrep, kami selanjutnya dapat mengurutkan file yang dimodifikasi pada bulan Agustus menurut urutan ukurannya.

Pipa berikut terdiri dari perintah ls, grep, dan 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
$

Pipa ini mengurutkan semua file dalam direktori Anda yang dimodifikasi pada bulan Agustus menurut urutan ukurannya, dan mencetaknya di layar terminal. Opsi sortir + 4n melompati empat bidang (bidang dipisahkan dengan kosong) lalu mengurutkan baris dalam urutan numerik.

Pg dan lebih banyak Perintah

Output panjang biasanya dapat di-zip oleh Anda di layar, tetapi jika Anda menjalankan teks melalui lebih banyak atau menggunakan ekstensi pgperintah sebagai filter; tampilan akan berhenti setelah layar penuh dengan teks.

Anggaplah Anda memiliki daftar direktori yang panjang. Untuk membuatnya lebih mudah membaca daftar yang diurutkan, gunakan pipa output melaluimore sebagai berikut -

$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%)

Layar akan terisi setelah layar penuh dengan teks yang terdiri dari baris-baris yang diurutkan berdasarkan urutan ukuran file. Di bagian bawah layar adalahmore prompt, di mana Anda dapat mengetikkan perintah untuk menelusuri teks yang diurutkan.

Setelah Anda selesai dengan layar ini, Anda dapat menggunakan salah satu perintah yang terdaftar dalam pembahasan program lainnya.

Pada bab ini, kita akan membahas secara detail tentang manajemen proses di Unix. Saat Anda menjalankan program pada sistem Unix Anda, sistem akan menciptakan lingkungan khusus untuk program itu. Lingkungan ini berisi semua yang diperlukan sistem untuk menjalankan program seolah-olah tidak ada program lain yang berjalan di sistem.

Setiap kali Anda mengeluarkan perintah di Unix, itu membuat, atau memulai, proses baru. Saat Anda mencobalsperintah untuk daftar isi direktori, Anda memulai proses. Sebuah proses, dalam istilah sederhana, adalah contoh dari program yang sedang berjalan.

Sistem operasi melacak proses melalui lima digit nomor ID yang dikenal sebagai pid atau process ID. Setiap proses dalam sistem memiliki keunikan tersendiripid.

Pids akhirnya diulang karena semua nomor yang mungkin digunakan dan pid berikutnya berputar atau dimulai kembali. Pada titik waktu mana pun, tidak ada dua proses dengan pid yang sama yang ada di sistem karena pid yang digunakan Unix untuk melacak setiap proses.

Memulai Proses

Saat Anda memulai proses (menjalankan perintah), ada dua cara untuk menjalankannya -

  • Proses Latar Depan
  • Proses Latar Belakang

Proses Latar Depan

Secara default, setiap proses yang Anda mulai berjalan di latar depan. Ia mendapat masukan dari keyboard dan mengirimkan keluarannya ke layar.

Anda dapat melihat ini terjadi dengan lsperintah. Jika Anda ingin mencantumkan semua file di direktori Anda saat ini, Anda dapat menggunakan perintah berikut -

$ls ch*.doc

Ini akan menampilkan semua file, yang namanya dimulai dengan ch dan diakhiri dengan .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

Prosesnya berjalan di latar depan, outputnya diarahkan ke layar saya, dan jika file ls perintah menginginkan masukan apa pun (yang sebenarnya tidak), ia menunggu dari keyboard.

Saat program berjalan di latar depan dan memakan waktu, tidak ada perintah lain yang dapat dijalankan (memulai proses lain) karena prompt tidak akan tersedia sampai program selesai memproses dan keluar.

Proses Latar Belakang

Proses latar belakang berjalan tanpa terhubung ke keyboard Anda. Jika proses latar belakang memerlukan masukan keyboard apa pun, proses itu menunggu.

Keuntungan menjalankan proses di latar belakang adalah Anda dapat menjalankan perintah lain; Anda tidak perlu menunggu sampai selesai untuk memulai yang lain!

Cara termudah untuk memulai proses latar belakang adalah dengan menambahkan ampersand (&) di akhir perintah.

$ls ch*.doc &

Ini menampilkan semua file yang namanya dimulai dengan ch dan diakhiri dengan .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

Di sini, jika ls perintah menginginkan masukan apa pun (yang tidak), ia akan berada dalam status berhenti sampai kita memindahkannya ke latar depan dan memberikannya data dari keyboard.

Baris pertama tersebut berisi informasi tentang proses latar belakang - nomor pekerjaan dan ID proses. Anda perlu mengetahui nomor pekerjaan untuk memanipulasinya antara latar belakang dan latar depan.

Tekan tombol Enter dan Anda akan melihat yang berikut -

[1]   +   Done                 ls ch*.doc &
$

Baris pertama memberitahu Anda bahwa file lsproses latar belakang perintah selesai dengan sukses. Yang kedua adalah prompt untuk perintah lain.

Daftar Proses yang Berjalan

Sangat mudah untuk melihat proses Anda sendiri dengan menjalankan ps (proses status) perintah sebagai berikut -

$ps
PID       TTY      TIME        CMD
18358     ttyp3    00:00:00    sh
18361     ttyp3    00:01:31    abiword
18789     ttyp3    00:00:00    ps

Salah satu flag yang paling umum digunakan untuk ps adalah -f (f untuk penuh), yang memberikan lebih banyak informasi seperti yang ditunjukkan pada contoh berikut -

$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

Berikut adalah deskripsi dari semua field yang ditampilkan oleh ps -f perintah -

Sr.No. Kolom & Deskripsi
1

UID

ID pengguna yang memiliki proses ini (orang yang menjalankannya)

2

PID

ID Proses

3

PPID

ID proses induk (ID proses yang memulainya)

4

C

Pemanfaatan CPU dari proses

5

STIME

Waktu mulai proses

6

TTY

Jenis terminal yang terkait dengan proses

7

TIME

Waktu CPU dibutuhkan oleh proses

8

CMD

Perintah yang memulai proses ini

Ada opsi lain yang dapat digunakan bersama ps perintah -

Sr.No. Opsi & Deskripsi
1

-a

Menampilkan informasi tentang semua pengguna

2

-x

Menunjukkan informasi tentang proses tanpa terminal

3

-u

Menampilkan informasi tambahan seperti opsi -f

4

-e

Menampilkan informasi tambahan

Menghentikan Proses

Mengakhiri suatu proses dapat dilakukan dengan beberapa cara berbeda. Seringkali, dari perintah berbasis konsol, mengirim tombol CTRL + C (karakter interupsi default) akan keluar dari perintah. Ini berfungsi saat proses berjalan dalam mode latar depan.

Jika suatu proses sedang berjalan di latar belakang, Anda harus mendapatkan ID Pekerjaannya menggunakan psperintah. Setelah itu, Anda dapat menggunakan filekill perintah untuk menghentikan proses sebagai berikut -

$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

Di sini kill perintah mengakhiri first_oneproses. Jika suatu proses mengabaikan perintah kill biasa, Anda dapat menggunakankill -9 diikuti dengan ID proses sebagai berikut -

$kill -9 6738
Terminated

Proses Orang Tua dan Anak

Setiap proses unix memiliki dua nomor ID yang ditetapkan padanya: ID Proses (pid) dan ID proses Induk (ppid). Setiap proses pengguna dalam sistem memiliki proses induk.

Sebagian besar perintah yang Anda jalankan memiliki shell sebagai induknya. Periksalahps -f contoh di mana perintah ini mencantumkan ID proses dan ID proses induk.

Proses Zombie dan Orphan

Biasanya, ketika proses anak dimatikan, proses induk diperbarui melalui file SIGCHLDsinyal. Kemudian orang tua dapat melakukan tugas lain atau memulai kembali anak baru sesuai kebutuhan. Namun, terkadang proses induk dimatikan sebelum anaknya dibunuh. Dalam hal ini, "induk dari semua proses", fileinitproses, menjadi PPID baru (ID proses induk). Dalam beberapa kasus, proses ini disebut proses orphan.

Ketika suatu proses dihentikan, a ps daftar mungkin masih menunjukkan proses dengan Znegara. Ini adalah proses zombie atau mati. Prosesnya sudah mati dan tidak digunakan. Proses ini berbeda dari proses yatim piatu. Mereka telah menyelesaikan eksekusi tetapi masih menemukan entri di tabel proses.

Proses Daemon

Daemon adalah proses latar belakang terkait sistem yang sering berjalan dengan izin root dan permintaan layanan dari proses lain.

Daemon tidak memiliki terminal pengontrol. Itu tidak bisa terbuka/dev/tty. Jika Anda melakukan"ps -ef" dan lihat tty lapangan, semua daemon akan memiliki file ? Untuk tty.

Tepatnya, daemon adalah proses yang berjalan di latar belakang, biasanya menunggu sesuatu terjadi yang mampu dikerjakannya. Misalnya, daemon printer menunggu perintah cetak.

Jika Anda memiliki program yang membutuhkan pemrosesan yang lama, maka ada baiknya menjadikannya sebagai daemon dan menjalankannya di latar belakang.

Perintah atas

Itu top perintah adalah alat yang sangat berguna untuk menampilkan proses yang diurutkan berdasarkan berbagai kriteria dengan cepat.

Ini adalah alat diagnostik interaktif yang sering memperbarui dan menampilkan informasi tentang memori fisik dan virtual, penggunaan CPU, rata-rata beban, dan proses sibuk Anda.

Berikut adalah sintaks sederhana untuk menjalankan perintah teratas dan untuk melihat statistik penggunaan CPU oleh proses yang berbeda -

$top

ID Pekerjaan versus ID Proses

Proses latar belakang dan ditangguhkan biasanya dimanipulasi melalui job number (job ID). Nomor ini berbeda dari ID proses dan digunakan karena lebih pendek.

Selain itu, pekerjaan dapat terdiri dari beberapa proses yang berjalan dalam satu rangkaian atau pada saat yang sama, secara paralel. Menggunakan ID pekerjaan lebih mudah daripada melacak proses individu.

Pada bab ini, kita akan membahas secara rinci tentang utilitas komunikasi jaringan di Unix. Saat Anda bekerja di lingkungan terdistribusi, Anda perlu berkomunikasi dengan pengguna jarak jauh dan Anda juga perlu mengakses mesin Unix jarak jauh.

Ada beberapa utilitas Unix yang membantu pengguna menghitung di lingkungan jaringan dan terdistribusi. Bab ini mencantumkan beberapa di antaranya.

Utilitas ping

Itu pingperintah mengirimkan permintaan gema ke host yang tersedia di jaringan. Dengan menggunakan perintah ini, Anda dapat memeriksa apakah host jarak jauh Anda merespons dengan baik atau tidak.

Perintah ping berguna untuk yang berikut -

  • Melacak dan mengisolasi masalah perangkat keras dan perangkat lunak.
  • Menentukan status jaringan dan berbagai host asing.
  • Menguji, mengukur, dan mengelola jaringan.

Sintaksis

Berikut ini adalah sintaks sederhana untuk menggunakan perintah ftp -

$ping hostname or ip-address

Perintah di atas mulai mencetak respons setelah setiap detik. Untuk keluar dari perintah, Anda dapat menghentikannya dengan menekanCNTRL + C kunci.

Contoh

Berikut adalah contoh untuk memeriksa ketersediaan host yang tersedia di jaringan -

$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 $

Jika host tidak ada, Anda akan menerima output berikut -

$ping giiiiiigle.com ping: unknown host giiiiigle.com $

Utilitas ftp

Sini, ftp berdiri untuk File Transfer Protocol. Utilitas ini membantu Anda mengunggah dan mengunduh file dari satu komputer ke komputer lain.

Utilitas ftp memiliki serangkaian perintah mirip Unix sendiri. Perintah-perintah ini membantu Anda melakukan tugas-tugas seperti -

  • Hubungkan dan masuk ke host jarak jauh.

  • Menavigasi direktori.

  • Daftar isi direktori.

  • Taruh dan dapatkan file.

  • Transfer file sebagai ascii, ebcdic atau binary.

Sintaksis

Berikut ini adalah sintaks sederhana untuk menggunakan perintah ftp -

$ftp hostname or ip-address

Perintah di atas akan meminta Anda memasukkan ID login dan kata sandi. Setelah Anda diautentikasi, Anda dapat mengakses direktori home dari akun login dan Anda akan dapat melakukan berbagai perintah.

Tabel berikut mencantumkan beberapa perintah penting -

Sr.No. Perintah & Deskripsi
1

put filename

Mengunggah nama file dari mesin lokal ke mesin jarak jauh.

2

get filename

Unduh nama file dari mesin jarak jauh ke mesin lokal.

3

mput file list

Mengunggah lebih dari satu file dari mesin lokal ke mesin jarak jauh.

4

mget file list

Mengunduh lebih dari satu file dari mesin jarak jauh ke mesin lokal.

5

prompt off

Mematikan prompt. Secara default, Anda akan menerima konfirmasi untuk mengunggah atau mengunduh file menggunakanmput atau mget perintah.

6

prompt on

Mengaktifkan prompt.

7

dir

Mencantumkan semua file yang tersedia di direktori saat ini dari mesin jarak jauh.

8

cd dirname

Mengubah direktori menjadi dirname di mesin jarak jauh.

9

lcd dirname

Mengubah direktori menjadi dirname di mesin lokal.

10

quit

Membantu logout dari login saat ini.

Perlu dicatat bahwa semua file akan diunduh atau diunggah ke atau dari direktori saat ini. Jika Anda ingin mengunggah file Anda di direktori tertentu, Anda harus terlebih dahulu mengubah ke direktori itu dan kemudian mengunggah file yang diperlukan.

Contoh

Berikut adalah contoh untuk menunjukkan cara kerja beberapa perintah -

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

Utilitas telnet

Ada kalanya kita diminta untuk terhubung ke mesin Unix jarak jauh dan mengerjakan mesin itu dari jarak jauh. Telnet adalah utilitas yang memungkinkan pengguna komputer di satu situs untuk membuat sambungan, login, dan kemudian melakukan pekerjaan di komputer di situs lain.

Setelah Anda masuk menggunakan Telnet, Anda dapat melakukan semua aktivitas di mesin yang terhubung dari jarak jauh. Berikut ini adalah contoh sesi Telnet -

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:>

Utilitas jari

Itu fingerperintah menampilkan informasi tentang pengguna pada host tertentu. Tuan rumah bisa lokal atau jarak jauh.

Jari mungkin dinonaktifkan pada sistem lain untuk alasan keamanan.

Berikut ini adalah sintaks sederhana untuk menggunakan perintah jari -

Periksa semua pengguna yang masuk di mesin lokal -

$ finger
Login     Name       Tty      Idle  Login Time   Office
amrood               pts/0          Jun 25 08:03 (62.61.164.115)

Dapatkan informasi tentang pengguna tertentu yang tersedia di mesin lokal -

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

Periksa semua pengguna yang masuk di mesin jarak jauh -

$ finger @avtar.com
Login     Name       Tty      Idle  Login Time   Office
amrood               pts/0          Jun 25 08:03 (62.61.164.115)

Dapatkan informasi tentang pengguna tertentu yang tersedia di mesin jarak jauh -

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

Di bab ini, kita akan memahami cara kerja Editor vi di Unix. Ada banyak cara untuk mengedit file di Unix. Mengedit file menggunakan editor teks berorientasi layarviadalah salah satu cara terbaik. Editor ini memungkinkan Anda untuk mengedit baris dalam konteks dengan baris lain di file.

Versi perbaikan dari editor vi yang disebut VIMjuga telah tersedia sekarang. Di sini, VIM adalah singkatan dariVi IMterbukti.

vi umumnya dianggap sebagai standar de facto di editor Unix karena -

  • Ini biasanya tersedia di semua jenis sistem Unix.

  • Implementasinya sangat mirip di seluruh papan.

  • Ini membutuhkan sumber daya yang sangat sedikit.

  • Ini lebih ramah pengguna daripada editor lain seperti ed atau ex.

Anda bisa menggunakan vieditor untuk mengedit file yang ada atau untuk membuat file baru dari awal. Anda juga dapat menggunakan editor ini untuk hanya membaca file teks.

Memulai Editor vi

Tabel berikut mencantumkan perintah dasar untuk menggunakan editor vi -

Sr.No. Perintah & Deskripsi
1

vi filename

Membuat file baru jika sudah tidak ada, jika tidak membuka file yang sudah ada.

2

vi -R filename

Membuka file yang ada dalam mode hanya-baca.

3

view filename

Membuka file yang ada dalam mode hanya-baca.

Berikut adalah contoh membuat file baru testfile jika sudah tidak ada di direktori kerja saat ini -

$vi testfile

Perintah di atas akan menghasilkan output berikut -

|
~
~
~
~
~
~
~
~
~
~
~
~
"testfile" [New File]

Anda akan melihat a tilde(~) pada setiap baris yang mengikuti kursor. Tilde mewakili garis yang tidak digunakan. Jika baris tidak dimulai dengan tilde dan tampak kosong, ada spasi, tab, baris baru, atau beberapa karakter yang tidak dapat dilihat lainnya.

Anda sekarang memiliki satu file terbuka untuk mulai dikerjakan. Sebelum melangkah lebih jauh, mari kita pahami beberapa konsep penting.

Mode Operasi

Saat bekerja dengan editor vi, kami biasanya menemukan dua mode berikut -

  • Command mode- Mode ini memungkinkan Anda untuk melakukan tugas administratif seperti menyimpan file, menjalankan perintah, menggerakkan kursor, memotong (menarik) dan menempelkan baris atau kata, serta mencari dan mengganti. Dalam mode ini, apa pun yang Anda ketik diartikan sebagai perintah.

  • Insert mode- Mode ini memungkinkan Anda memasukkan teks ke dalam file. Semua yang diketik dalam mode ini diinterpretasikan sebagai input dan ditempatkan di file.

vi selalu dimulai di command mode. Untuk memasukkan teks, Anda harus berada dalam mode sisipkan yang cukup mengetiki. Untuk keluar dari mode penyisipan, tekanEsc kunci, yang akan membawa Anda kembali ke mode perintah.

Hint- Jika Anda tidak yakin di mode mana Anda berada, tekan tombol Esc dua kali; ini akan membawa Anda ke mode perintah. Anda membuka file menggunakan editor vi. Mulailah dengan mengetik beberapa karakter dan kemudian masuk ke mode perintah untuk memahami perbedaannya.

Keluar dari vi

Perintah untuk keluar dari vi adalah :q. Setelah berada dalam mode perintah, ketik titik dua, dan 'q', diikuti dengan kembali. Jika file Anda telah dimodifikasi dengan cara apapun, editor akan memperingatkan Anda tentang hal ini, dan tidak membiarkan Anda keluar. Untuk mengabaikan pesan ini, perintah untuk keluar dari vi tanpa menyimpan adalah:q!. Ini memungkinkan Anda keluar dari vi tanpa menyimpan perubahan apa pun.

Perintah untuk menyimpan konten editor adalah :w. Anda dapat menggabungkan perintah di atas dengan perintah keluar, atau gunakan:wq dan kembali.

Cara termudah untuk save your changes and exit viadalah dengan perintah ZZ. Saat Anda berada dalam mode perintah, ketikZZ. ItuZZ perintah bekerja dengan cara yang sama seperti :wq perintah.

Jika Anda ingin menentukan / menyatakan nama tertentu untuk file tersebut, Anda dapat melakukannya dengan menentukannya setelah :w. Misalnya, jika Anda ingin menyimpan file yang sedang Anda kerjakan dengan nama file lainfilename2, Anda akan mengetik :w filename2 dan kembali.

Pindah di dalam File

Untuk berpindah-pindah di dalam file tanpa mempengaruhi teks Anda, Anda harus berada dalam mode perintah (tekan Esc dua kali). Tabel berikut mencantumkan beberapa perintah yang dapat Anda gunakan untuk berpindah-pindah karakter satu per satu -

Sr.No. Perintah & Deskripsi
1

k

Memindahkan kursor ke atas satu baris

2

j

Memindahkan kursor ke bawah satu baris

3

h

Memindahkan kursor ke posisi satu karakter kiri

4

l

Memindahkan kursor ke posisi satu karakter kanan

Poin-poin berikut perlu dipertimbangkan untuk dipindahkan di dalam file -

  • vi peka huruf besar kecil. Anda perlu memperhatikan kapitalisasi saat menggunakan perintah.

  • Kebanyakan perintah di vi dapat diawali dengan berapa kali Anda ingin tindakan tersebut terjadi. Sebagai contoh,2j memindahkan kursor dua baris ke bawah lokasi kursor.

Ada banyak cara lain untuk memindahkan file di vi. Ingatlah bahwa Anda harus berada dalam mode perintah (press Esc twice). Tabel berikut mencantumkan beberapa perintah untuk berpindah di sekitar file -

Sr.No. Perintah & Deskripsi
1

0 or |

Memosisikan kursor di awal baris

2

$

Menempatkan kursor di akhir baris

3

w

Menempatkan kursor ke kata berikutnya

4

b

Memposisikan kursor ke kata sebelumnya

5

(

Menempatkan kursor ke awal kalimat saat ini

6

)

Menempatkan kursor ke awal kalimat berikutnya

7

E

Pindah ke akhir kata dipisahkan kosong

8

{

Memindahkan paragraf ke belakang

9

}

Memindahkan paragraf ke depan

10

[[

Memindahkan satu bagian ke belakang

11

]]

Memindahkan satu bagian ke depan

12

n|

Pindah ke kolom n di baris saat ini

13

1G

Pindah ke baris pertama file

14

G

Pindah ke baris terakhir file

15

nG

Pindah ke nth baris file

16

:n

Pindah ke nth baris file

17

fc

Pindah ke depan c

18

Fc

Pindah kembali ke c

19

H

Pindah ke atas layar

20

nH

Pindah ke nth baris dari atas layar

21

M

Pindah ke tengah layar

22

L

Pindah ke bagian bawah layar

23

nL

Pindah ke nth baris dari bawah layar

24

:x

Titik dua diikuti dengan angka akan memposisikan kursor pada nomor baris yang diwakili oleh x

Perintah Kontrol

Perintah berikut dapat digunakan dengan Tombol Kontrol untuk menjalankan fungsi seperti yang diberikan pada tabel di bawah ini -

Sr.No. Perintah & Deskripsi
1

CTRL+d

Pindah ke depan 1/2 layar

2

CTRL+f

Maju satu layar penuh

3

CTRL+u

Pindah mundur 1/2 layar

4

CTRL+b

Bergerak mundur satu layar penuh

5

CTRL+e

Memindahkan layar ke atas satu baris

6

CTRL+y

Memindahkan layar ke bawah satu baris

7

CTRL+u

Memindahkan layar ke atas 1/2 halaman

8

CTRL+d

Memindahkan layar ke bawah 1/2 halaman

9

CTRL+b

Memindahkan layar ke atas satu halaman

10

CTRL+f

Memindahkan layar ke bawah satu halaman

11

CTRL+I

Gambar ulang layar

Mengedit File

Untuk mengedit file, Anda harus berada dalam mode sisipkan. Ada banyak cara untuk masuk ke mode penyisipan dari mode perintah -

Sr.No. Perintah & Deskripsi
1

i

Menyisipkan teks sebelum lokasi kursor saat ini

2

I

Menyisipkan teks di awal baris saat ini

3

a

Menyisipkan teks setelah lokasi kursor saat ini

4

A

Menyisipkan teks di akhir baris saat ini

5

o

Membuat baris baru untuk entri teks di bawah lokasi kursor

6

O

Membuat baris baru untuk entri teks di atas lokasi kursor

Menghapus Karakter

Berikut adalah daftar perintah penting, yang dapat digunakan untuk menghapus karakter dan baris dalam file terbuka -

Sr.No. Perintah & Deskripsi
1

x

Menghapus karakter di bawah lokasi kursor

2

X

Menghapus karakter sebelum lokasi kursor

3

dw

Menghapus dari lokasi kursor saat ini ke kata berikutnya

4

d^

Menghapus dari posisi kursor saat ini ke awal baris

5

d$

Menghapus dari posisi kursor saat ini ke akhir baris

6

D

Menghapus dari posisi kursor ke akhir baris saat ini

7

dd

Menghapus garis tempat kursor berada

Seperti disebutkan di atas, sebagian besar perintah di vi dapat diawali dengan berapa kali Anda ingin tindakan tersebut terjadi. Sebagai contoh,2x menghapus dua karakter di bawah lokasi kursor dan 2dd menghapus dua baris tempat kursor berada.

Direkomendasikan agar perintah dipraktekkan sebelum kita melanjutkan lebih jauh.

Ubah Perintah

Anda juga memiliki kemampuan untuk mengubah karakter, kata, atau baris dalam vi tanpa menghapusnya. Berikut adalah perintah yang relevan -

Sr.No. Perintah & Deskripsi
1

cc

Menghapus konten baris, membiarkan Anda dalam mode penyisipan.

2

cw

Mengubah kata tempat kursor berada dari kursor ke huruf kecil w akhir kata.

3

r

Mengganti karakter di bawah kursor. vi kembali ke mode perintah setelah penggantian dimasukkan.

4

R

Menimpa beberapa karakter yang dimulai dengan karakter yang saat ini berada di bawah kursor. Anda harus menggunakanEsc untuk menghentikan penimpaan.

5

s

Mengganti karakter saat ini dengan karakter yang Anda ketik. Setelah itu, Anda dibiarkan dalam mode penyisipan.

6

S

Menghapus garis tempat kursor berada dan menggantinya dengan teks baru. Setelah teks baru dimasukkan, vi tetap dalam mode penyisipan.

Salin dan Tempel Perintah

Anda dapat menyalin baris atau kata dari satu tempat dan kemudian Anda dapat menempelkannya di tempat lain menggunakan perintah berikut -

Sr.No. Perintah & Deskripsi
1

yy

Menyalin baris saat ini.

2

yw

Menyalin kata saat ini dari karakter tempat kursor w huruf kecil berada, sampai akhir kata.

3

p

Menempatkan teks yang disalin setelah kursor.

4

P

Menempatkan teks yang ditarik di depan kursor.

Perintah Lanjutan

Ada beberapa perintah lanjutan yang menyederhanakan pengeditan sehari-hari dan memungkinkan penggunaan vi yang lebih efisien -

Sr.No. Perintah & Deskripsi
1

J

Menggabungkan baris saat ini dengan baris berikutnya. Jumlah perintah j bergabung dengan banyak baris.

2

<<

Menggeser garis saat ini ke kiri dengan satu lebar pergeseran.

3

>>

Menggeser garis saat ini ke kanan dengan satu lebar pergeseran.

4

~

Mengganti kapitalisasi karakter di bawah kursor.

5

^G

Tekan Ctrl dan tombol G secara bersamaan untuk menampilkan nama file saat ini dan statusnya.

6

U

Mengembalikan baris saat ini ke keadaan sebelum kursor memasuki baris.

7

u

Ini membantu membatalkan perubahan terakhir yang dilakukan dalam file. Mengetik 'u' lagi akan melakukan perubahan kembali.

8

J

Menggabungkan baris saat ini dengan baris berikutnya. Sebuah hitungan bergabung dengan banyak baris itu.

9

:f

Menampilkan posisi saat ini dalam file dalam% dan nama file, jumlah total file.

10

:f filename

Ubah nama file saat ini menjadi nama file.

11

:w filename

Menulis ke nama file file.

12

:e filename

Membuka file lain dengan nama file.

13

:cd dirname

Mengubah direktori kerja saat ini menjadi dirname.

14

:e #

Beralih di antara dua file terbuka.

15

:n

Jika Anda membuka banyak file menggunakan vi, gunakan :n untuk pergi ke file berikutnya dalam rangkaian ini.

16

:p

Jika Anda membuka banyak file menggunakan vi, gunakan :p untuk membuka file sebelumnya dalam rangkaian.

17

:N

Jika Anda membuka banyak file menggunakan vi, gunakan :N untuk membuka file sebelumnya dalam rangkaian.

18

:r file

Membaca file dan menyisipkannya setelah baris saat ini.

19

:nr file

Membaca file dan menyisipkannya setelah baris n.

Pencarian Kata dan Karakter

Editor vi memiliki dua jenis pencarian: string dan character. Untuk pencarian string, file/ dan ?perintah digunakan. Saat Anda memulai perintah ini, perintah yang baru saja diketik akan ditampilkan di baris terakhir layar, tempat Anda mengetik string tertentu untuk dicari.

Kedua perintah ini hanya berbeda dalam arah pencarian dilakukan -

  • Itu / perintah mencari ke depan (ke bawah) dalam file.

  • Itu ? perintah mencari mundur (ke atas) dalam file.

Itu n dan Nperintah mengulangi perintah pencarian sebelumnya dalam arah yang sama atau berlawanan, masing-masing. Beberapa karakter memiliki arti khusus. Karakter ini harus diawali dengan garis miring terbalik (\) untuk disertakan sebagai bagian dari ekspresi penelusuran.

Sr.No. Deskripsi karakter
1

^

Pencarian di awal baris (Gunakan di awal ekspresi pencarian).

2

.

Cocok dengan satu karakter.

3

*

Tidak ada yang cocok atau lebih dari karakter sebelumnya.

4

$

Akhir baris (Gunakan di akhir ekspresi pencarian).

5

[

Memulai sekumpulan ekspresi yang cocok atau tidak cocok.

6

<

Ini dimasukkan ke dalam ekspresi melarikan diri dengan garis miring terbalik untuk menemukan akhir atau awal kata.

7

>

Ini membantu melihat '<'deskripsi karakter di atas.

Pencarian karakter mencari dalam satu baris untuk menemukan karakter yang dimasukkan setelah perintah. Ituf dan F perintah mencari karakter pada baris saat ini saja. f mencari ke depan dan F mencari mundur dan kursor berpindah ke posisi karakter yang ditemukan.

Itu t dan T perintah mencari karakter pada baris saat ini saja, tapi untuk t, kursor berpindah ke posisi sebelum karakter, dan T mencari baris mundur ke posisi setelah karakter.

Atur Perintah

Anda dapat mengubah tampilan dan nuansa layar vi Anda menggunakan yang berikut ini :setperintah. Setelah Anda berada dalam mode perintah, ketik:set diikuti oleh salah satu dari perintah berikut.

Sr.No. Perintah & Deskripsi
1

:set ic

Mengabaikan kasus saat mencari

2

:set ai

Setel autoindent

3

:set noai

Tidak menyetel autoindent

4

:set nu

Menampilkan baris dengan nomor baris di sisi kiri

5

:set sw

Menyetel lebar tabstop perangkat lunak. Misalnya, Anda akan menetapkan lebar pergeseran 4 dengan perintah ini -:set sw = 4

6

:set ws

Jika wrapscan disetel, dan kata tidak ditemukan di bagian bawah file, ia akan mencoba mencarinya di awal

7

:set wm

Jika opsi ini memiliki nilai lebih dari nol, editor secara otomatis akan "membungkus kata". Misalnya, untuk mengatur margin bungkus menjadi dua karakter, Anda akan mengetik ini::set wm = 2

8

:set ro

Mengubah jenis file menjadi "hanya baca"

9

:set term

Mencetak tipe terminal

10

:set bf

Buang karakter kontrol dari input

Menjalankan Perintah

Vi memiliki kemampuan untuk menjalankan perintah dari dalam editor. Untuk menjalankan perintah, Anda hanya perlu masuk ke mode dan ketik perintah:! perintah.

Misalnya, jika Anda ingin memeriksa apakah suatu file ada sebelum Anda mencoba menyimpan file Anda dengan nama file itu, Anda dapat mengetik :! ls dan Anda akan melihat hasil ls di layar.

Anda dapat menekan sembarang tombol (atau urutan escape perintah) untuk kembali ke sesi vi Anda.

Mengganti Teks

Perintah substitusi (:s/) memungkinkan Anda dengan cepat mengganti kata atau kelompok kata dalam file Anda. Berikut ini adalah sintaks untuk mengganti teks -

:s/search/replace/g

Itu gsingkatan global. Hasil dari perintah ini adalah semua kejadian pada baris kursor diubah.

Poin Penting untuk Dicatat

Poin-poin berikut akan menambah kesuksesan Anda dengan vi -

  • Anda harus berada dalam mode perintah untuk menggunakan perintah. (Tekan Esc dua kali setiap saat untuk memastikan bahwa Anda berada dalam mode perintah.)

  • Anda harus berhati-hati dengan perintah. Ini peka huruf besar / kecil.

  • Anda harus berada dalam mode sisipkan untuk memasukkan teks.

SEBUAH Shellmemberi Anda antarmuka ke sistem Unix. Ini mengumpulkan masukan dari Anda dan menjalankan program berdasarkan masukan itu. Ketika sebuah program selesai dieksekusi, itu akan menampilkan keluaran program itu.

Shell adalah lingkungan tempat kita dapat menjalankan perintah, program, dan skrip shell. Ada beberapa jenis shell yang berbeda, sama seperti jenis sistem operasi yang berbeda. Setiap cangkang memiliki rangkaian perintah dan fungsinya sendiri yang dikenali.

Shell Prompt

Prompt, $, yang disebut command prompt, dikeluarkan oleh cangkang. Saat prompt ditampilkan, Anda dapat mengetikkan perintah.

Shell membaca masukan Anda setelah Anda menekan Enter. Ini menentukan perintah yang ingin Anda jalankan dengan melihat kata pertama dari masukan Anda. Kata adalah sekumpulan karakter yang tidak terputus. Spasi dan tab memisahkan kata.

Berikut adalah contoh sederhana dari date perintah, yang menampilkan tanggal dan waktu saat ini -

$date
Thu Jun 25 08:30:19 MST 2009

Anda dapat menyesuaikan prompt perintah Anda menggunakan variabel lingkungan PS1 yang dijelaskan di tutorial Lingkungan.

Jenis Shell

Di Unix, ada dua jenis shell utama -

  • Bourne shell - Jika Anda menggunakan shell tipe Bourne, file $ karakter adalah prompt default.

  • C shell - Jika Anda menggunakan shell tipe-C, karakter% adalah prompt default.

Bourne Shell memiliki subkategori berikut -

  • Bourne shell (sh)
  • Korn shell (ksh)
  • Bourne Again shell (pesta)
  • POSIX shell (sh)

Cangkang tipe C yang berbeda mengikuti -

  • C shell (csh)
  • TENEX / TOPS C shell (tcsh)

Shell Unix asli ditulis pada pertengahan 1970-an oleh Stephen R. Bourne saat dia berada di AT&T Bell Labs di New Jersey.

Bourne shell adalah shell pertama yang muncul di sistem Unix, oleh karena itu ia disebut sebagai "shell".

Bourne shell biasanya dipasang sebagai /bin/shdi sebagian besar versi Unix. Untuk alasan ini, shell pilihan untuk menulis skrip yang dapat digunakan pada versi Unix yang berbeda.

Dalam bab ini, kita akan membahas sebagian besar konsep Shell yang didasarkan pada Borne Shell.

Skrip Shell

Konsep dasar skrip shell adalah daftar perintah, yang terdaftar dalam urutan eksekusi. Skrip shell yang baik akan memiliki komentar, didahului oleh# tanda, menjelaskan langkah-langkahnya.

Ada tes bersyarat, seperti nilai A lebih besar dari nilai B, loop memungkinkan kita untuk menelusuri sejumlah besar data, file untuk membaca dan menyimpan data, dan variabel untuk membaca dan menyimpan data, dan skrip mungkin menyertakan fungsi.

Kami akan menulis banyak skrip di bagian selanjutnya. Ini akan menjadi file teks sederhana di mana kita akan meletakkan semua perintah kita dan beberapa konstruksi lain yang diperlukan yang memberi tahu lingkungan shell apa yang harus dilakukan dan kapan harus melakukannya.

Skrip shell dan fungsi keduanya diinterpretasikan. Artinya mereka tidak dikompilasi.

Contoh Script

Asumsikan kita membuat file test.shnaskah. Perhatikan bahwa semua skrip memiliki ekstensi.shperpanjangan. Sebelum Anda menambahkan apa pun ke skrip Anda, Anda perlu memberi tahu sistem bahwa skrip shell sedang dimulai. Ini dilakukan dengan menggunakanshebangmembangun. Misalnya -

#!/bin/sh

Ini memberi tahu sistem bahwa perintah yang mengikuti harus dijalankan oleh shell Bourne. Ini disebut shebang karena#simbol disebut hash, dan! simbol disebut bang .

Untuk membuat skrip yang berisi perintah ini, Anda meletakkan baris shebang terlebih dahulu dan kemudian menambahkan perintah -

#!/bin/bash
pwd
ls

Komentar Shell

Anda dapat meletakkan komentar Anda di skrip Anda sebagai berikut -

#!/bin/bash

# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
pwd
ls

Simpan konten di atas dan buat skrip dapat dieksekusi -

$chmod +x test.sh

Skrip shell sekarang siap untuk dieksekusi -

$./test.sh

Setelah eksekusi, Anda akan menerima hasil berikut -

/home/amrood
index.htm  unix-basic_utilities.htm  unix-directories.htm  
test.sh    unix-communication.htm    unix-environment.htm

Note - Untuk menjalankan program yang tersedia di direktori saat ini, gunakan ./program_name

Skrip Shell yang Diperpanjang

Skrip shell memiliki beberapa konstruksi wajib yang memberi tahu lingkungan shell apa yang harus dilakukan dan kapan melakukannya. Tentu saja, kebanyakan skrip lebih kompleks dari yang di atas.

Shell, bagaimanapun, adalah bahasa pemrograman nyata, lengkap dengan variabel, struktur kontrol, dan sebagainya. Tidak peduli betapa rumitnya sebuah skrip, itu tetap hanya daftar perintah yang dieksekusi secara berurutan.

Skrip berikut menggunakan read perintah yang mengambil input dari keyboard dan menetapkannya sebagai nilai variabel PERSON dan akhirnya mencetaknya di STDOUT.

#!/bin/sh

# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:

echo "What is your name?"
read PERSON
echo "Hello, $PERSON"

Berikut adalah contoh jalannya skrip -

$./test.sh What is your name? Zara Ali Hello, Zara Ali $

Di bab ini, kita akan mempelajari cara menggunakan variabel Shell di Unix. Variabel adalah string karakter yang kita beri nilai. Nilai yang diberikan bisa berupa angka, teks, nama file, perangkat, atau jenis data lainnya.

Variabel tidak lebih dari penunjuk ke data aktual. Shell memungkinkan Anda untuk membuat, menetapkan, dan menghapus variabel.

Nama Variabel

Nama variabel hanya boleh berisi huruf (a hingga z atau A hingga Z), angka (0 hingga 9), atau karakter garis bawah (_).

Secara konvensi, variabel shell Unix akan memiliki namanya dalam UPPERCASE.

Contoh berikut adalah nama variabel yang valid -

_ALI
TOKEN_A
VAR_1
VAR_2

Berikut adalah contoh nama variabel yang tidak valid -

2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!

Alasan Anda tidak dapat menggunakan karakter lain seperti !, *, atau - adalah bahwa karakter tersebut memiliki arti khusus untuk shell.

Mendefinisikan Variabel

Variabel didefinisikan sebagai berikut -

variable_name=variable_value

Misalnya -

NAME="Zara Ali"

Contoh di atas mendefinisikan variabel NAMA dan memberikan nilai "Zara Ali" padanya. Variabel jenis ini disebutscalar variables. Variabel skalar hanya dapat menampung satu nilai dalam satu waktu.

Shell memungkinkan Anda menyimpan nilai apa pun yang Anda inginkan dalam variabel. Misalnya -

VAR1="Zara Ali"
VAR2=100

Mengakses Nilai

Untuk mengakses nilai yang disimpan dalam variabel, awali namanya dengan tanda dolar ($) -

Misalnya, skrip berikut akan mengakses nilai variabel yang ditentukan NAME dan mencetaknya di STDOUT -

#!/bin/sh

NAME="Zara Ali"
echo $NAME

Skrip di atas akan menghasilkan nilai berikut -

Zara Ali

Variabel Hanya-Baca

Shell menyediakan cara untuk menandai variabel sebagai hanya-baca dengan menggunakan perintah hanya-baca. Setelah variabel ditandai hanya-baca, nilainya tidak dapat diubah.

Misalnya, skrip berikut menghasilkan kesalahan saat mencoba mengubah nilai NAME -

#!/bin/sh

NAME="Zara Ali"
readonly NAME
NAME="Qadiri"

Skrip di atas akan menghasilkan hasil sebagai berikut -

/bin/sh: NAME: This variable is read only.

Variabel Tidak Disetel

Membatalkan atau menghapus variabel mengarahkan shell untuk menghapus variabel dari daftar variabel yang dilacaknya. Setelah Anda menghapus variabel, Anda tidak dapat mengakses nilai yang disimpan dalam variabel.

Berikut ini adalah sintaks untuk menghapus variabel yang ditentukan menggunakan unset perintah -

unset variable_name

Perintah di atas membatalkan nilai variabel yang ditentukan. Berikut adalah contoh sederhana yang menunjukkan cara kerja perintah -

#!/bin/sh

NAME="Zara Ali"
unset NAME
echo $NAME

Contoh di atas tidak mencetak apa pun. Anda tidak dapat menggunakan perintah unset tounset variabel yang ditandai readonly.

Jenis Variabel

Saat shell berjalan, ada tiga jenis variabel utama -

  • Local Variables- Variabel lokal adalah variabel yang ada dalam instance shell saat ini. Ini tidak tersedia untuk program yang dimulai oleh shell. Mereka diatur pada prompt perintah.

  • Environment Variables- Variabel lingkungan tersedia untuk semua proses turunan dari shell. Beberapa program membutuhkan variabel lingkungan agar berfungsi dengan benar. Biasanya, skrip shell hanya mendefinisikan variabel lingkungan yang diperlukan oleh program yang dijalankan.

  • Shell Variables- Variabel shell adalah variabel khusus yang ditetapkan oleh shell dan dibutuhkan oleh shell agar dapat berfungsi dengan benar. Beberapa dari variabel ini adalah variabel lingkungan sedangkan yang lainnya adalah variabel lokal.

Pada bab ini, kita akan membahas secara detail tentang variabel khusus di Unix. Di salah satu bab sebelumnya, kita memahami bagaimana berhati-hati saat menggunakan karakter nonalfanumerik tertentu dalam nama variabel. Ini karena karakter tersebut digunakan dalam nama variabel Unix khusus. Variabel ini dicadangkan untuk fungsi tertentu.

Misalnya, file $ karakter mewakili nomor ID proses, atau PID, dari shell saat ini -

$echo $$

Perintah di atas menulis PID dari shell saat ini -

29949

Tabel berikut menunjukkan sejumlah variabel khusus yang dapat Anda gunakan di skrip shell Anda -

Sr.No. Variabel & Deskripsi
1

$0

Nama file dari skrip saat ini.

2

$n

Variabel ini sesuai dengan argumen yang digunakan untuk memanggil skrip. Sinin adalah angka desimal positif yang sesuai dengan posisi argumen (argumen pertama adalah $1, the second argument is $2, dan seterusnya).

3

$#

Jumlah argumen yang diberikan ke skrip.

4

$*

Semua argumen dikutip ganda. Jika skrip menerima dua argumen,$* is equivalent to $1 $ 2.

5

$@

Semua argumen dikutip ganda secara individual. Jika skrip menerima dua argumen,$@ is equivalent to $1 $ 2.

6

$?

Status keluar dari perintah terakhir yang dijalankan.

7

$$

Nomor proses shell saat ini. Untuk skrip shell, ini adalah ID proses yang mereka jalankan.

8

$!

Nomor proses dari perintah latar belakang terakhir.

Argumen Baris Perintah

Argumen baris perintah $1, $2, $3, ...$9 adalah parameter posisi, dengan $0 pointing to the actual command, program, shell script, or function and $1, $2, $3, ... $ 9 sebagai argumen untuk perintah.

Skrip berikut menggunakan berbagai variabel khusus yang terkait dengan baris perintah -

#!/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 : $#"

Berikut adalah contoh yang dijalankan untuk skrip di atas -

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

Parameter Khusus $* and $@

Ada parameter khusus yang memungkinkan mengakses semua argumen baris perintah sekaligus. $* dan $@ keduanya akan bertindak sama kecuali diapit tanda kutip ganda, "".

Kedua parameter tersebut menentukan argumen baris perintah. Namun, "$*" special parameter takes the entire list as one argument with spaces between and the "$@ "parameter khusus mengambil seluruh daftar dan memisahkannya menjadi argumen terpisah.

Kita dapat menulis skrip shell seperti yang ditunjukkan di bawah ini untuk memproses sejumlah argumen baris perintah yang tidak diketahui dengan file $* or $@ parameter khusus -

#!/bin/sh

for TOKEN in $* do echo $TOKEN
done

Berikut adalah contoh yang dijalankan untuk skrip di atas -

$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old

Note - Sini do...done adalah semacam loop yang akan dibahas dalam tutorial berikutnya.

Status Keluar

Itu $? variabel mewakili status keluar dari perintah sebelumnya.

Status keluar adalah nilai numerik yang dikembalikan oleh setiap perintah setelah selesai. Sebagai aturan, sebagian besar perintah mengembalikan status keluar 0 jika berhasil, dan 1 jika tidak berhasil.

Beberapa perintah mengembalikan status keluar tambahan karena alasan tertentu. Misalnya, beberapa perintah membedakan antara jenis kesalahan dan akan mengembalikan berbagai nilai keluar tergantung pada jenis kegagalan tertentu.

Berikut adalah contoh perintah yang berhasil -

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

Pada bab ini, kita akan membahas bagaimana menggunakan array shell di Unix. Variabel shell cukup mampu untuk menyimpan satu nilai. Variabel ini disebut variabel skalar.

Shell mendukung jenis variabel berbeda yang disebut array variable. Ini dapat menampung banyak nilai pada saat yang bersamaan. Array menyediakan metode pengelompokan sekumpulan variabel. Alih-alih membuat nama baru untuk setiap variabel yang diperlukan, Anda dapat menggunakan variabel array tunggal yang menyimpan semua variabel lainnya.

Semua aturan penamaan yang dibahas untuk Variabel Shell akan berlaku saat menamai array.

Mendefinisikan Nilai Array

Perbedaan antara variabel array dan variabel skalar dapat dijelaskan sebagai berikut.

Misalkan Anda mencoba untuk merepresentasikan nama-nama berbagai siswa sebagai satu set variabel. Masing-masing variabel individu adalah variabel skalar sebagai berikut -

NAME01="Zara"
NAME02="Qadir"
NAME03="Mahnaz"
NAME04="Ayan"
NAME05="Daisy"

Kita dapat menggunakan satu larik untuk menyimpan semua nama yang disebutkan di atas. Berikut adalah metode paling sederhana untuk membuat variabel array. Ini membantu menetapkan nilai ke salah satu indeksnya.

array_name[index]=value

Di sini nama_array adalah nama dari larik, indeks adalah indeks item dalam larik yang ingin Anda setel, dan nilai adalah nilai yang ingin Anda tetapkan untuk item itu.

Sebagai contoh, perintah berikut -

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"

Jika Anda menggunakan ksh shell, berikut adalah sintaks dari inisialisasi array -

set -A array_name value1 value2 ... valuen

Jika Anda menggunakan bash shell, berikut adalah sintaks dari inisialisasi array -

array_name=(value1 ... valuen)

Mengakses Nilai Array

Setelah Anda menetapkan variabel array apa pun, Anda mengaksesnya sebagai berikut -

${array_name[index]}

Di sini nama_larik adalah nama dari larik, dan indeks adalah indeks dari nilai yang akan diakses. Berikut adalah contoh untuk memahami konsep -

#!/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]}"

Contoh di atas akan menghasilkan hasil sebagai berikut -

$./test.sh
First Index: Zara
Second Index: Qadir

Anda dapat mengakses semua item dalam array dengan salah satu cara berikut -

${array_name[*]} ${array_name[@]}

Sini array_name adalah nama larik yang Anda minati. Contoh berikut akan membantu Anda memahami konsep -

#!/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[@]}"

Contoh di atas akan menghasilkan hasil sebagai berikut -

$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy

Ada berbagai operator yang didukung oleh setiap shell. Kita akan membahas secara detail tentang Bourne shell (default shell) pada bab ini.

Sekarang kita akan membahas operator berikut -

  • Operator Aritmatika
  • Operator Relasional
  • Operator Boolean
  • Operator String
  • Operator Uji File

Bourne shell awalnya tidak memiliki mekanisme untuk melakukan operasi aritmatika sederhana tetapi menggunakan program eksternal juga awk atau expr.

Contoh berikut menunjukkan cara menambahkan dua angka -

#!/bin/sh

val=`expr 2 + 2`
echo "Total value : $val"

Skrip di atas akan menghasilkan hasil sebagai berikut -

Total value : 4

Poin-poin berikut perlu dipertimbangkan saat menambahkan -

  • Harus ada spasi antara operator dan ekspresi. Misalnya, 2 + 2 tidak benar; itu harus ditulis sebagai 2 + 2.

  • Ekspresi lengkap harus diapit di antara ‘ ‘, disebut backtick.

Operator Aritmatika

Operator aritmatika berikut ini didukung oleh Bourne Shell.

Asumsikan variabel a memegang 10 dan variabel b memegang 20 lalu -

Tunjukkan Contoh

Operator Deskripsi Contoh
+ (Penambahan) Menambahkan nilai di kedua sisi operator `expr $a + $b` akan memberi 30
- (Pengurangan) Mengurangi operan tangan kanan dari operan tangan kiri `expr $a - $b` akan memberikan -10
* (Perkalian) Mengalikan nilai di kedua sisi operator `expr $a \* $b` akan memberi 200
/ (Divisi) Membagi operan tangan kiri dengan operan tangan kanan `expr $b / $a` akan memberi 2
% (Modulus) Membagi operan tangan kiri dengan operan tangan kanan dan mengembalikan sisanya `expr $b % $a` akan memberi 0
= (Tugas) Menetapkan operan kanan di operan kiri a = $ b akan memberikan nilai b menjadi a
== (Persamaan) Membandingkan dua angka, jika keduanya sama maka mengembalikan nilai true. [$ a == $ b] akan mengembalikan nilai salah.
! = (Bukan Kesetaraan) Membandingkan dua angka, jika keduanya berbeda maka mengembalikan nilai benar. [$ a! = $ b] akan mengembalikan nilai true.

Sangat penting untuk dipahami bahwa semua ekspresi kondisional harus berada di dalam tanda kurung siku dengan spasi di sekitarnya, misalnya [ $a == $b ] benar sedangkan, [$a==$b] salah.

Semua perhitungan aritmatika dilakukan dengan menggunakan bilangan bulat panjang.

Operator Relasional

Bourne Shell mendukung operator relasional berikut yang dikhususkan untuk nilai numerik. Operator ini tidak bekerja untuk nilai string kecuali nilainya numerik.

Misalnya, operator berikut akan bekerja untuk memeriksa hubungan antara 10 dan 20 serta di antara "10" dan "20" tetapi tidak di antara "sepuluh" dan "dua puluh".

Asumsikan variabel a memegang 10 dan variabel b memegang 20 lalu -

Tunjukkan Contoh

Operator Deskripsi Contoh
-eq Memeriksa apakah nilai dua operan sama atau tidak; jika ya, maka kondisinya menjadi benar. [$ a -eq $ b] tidak benar.
-ne Memeriksa apakah nilai dua operan sama atau tidak; jika nilainya tidak sama, maka kondisinya menjadi benar. [$ a -ne $ b] benar.
-gt Memeriksa apakah nilai operan kiri lebih besar dari nilai operan kanan; jika ya, maka kondisinya menjadi benar. [$ a -gt $ b] tidak benar.
-lt Memeriksa apakah nilai operan kiri kurang dari nilai operan kanan; jika ya, maka kondisinya menjadi benar. [$ a -lt $ b] benar.
-ge Memeriksa apakah nilai operan kiri lebih besar dari atau sama dengan nilai operan kanan; jika ya, maka kondisinya menjadi benar. [$ a -ge $ b] tidak benar.
-le Memeriksa apakah nilai operan kiri kurang dari atau sama dengan nilai operan kanan; jika ya, maka kondisinya menjadi benar. [$ a -le $ b] benar.

Sangat penting untuk dipahami bahwa semua ekspresi kondisional harus ditempatkan di dalam tanda kurung siku dengan spasi di sekitarnya. Sebagai contoh,[ $a <= $b ] benar sedangkan, [$a <= $b] salah.

Operator Boolean

Operator Boolean berikut ini didukung oleh Bourne Shell.

Asumsikan variabel a memegang 10 dan variabel b memegang 20 lalu -

Tunjukkan Contoh

Operator Deskripsi Contoh
! Ini adalah negasi logis. Ini membalikkan kondisi yang sebenarnya menjadi salah dan sebaliknya. [! false] benar.
-o Ini logis OR. Jika salah satu operand benar, maka kondisinya menjadi benar. [$ a -lt 20 -o $ b -gt 100] benar.
-a Ini logis AND. Jika kedua operan bernilai benar, maka kondisinya menjadi benar jika tidak salah. [$ a -lt 20 -a $ b -gt 100] salah.

Operator String

Operator string berikut ini didukung oleh Bourne Shell.

Asumsikan variabel a memegang "abc" dan variabel b memegang "efg" lalu -

Tunjukkan Contoh

Operator Deskripsi Contoh
= Memeriksa apakah nilai dua operan sama atau tidak; jika ya, maka kondisinya menjadi benar. [$ a = $ b] tidak benar.
!= Memeriksa apakah nilai dua operan sama atau tidak; jika nilainya tidak sama maka kondisinya menjadi benar. [$ a! = $ b] benar.
-z Memeriksa apakah ukuran operan string yang diberikan adalah nol; jika panjangnya nol, maka mengembalikan nilai true. [-z $ a] tidak benar.
-n Memeriksa apakah ukuran operan string yang diberikan bukan nol; jika panjangnya bukan nol, maka ia mengembalikan true. [-n $ a] tidak salah.
str Memeriksa apakah strbukan string kosong; jika kosong, maka mengembalikan false. [$ a] tidak salah.

Operator Uji File

Kami memiliki beberapa operator yang dapat digunakan untuk menguji berbagai properti yang terkait dengan file Unix.

Asumsikan variabel file memegang nama file yang ada "test" yang ukurannya 100 byte dan memiliki read, write dan execute izin pada -

Tunjukkan Contoh

Operator Deskripsi Contoh
-b file Memeriksa apakah file adalah file khusus blok; jika ya, maka kondisinya menjadi benar. [-b $ file] salah.
-c file Memeriksa apakah file adalah file khusus karakter; jika ya, maka kondisinya menjadi benar. [-c $ file] salah.
-d file Memeriksa apakah file adalah direktori; jika ya, maka kondisinya menjadi benar. [-d $ file] tidak benar.
-f file Memeriksa apakah file adalah file biasa dibandingkan dengan direktori atau file khusus; jika ya, maka kondisinya menjadi benar. [-f $ file] benar.
-g file Memeriksa apakah file memiliki set bit ID grup (SGID); jika ya, maka kondisinya menjadi benar. [-g $ file] salah.
-k file Memeriksa apakah file memiliki set bit lengket; jika ya, maka kondisinya menjadi benar. [-k $ file] salah.
-p file Memeriksa apakah file adalah pipa bernama; jika ya, maka kondisinya menjadi benar. [-p $ file] salah.
-t file Memeriksa apakah deskriptor file terbuka dan terkait dengan terminal; jika ya, maka kondisinya menjadi benar. [-t $ file] salah.
-u file Memeriksa apakah file memiliki set set User ID (SUID); jika ya, maka kondisinya menjadi benar. [-u $ file] salah.
-r file Memeriksa apakah file dapat dibaca; jika ya, maka kondisinya menjadi benar. [-r $ file] benar.
-w file Memeriksa apakah file dapat ditulis; jika ya, maka kondisinya menjadi benar. [-w $ file] benar.
-x file Memeriksa apakah file dapat dieksekusi; jika ya, maka kondisinya menjadi benar. [-x $ file] benar.
-s file Memeriksa apakah file berukuran lebih besar dari 0; jika ya, maka kondisi menjadi benar. [-s $ file] benar.
-e file Memeriksa apakah file ada; benar meskipun file adalah direktori tetapi ada. [-e $ file] benar.

Operator C Shell

Tautan berikut akan memberi Anda gambaran singkat tentang Operator C Shell -

Operator C Shell

Operator Korn Shell

Tautan berikut membantu Anda memahami Operator Korn Shell -

Operator Korn Shell

Dalam bab ini, kita akan memahami pengambilan keputusan shell di Unix. Saat menulis skrip shell, mungkin ada situasi ketika Anda perlu mengadopsi satu jalur dari dua jalur yang diberikan. Jadi, Anda perlu menggunakan pernyataan bersyarat yang memungkinkan program Anda membuat keputusan yang benar dan melakukan tindakan yang benar.

Unix Shell mendukung pernyataan bersyarat yang digunakan untuk melakukan tindakan berbeda berdasarkan kondisi yang berbeda. Kami sekarang akan memahami dua pernyataan pengambilan keputusan di sini -

  • Itu if...else pernyataan

  • Itu case...esac pernyataan

Pernyataan if ... else

Jika pernyataan lain adalah pernyataan pengambilan keputusan yang berguna yang dapat digunakan untuk memilih opsi dari serangkaian opsi tertentu.

Unix Shell mendukung bentuk berikut ini if…else pernyataan -

  • jika ... pernyataan fi
  • jika ... lain ... pernyataan fi
  • jika ... elif ... lain ... pernyataan fi

Sebagian besar pernyataan if memeriksa hubungan menggunakan operator relasional yang telah dibahas di bab sebelumnya.

Kasus ... Pernyataan esac

Anda dapat menggunakan lebih dari satu if...elifpernyataan untuk melakukan cabang multiway. Namun, ini tidak selalu merupakan solusi terbaik, terutama jika semua cabang bergantung pada nilai variabel tunggal.

Unix Shell mendukung case...esac pernyataan yang menangani situasi ini dengan tepat, dan melakukannya dengan lebih efisien daripada diulang if...elif pernyataan.

Hanya ada satu bentuk case...esac pernyataan yang telah dijelaskan secara rinci di sini -

  • kasus ... pernyataan esac

Itu case...esac Pernyataan di shell Unix sangat mirip dengan switch...case pernyataan yang kami miliki dalam bahasa pemrograman lain seperti C atau C++ dan PERL, dll.

Dalam bab ini, kita akan membahas loop shell di Unix. Sebuah loop adalah alat pemrograman yang hebat yang memungkinkan Anda untuk mengeksekusi sekumpulan perintah berulang kali. Dalam bab ini, kita akan memeriksa jenis loop berikut yang tersedia untuk programmer shell -

  • Loop sementara
  • Perulangan for
  • Sampai loop
  • Loop pemilihan

Anda akan menggunakan loop berbeda berdasarkan situasinya. Misalnya, filewhileloop mengeksekusi perintah yang diberikan sampai kondisi yang diberikan tetap benar; ituuntil loop dijalankan sampai kondisi tertentu menjadi true.

Setelah Anda memiliki praktik pemrograman yang baik, Anda akan mendapatkan keahlian dan dengan demikian, mulailah menggunakan loop yang sesuai berdasarkan situasinya. Sini,while dan for loop tersedia di sebagian besar bahasa pemrograman lain seperti C, C++ dan PERL, dll.

Loop Bersarang

Semua loop mendukung konsep bersarang yang berarti Anda dapat meletakkan satu loop di dalam loop lain yang serupa atau berbeda. Penyarangan ini dapat meningkat hingga beberapa kali berdasarkan kebutuhan Anda.

Berikut adalah contoh pembuatan sarang whilelingkaran. Loop lain dapat disarangkan berdasarkan persyaratan pemrograman dengan cara yang serupa -

Bersarang sementara Loops

Anda dapat menggunakan loop sementara sebagai bagian dari badan loop sementara lainnya.

Sintaksis

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

Contoh

Berikut adalah contoh sederhana dari loop bersarang. Mari tambahkan loop hitung mundur lain di dalam loop yang Anda gunakan untuk menghitung sampai sembilan -

#!/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

Ini akan menghasilkan hasil sebagai berikut. Penting untuk diperhatikan caranyaecho -nbekerja di sini. Sini-n memungkinkan gema menghindari pencetakan karakter baris baru.

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

Dalam bab ini, kita akan membahas kontrol loop shell di Unix. Sejauh ini Anda telah melihat cara membuat loop dan bekerja dengan loop untuk menyelesaikan tugas yang berbeda. Terkadang Anda perlu menghentikan satu loop atau melewati iterasi loop.

Dalam bab ini, kita akan belajar mengikuti dua pernyataan yang digunakan untuk mengontrol loop shell-

  • Itu break pernyataan

  • Itu continue pernyataan

Loop tak terbatas

Semua loop memiliki masa hidup yang terbatas dan mereka keluar setelah kondisinya salah atau benar tergantung pada loop.

Sebuah loop dapat berlanjut selamanya jika kondisi yang diperlukan tidak terpenuhi. Perulangan yang mengeksekusi selamanya tanpa menghentikan eksekusi untuk beberapa kali. Untuk alasan ini, loop semacam itu disebut loop tak terbatas.

Contoh

Berikut adalah contoh sederhana yang menggunakan while loop untuk menampilkan angka nol sampai sembilan -

#!/bin/sh

a=10

until [ $a -lt 10 ] do echo $a
   a=`expr $a + 1`
done

Putaran ini berlanjut selamanya karena a selalu greater than atau equal to 10 dan tidak pernah kurang dari 10.

Pernyataan istirahat

Itu breakpernyataan digunakan untuk menghentikan eksekusi seluruh loop, setelah menyelesaikan eksekusi semua baris kode hingga pernyataan break. Ini kemudian turun ke kode setelah akhir loop.

Sintaksis

Pengikut break pernyataan digunakan untuk keluar dari loop -

break

Perintah break juga dapat digunakan untuk keluar dari loop bersarang menggunakan format ini -

break n

Sini n menentukan nth melingkupi loop ke pintu keluar dari.

Contoh

Berikut adalah contoh sederhana yang menunjukkan bahwa perulangan berakhir segera a menjadi 5 -

#!/bin/sh

a=0

while [ $a -lt 10 ]
do
   echo $a if [ $a -eq 5 ]
   then
      break
   fi
   a=`expr $a + 1`
done

Setelah eksekusi, Anda akan menerima hasil berikut -

0
1
2
3
4
5

Berikut adalah contoh sederhana dari loop for bersarang. Skrip ini keluar dari kedua loop jikavar1 equals 2 dan 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

Setelah dieksekusi, Anda akan menerima hasil sebagai berikut. Di loop dalam, Anda memiliki perintah break dengan argumen 2. Ini menunjukkan bahwa jika suatu kondisi terpenuhi, Anda harus keluar dari loop luar dan akhirnya dari loop dalam juga.

1 0
1 5

Pernyataan lanjutkan

Itu continue Pernyataan ini mirip dengan break perintah, kecuali itu menyebabkan iterasi saat ini dari loop untuk keluar, bukan seluruh loop.

Pernyataan ini berguna ketika telah terjadi kesalahan tetapi Anda ingin mencoba menjalankan pengulangan berikutnya.

Sintaksis

continue

Seperti dengan pernyataan break, argumen integer dapat diberikan ke perintah lanjutkan untuk melewati perintah dari loop bersarang.

continue n

Sini n menentukan nth melingkupi loop untuk melanjutkan.

Contoh

Loop berikut menggunakan continue pernyataan yang kembali dari pernyataan lanjutkan dan mulai memproses pernyataan berikutnya -

#!/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

Setelah eksekusi, Anda akan menerima hasil berikut -

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

Apa itu Substitusi?

Shell melakukan substitusi ketika menemukan ekspresi yang berisi satu atau lebih karakter khusus.

Contoh

Di sini, nilai pencetakan variabel diganti dengan nilainya. Waktu yang sama,"\n" diganti dengan baris baru -

#!/bin/sh

a=10
echo -e "Value of a is $a \n"

Anda akan menerima hasil sebagai berikut. Di sini-e opsi memungkinkan interpretasi pelarian garis miring terbalik.

Value of a is 10

Berikut adalah hasil tanpa -e pilihan -

Value of a is 10\n

Berikut adalah urutan escape yang dapat digunakan dalam perintah echo -

Sr.No. Escape & Deskripsi
1

\\

garis miring terbalik

2

\a

alert (BEL)

3

\b

menghapus

4

\c

tekan trailing newline

5

\f

bentuk pakan

6

\n

garis baru

7

\r

Kereta kembali

8

\t

tab horizontal

9

\v

tab vertikal

Anda bisa menggunakan -E opsi untuk menonaktifkan interpretasi pelolosan garis miring terbalik (default).

Anda bisa menggunakan -n opsi untuk menonaktifkan penyisipan baris baru.

Pergantian Perintah

Substitusi perintah adalah mekanisme dimana shell melakukan serangkaian perintah tertentu dan kemudian mengganti keluarannya sebagai pengganti perintah.

Sintaksis

Substitusi perintah dilakukan ketika perintah diberikan sebagai -

`command`

Saat melakukan penggantian perintah, pastikan Anda menggunakan backquote, bukan karakter petik tunggal.

Contoh

Substitusi perintah umumnya digunakan untuk menetapkan keluaran dari perintah ke variabel. Masing-masing contoh berikut menunjukkan substitusi perintah -

#!/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"

Setelah eksekusi, Anda akan menerima hasil berikut -

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

Substitusi Variabel

Substitusi variabel memungkinkan programmer shell untuk memanipulasi nilai variabel berdasarkan statusnya.

Berikut adalah tabel berikut untuk semua kemungkinan substitusi -

Sr.No. Formulir & Deskripsi
1

${var}

Gantikan nilai var .

2

${var:-word}

Jika var adalah null atau unset, word digantivar. Nilai var tidak berubah.

3

${var:=word}

Jika var adalah null atau unset, var disetel ke nilaiword.

4

${var:?message}

Jika var adalah null atau unset, pesan akan dicetak menjadi kesalahan standar. Ini memeriksa bahwa variabel disetel dengan benar.

5

${var:+word}

Jika var disetel, kata diganti dengan var. Nilai var tidak berubah.

Contoh

Berikut adalah contoh untuk menunjukkan berbagai keadaan substitusi di atas -

#!/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}"

Setelah eksekusi, Anda akan menerima hasil berikut -

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

Pada bab ini, kita akan membahas secara rinci tentang mekanisme kutipan Shell. Kami akan mulai dengan membahas karakter meta.

Para Metakarakter

Unix Shell menyediakan berbagai metakarakter yang memiliki arti khusus saat menggunakannya dalam Skrip Shell mana pun dan menyebabkan penghentian kata kecuali dikutip.

Sebagai contoh, ? cocok dengan satu karakter saat membuat daftar file dalam direktori dan file *cocok dengan lebih dari satu karakter. Berikut adalah daftar sebagian besar karakter khusus shell (juga disebut metakarakter) -

* ? [ ] ' " \ $ ; & ( ) | ^ < > new-line space tab

Karakter dapat dikutip (yaitu, dibuat berdiri untuk dirinya sendiri) dengan mendahului dengan a \.

Contoh

Contoh berikut menunjukkan cara mencetak file * atau a ? -

#!/bin/sh

echo Hello; Word

Setelah eksekusi, Anda akan menerima hasil berikut -

Hello
./test.sh: line 2: Word: command not found

shell returned 127

Sekarang mari kita coba menggunakan karakter yang dikutip -

#!/bin/sh

echo Hello\; Word

Setelah eksekusi, Anda akan menerima hasil berikut -

Hello; Word

Itu $ tanda adalah salah satu karakter meta, sehingga harus dikutip untuk menghindari penanganan khusus oleh shell -

#!/bin/sh

echo "I have \$1200"

Setelah eksekusi, Anda akan menerima hasil berikut -

I have $1200

Tabel berikut mencantumkan empat bentuk kutipan -

Sr.No. Mengutip & Deskripsi
1

Single quote

Semua karakter khusus di antara tanda kutip ini kehilangan arti khususnya.

2

Double quote

Sebagian besar karakter khusus di antara tanda kutip ini kehilangan makna khususnya dengan pengecualian ini -

  • $
  • `
  • \$
  • \'
  • \"
  • \\
3

Backslash

Karakter apapun yang mengikuti garis miring terbalik akan kehilangan arti khususnya.

4

Back quote

Apa pun di antara tanda kutip belakang akan diperlakukan sebagai perintah dan akan dieksekusi.

Kutipan Tunggal

Pertimbangkan perintah echo yang berisi banyak karakter shell khusus -

echo <-$1500.**>; (update?) [y|n]

Menempatkan garis miring terbalik di depan setiap karakter khusus itu membosankan dan membuat garis sulit dibaca -

echo \<-\$1500.\*\*\>\; \(update\?\) \[y\|n\]

Ada cara mudah untuk mengutip sekelompok besar karakter. Letakkan satu tanda kutip (') di awal dan di akhir string -

echo '<-$1500.**>; (update?) [y|n]'

Karakter dalam tanda kutip tunggal seperti jika garis miring terbalik di depan setiap karakter. Dengan ini, perintah echo ditampilkan dengan cara yang benar.

Jika kutipan tunggal muncul dalam sebuah string untuk menjadi keluaran, Anda tidak boleh meletakkan seluruh string dalam tanda kutip tunggal, Anda harus mendahului menggunakan garis miring terbalik (\) sebagai berikut -

echo 'It\'s Shell Programming

Kutipan Ganda

Coba jalankan skrip shell berikut. Skrip shell ini menggunakan kutipan tunggal -

VAR=ZARA
echo '$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]'

Setelah eksekusi, Anda akan menerima hasil berikut -

$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]

Ini bukanlah apa yang harus ditampilkan. Jelas bahwa tanda kutip tunggal mencegah substitusi variabel. Jika Anda ingin mengganti nilai variabel dan membuat koma terbalik berfungsi seperti yang diharapkan, maka Anda perlu meletakkan perintah Anda dalam tanda kutip ganda sebagai berikut -

VAR=ZARA
echo "$VAR owes <-\$1500.**>; [ as of (`date +%m/%d`) ]"

Setelah eksekusi, Anda akan menerima hasil berikut -

ZARA owes <-$1500.**>; [ as of (07/02) ]

Tanda kutip ganda menghilangkan arti khusus dari semua karakter kecuali yang berikut -

  • $ untuk substitusi parameter

  • Kutipan belakang untuk substitusi perintah

  • \$ untuk mengaktifkan tanda dolar literal

  • \` untuk mengaktifkan kutipan latar belakang literal

  • \" untuk mengaktifkan tanda kutip ganda tersemat

  • \\ untuk mengaktifkan garis miring terbalik yang disematkan

  • Semua lainnya \ karakter literal (tidak khusus)

Karakter dalam tanda kutip tunggal seperti jika garis miring terbalik di depan setiap karakter. Ini membantu perintah echo ditampilkan dengan benar.

Jika kutipan tunggal muncul dalam sebuah string untuk menjadi keluaran, Anda tidak boleh meletakkan seluruh string dalam tanda kutip tunggal, Anda harus mendahului menggunakan garis miring terbalik (\) sebagai berikut -

echo 'It\'s Shell Programming'

The Backquotes

Menempatkan perintah Shell di antaranya backquotes menjalankan perintah.

Sintaksis

Berikut adalah sintaks sederhana untuk meletakkan Shell apa pun command di antara kutipan latar belakang -

var=`command`

Contoh

Itu date perintah dijalankan dalam contoh berikut dan hasil yang dihasilkan disimpan dalam variabel DATA.

DATE=`date`

echo "Current Date: $DATE"

Setelah eksekusi, Anda akan menerima hasil berikut -

Current Date: Thu Jul  2 05:28:45 MST 2009

Dalam bab ini, kita akan membahas secara rinci tentang pengalihan input / output Shell. Kebanyakan perintah sistem Unix mengambil masukan dari terminal Anda dan mengirimkan keluaran yang dihasilkan kembali ke terminal Anda. Sebuah perintah biasanya membaca inputnya dari input standar, yang secara default merupakan terminal Anda. Demikian pula, perintah biasanya menulis outputnya ke output standar, yang juga merupakan terminal Anda secara default.

Pengalihan Output

Output dari perintah yang biasanya ditujukan untuk output standar dapat dengan mudah dialihkan ke file. Kemampuan ini dikenal sebagai pengalihan keluaran.

Jika notasi> file ditambahkan ke perintah apa pun yang biasanya menulis outputnya ke output standar, output dari perintah itu akan ditulis ke file alih-alih terminal Anda.

Periksa berikut ini who perintah yang mengarahkan kembali keluaran lengkap dari perintah di file pengguna.

$ who > users

Perhatikan bahwa tidak ada keluaran yang muncul di terminal. Ini karena output telah dialihkan dari perangkat output standar default (terminal) ke file yang ditentukan. Anda dapat memeriksa file pengguna untuk konten lengkap -

$ 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
$

Jika sebuah perintah memiliki keluaran yang diarahkan ke sebuah file dan file tersebut sudah berisi beberapa data, data tersebut akan hilang. Perhatikan contoh berikut -

$ echo line 1 > users
$ cat users line 1 $

Anda dapat menggunakan >> operator untuk menambahkan keluaran dalam file yang sudah ada sebagai berikut -

$ echo line 2 >> users $ cat users
line 1
line 2
$

Pengalihan Input

Seperti halnya keluaran dari sebuah perintah dapat diarahkan ke sebuah file, demikian pula masukan dari sebuah perintah dapat dialihkan dari sebuah file. Sebagaigreater-than character > digunakan untuk pengalihan keluaran, file less-than character < digunakan untuk mengarahkan input dari sebuah perintah.

Perintah yang biasanya mengambil masukannya dari masukan standar dapat dialihkan masukannya dari file dengan cara ini. Misalnya, untuk menghitung jumlah baris dalam file yang dibuat pengguna di atas, Anda dapat menjalankan perintah sebagai berikut -

$ wc -l users
2 users
$

Setelah dieksekusi, Anda akan menerima keluaran berikut. Anda dapat menghitung jumlah baris dalam file dengan mengarahkan input standar filewcperintah dari pengguna file -

$ wc -l < users
2
$

Perhatikan bahwa ada perbedaan dalam keluaran yang dihasilkan oleh dua bentuk perintah wc. Dalam kasus pertama, nama pengguna file terdaftar dengan jumlah baris; dalam kasus kedua, tidak.

Dalam kasus pertama, wc mengetahui bahwa ia membaca inputnya dari pengguna file. Dalam kasus kedua, ia hanya mengetahui bahwa ia membaca masukannya dari masukan standar sehingga tidak menampilkan nama file.

Berikut Dokumen

SEBUAH here document digunakan untuk mengarahkan input ke skrip atau program shell interaktif.

Kita dapat menjalankan program interaktif dalam skrip shell tanpa tindakan pengguna dengan menyediakan input yang diperlukan untuk program interaktif, atau skrip shell interaktif.

Bentuk umum untuk a here dokumen adalah -

command << delimiter
document
delimiter

Di sini shell mengartikan file <<operator sebagai instruksi untuk membaca input sampai menemukan baris yang berisi pembatas yang ditentukan. Semua baris masukan hingga baris yang berisi pembatas kemudian dimasukkan ke dalam masukan standar dari perintah.

Pembatas memberi tahu shell bahwa file heredokumen telah selesai. Tanpanya, shell terus membaca input selamanya. Pemisah harus berupa satu kata yang tidak mengandung spasi atau tab.

Berikut adalah masukan untuk perintah tersebut wc -l untuk menghitung jumlah baris -

$wc -l << EOF
   This is a simple lookup program 
	for good (and bad) restaurants
	in Cape Town.
EOF
3
$

Anda bisa menggunakan here document untuk mencetak banyak baris menggunakan skrip Anda sebagai berikut -

#!/bin/sh

cat << EOF
This is a simple lookup program 
for good (and bad) restaurants
in Cape Town.
EOF

Setelah eksekusi, Anda akan menerima hasil berikut -

This is a simple lookup program
for good (and bad) restaurants
in Cape Town.

Skrip berikut menjalankan sesi dengan vi editor teks dan menyimpan masukan dalam file test.txt.

#!/bin/sh

filename=test.txt
vi $filename <<EndOfCommands
i
This file was created automatically from
a shell script
^[
ZZ
EndOfCommands

Jika Anda menjalankan skrip ini dengan vim bertindak sebagai vi, maka Anda mungkin akan melihat output seperti berikut -

$ sh test.sh Vim: Warning: Input is not from a terminal $

Setelah menjalankan skrip, Anda akan melihat yang berikut ditambahkan ke file test.txt -

$ cat test.txt This file was created automatically from a shell script $

Buang hasilnya

Terkadang Anda perlu menjalankan perintah, tetapi Anda tidak ingin hasilnya ditampilkan di layar. Dalam kasus seperti itu, Anda dapat membuang keluaran dengan mengarahkannya ke file/dev/null -

$ command > /dev/null

Berikut perintah adalah nama dari perintah yang ingin Anda jalankan. Berkas/dev/null adalah file khusus yang secara otomatis membuang semua inputnya.

Untuk membuang keluaran perintah dan keluaran kesalahannya, gunakan pengalihan standar untuk mengalihkan STDERR untuk STDOUT -

$ command > /dev/null 2>&1

Sini 2 mewakili STDERR dan 1 mewakili STDOUT. Anda dapat menampilkan pesan ke STDERR dengan mengarahkan STDOUT ke STDERR sebagai berikut -

$ echo message 1>&2

Perintah Pengalihan

Berikut ini adalah daftar lengkap perintah yang dapat Anda gunakan untuk pengalihan -

Sr.No. Perintah & Deskripsi
1

pgm > file

Output dari pgm diarahkan ke file

2

pgm < file

Program pgm membaca masukannya dari file

3

pgm >> file

Output dari pgm ditambahkan ke file

4

n > file

Keluaran dari aliran dengan deskriptor n diarahkan ke file

5

n >> file

Keluaran dari aliran dengan deskriptor n ditambahkan ke file

6

n >& m

Menggabungkan keluaran dari aliran n dengan aliran m

7

n <& m

Gabungkan masukan dari aliran n dengan aliran m

8

<< tag

Input standar berasal dari sini melalui tag berikutnya di awal baris

9

|

Mengambil keluaran dari satu program, atau proses, dan mengirimkannya ke program lain

Perhatikan bahwa deskriptor file 0 biasanya input standar (STDIN), 1 adalah keluaran standar (STDOUT), dan 2 adalah keluaran kesalahan standar (STDERR).

Pada bab ini, kita akan membahas secara detail tentang fungsi shell. Fungsi memungkinkan Anda memecah keseluruhan fungsionalitas skrip menjadi subbagian logis yang lebih kecil, yang kemudian dapat dipanggil untuk melakukan tugas individualnya saat diperlukan.

Menggunakan fungsi untuk melakukan tugas berulang adalah cara terbaik untuk berkreasi code reuse. Ini adalah bagian penting dari prinsip pemrograman berorientasi objek modern.

Fungsi shell mirip dengan subrutin, prosedur, dan fungsi dalam bahasa pemrograman lain.

Membuat Fungsi

Untuk mendeklarasikan suatu fungsi, cukup gunakan sintaks berikut -

function_name () { 
   list of commands
}

Nama fungsi Anda adalah function_name, dan itulah yang akan Anda gunakan untuk memanggilnya dari tempat lain di skrip Anda. Nama fungsi harus diikuti dengan tanda kurung, diikuti dengan daftar perintah yang diapit oleh tanda kurung.

Contoh

Contoh berikut menunjukkan penggunaan fungsi -

#!/bin/sh

# Define your function here
Hello () {
   echo "Hello World"
}

# Invoke your function
Hello

Setelah dieksekusi, Anda akan menerima output berikut -

$./test.sh
Hello World

Meneruskan Parameter ke Fungsi

Anda dapat menentukan fungsi yang akan menerima parameter saat memanggil fungsi tersebut. Parameter ini akan diwakili oleh$1, $2 dan seterusnya.

Berikut adalah contoh di mana kami melewatkan dua parameter Zara dan Ali dan kemudian kami menangkap dan mencetak parameter ini dalam fungsi.

#!/bin/sh

# Define your function here
Hello () {
   echo "Hello World $1 $2"
}

# Invoke your function
Hello Zara Ali

Setelah eksekusi, Anda akan menerima hasil berikut -

$./test.sh
Hello World Zara Ali

Mengembalikan Nilai dari Fungsi

Jika Anda menjalankan file exit perintah dari dalam suatu fungsi, efeknya tidak hanya untuk menghentikan eksekusi fungsi tetapi juga program shell yang memanggil fungsi tersebut.

Jika Anda hanya ingin menghentikan eksekusi fungsi, maka ada cara untuk keluar dari fungsi yang ditentukan.

Berdasarkan situasinya, Anda dapat mengembalikan nilai apa pun dari fungsi Anda menggunakan return perintah yang sintaksnya sebagai berikut -

return code

Sini code bisa apa saja yang Anda pilih di sini, tetapi jelas Anda harus memilih sesuatu yang bermakna atau berguna dalam konteks skrip Anda secara keseluruhan.

Contoh

Fungsi berikut mengembalikan nilai 10 -

#!/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"

Setelah eksekusi, Anda akan menerima hasil berikut -

$./test.sh
Hello World Zara Ali
Return value is 10

Fungsi Bersarang

Salah satu fitur yang lebih menarik dari fungsi adalah mereka dapat memanggil dirinya sendiri dan juga fungsi lainnya. Fungsi yang memanggil dirinya sendiri dikenal sebagai arecursive function.

Contoh berikut menunjukkan penumpukan dua fungsi -

#!/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

Setelah eksekusi, Anda akan menerima hasil berikut -

This is the first function speaking...
This is now the second function speaking...

Panggilan Fungsi dari Prompt

Anda dapat meletakkan definisi untuk fungsi yang umum digunakan di dalam file .profile. Definisi ini akan tersedia setiap kali Anda masuk dan Anda dapat menggunakannya pada prompt perintah.

Atau, Anda dapat mengelompokkan definisi dalam sebuah file, misalnya test.sh, lalu jalankan file di shell saat ini dengan mengetik -

$. test.sh

Ini memiliki efek menyebabkan fungsi yang ditentukan di dalam test.sh untuk dibaca dan didefinisikan ke shell saat ini sebagai berikut -

$ number_one
This is the first function speaking...
This is now the second function speaking...
$

Untuk menghapus definisi fungsi dari shell, gunakan perintah unset dengan .fpilihan. Perintah ini juga digunakan untuk menghapus definisi variabel ke shell.

$ unset -f function_name

Semua perintah Unix hadir dengan sejumlah opsi opsional dan wajib. Sangat umum untuk melupakan sintaks lengkap dari perintah ini.

Karena tidak ada yang mungkin dapat mengingat setiap perintah Unix dan semua opsinya, kami memiliki bantuan online yang tersedia untuk mengurangi hal ini sejak Unix berada pada tahap pengembangannya.

Versi Unix dari Help files disebut man pages. Jika ada nama perintah dan Anda tidak yakin bagaimana menggunakannya, maka Halaman Manual membantu Anda dalam setiap langkah.

Sintaksis

Berikut adalah perintah sederhana yang membantu Anda mendapatkan detail dari setiap perintah Unix saat bekerja dengan sistem -

$man command

Contoh

Misalkan ada perintah yang mengharuskan Anda mendapatkan bantuan; berasumsi bahwa Anda ingin tahu tentangpwd maka Anda hanya perlu menggunakan perintah berikut -

$man pwd

Perintah di atas membantu Anda dengan informasi lengkap tentang pwdperintah. Cobalah sendiri di command prompt Anda untuk mendapatkan detail lebih lanjut.

Anda bisa mendapatkan detail lengkap di man perintah itu sendiri menggunakan perintah berikut -

$man man

Bagian Halaman Pria

Halaman manual biasanya dibagi menjadi beberapa bagian, yang biasanya berbeda menurut preferensi penulis halaman manual. Tabel berikut mencantumkan beberapa bagian umum -

Sr.No. Bagian & Deskripsi
1

NAME

Nama perintahnya

2

SYNOPSIS

Parameter penggunaan umum dari perintah tersebut

3

DESCRIPTION

Menjelaskan fungsi perintah

4

OPTIONS

Menjelaskan semua argumen atau opsi ke perintah

5

SEE ALSO

Mencantumkan perintah lain yang terkait langsung dengan perintah di halaman manual atau sangat mirip dengan fungsinya

6

BUGS

Menjelaskan masalah atau bug yang diketahui yang ada dengan perintah atau keluarannya

7

EXAMPLES

Contoh penggunaan umum yang memberi pembaca gambaran tentang bagaimana perintah dapat digunakan

8

AUTHORS

Penulis halaman manual / perintah

Singkatnya, halaman manual adalah sumber daya penting dan jalan pertama penelitian ketika Anda membutuhkan informasi tentang perintah atau file dalam sistem Unix.

Perintah Shell yang Berguna

Tautan berikut memberi Anda daftar perintah Unix Shell yang paling penting dan paling sering digunakan.

Jika Anda tidak tahu cara menggunakan perintah apa pun, gunakan halaman manual untuk mendapatkan detail lengkap tentang perintah tersebut.

Berikut adalah daftar Unix Shell - Perintah Berguna

Pada bab ini, kita akan membahas secara detail tentang ekspresi reguler dengan SED di Unix.

Ekspresi reguler adalah string yang dapat digunakan untuk menggambarkan beberapa urutan karakter. Ekspresi reguler digunakan oleh beberapa perintah Unix yang berbeda, termasuked, sed, awk, grep, dan pada tingkat yang lebih terbatas, vi.

Sini SED berdiri untuk stream editor. Editor berorientasi aliran ini dibuat secara eksklusif untuk menjalankan skrip. Dengan demikian, semua masukan yang Anda masukkan ke dalamnya melewati dan menuju ke STDOUT dan itu tidak mengubah file masukan.

Memanggil sed

Sebelum kita mulai, mari kita pastikan kita memiliki salinan lokal /etc/passwd file teks untuk dikerjakan sed.

Seperti disebutkan sebelumnya, sed dapat dipanggil dengan mengirimkan data melalui pipa ke sana sebagai berikut -

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

Itu cat perintah membuang konten /etc/passwd untuk sedmelalui pipa ke dalam ruang pola sed. Ruang pola adalah buffer kerja internal yang digunakan sed untuk operasinya.

Sintaks Umum sed

Berikut ini adalah sintaks umum untuk sed -

/pattern/action

Sini, pattern adalah ekspresi reguler, dan actionadalah salah satu perintah yang diberikan dalam tabel berikut. Jikapattern dihilangkan, action dilakukan untuk setiap baris seperti yang telah kita lihat di atas.

Karakter garis miring (/) yang mengelilingi pola diperlukan karena digunakan sebagai pembatas.

Sr.No. Rentang & Deskripsi
1

p

Mencetak garis

2

d

Menghapus garis

3

s/pattern1/pattern2/

Gantikan kemunculan pertama pola1 dengan pola2

Menghapus Semua Baris dengan sed

Kami sekarang akan memahami cara menghapus semua baris dengan sed. Panggil sed lagi; tapi sed sekarang seharusnya menggunakanediting command delete line, dilambangkan dengan satu huruf d -

$ cat /etc/passwd | sed 'd' $

Alih-alih memanggil sed dengan mengirimkan file ke dalamnya melalui pipa, sed dapat diinstruksikan untuk membaca data dari file, seperti pada contoh berikut.

Perintah berikut melakukan hal yang persis sama seperti pada contoh sebelumnya, tanpa perintah cat -

$ sed -e 'd' /etc/passwd $

Alamat sed

Sed juga mendukung alamat. Alamat adalah lokasi tertentu dalam file atau rentang tempat perintah pengeditan tertentu harus diterapkan. Ketika sed tidak menemukan alamat, ia melakukan operasinya pada setiap baris dalam file.

Perintah berikut menambahkan alamat dasar ke perintah sed yang telah Anda gunakan -

$ 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 $

Perhatikan bahwa angka 1 ditambahkan sebelum delete editperintah. Ini menginstruksikan sed untuk melakukan perintah pengeditan pada baris pertama file. Dalam contoh ini, sed akan menghapus baris pertama/etc/password dan mencetak sisa file.

Rentang Alamat sed

Kami sekarang akan memahami cara bekerja dengan the sed address ranges. Jadi bagaimana jika Anda ingin menghapus lebih dari satu baris dari sebuah file? Anda dapat menentukan rentang alamat dengan sed sebagai berikut -

$ 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 $

Perintah di atas akan diterapkan pada semua baris mulai dari 1 hingga 5. Ini menghapus lima baris pertama.

Coba rentang alamat berikut -

Sr.No. Rentang & Deskripsi
1

'4,10d'

Garis mulai dari 4 th sampai 10 th dihapus

2

'10,4d'

Hanya baris ke- 10 yang dihapus, karena sed tidak bekerja pada arah sebaliknya

3

'4,+5d'

Ini cocok dengan baris 4 di file, menghapus baris itu, terus menghapus lima baris berikutnya, dan kemudian menghentikan penghapusannya dan mencetak sisanya

4

'2,5!d'

Ini menghapus semuanya kecuali mulai dari 2 nd sampai 5 th baris

5

'1~3d'

Ini menghapus baris pertama, melewati tiga baris berikutnya, dan kemudian menghapus baris keempat. Sed terus menerapkan pola ini hingga akhir file.

6

'2~2d'

Ini memberitahu sed untuk menghapus baris kedua, melangkahi baris berikutnya, menghapus baris berikutnya, dan ulangi sampai akhir file tercapai.

7

'4,10p'

Garis mulai dari 4 th sampai 10 th dicetak

8

'4,d'

Ini menghasilkan kesalahan sintaks

9

',10d'

Ini juga akan menghasilkan kesalahan sintaks

Note - Saat menggunakan p tindakan, Anda harus menggunakan -npilihan untuk menghindari pengulangan pencetakan garis. Periksa perbedaan antara dua perintah berikut -

$ cat /etc/passwd | sed -n '1,3p' Check the above command without -n as follows − $ cat /etc/passwd | sed '1,3p'

Perintah Substitusi

Perintah substitusi, dilambangkan dengan s, akan menggantikan string apa pun yang Anda tentukan dengan string lain yang Anda tentukan.

Untuk mengganti satu string dengan yang lain, sed perlu memiliki informasi di mana string pertama berakhir dan string substitusi dimulai. Untuk ini, kami melanjutkan dengan memesan dua senar dengan garis miring ke depan (/) karakter.

Perintah berikut menggantikan kemunculan pertama pada baris string root dengan benang 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
..........................

Sangat penting untuk dicatat bahwa sed hanya menggantikan kemunculan pertama pada sebuah baris. Jika akar string muncul lebih dari sekali dalam satu baris, hanya kecocokan pertama yang akan diganti.

Agar sed melakukan substitusi global, tambahkan huruf tersebut g ke akhir perintah sebagai berikut -

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

Bendera Substitusi

Ada sejumlah flag berguna lainnya yang bisa diteruskan selain g bendera, dan Anda dapat menentukan lebih dari satu pada satu waktu.

Sr.No. Bendera & Deskripsi
1

g

Mengganti semua pertandingan, bukan hanya pertandingan pertama

2

NUMBER

Hanya menggantikan pertandingan ke- NUMBER

3

p

Jika dilakukan substitusi, maka pola ruang dicetak

4

w FILENAME

Jika substitusi dibuat, maka tulis hasilnya ke FILENAME

5

I or i

Cocok dengan cara tidak peka huruf besar / kecil

6

M or m

Selain perilaku normal karakter ekspresi reguler khusus ^ dan $, this flag causes ^ to match the empty string after a newline and $ untuk mencocokkan string kosong sebelum baris baru

Menggunakan Pemisah String Alternatif

Misalkan Anda harus melakukan substitusi pada string yang menyertakan karakter garis miring. Dalam kasus ini, Anda dapat menentukan pemisah yang berbeda dengan memberikan karakter yang ditentukan setelahs.

$ 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

Dalam contoh di atas, kami telah menggunakan : sebagai delimiter alih-alih garis miring / karena kami mencoba menelusuri /root alih-alih root sederhana.

Mengganti dengan Empty Space

Gunakan string substitusi kosong untuk menghapus string root dari /etc/passwd file seluruhnya -

$ cat /etc/passwd | sed 's/root//g'
:x:0:0::/:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh

Alamat Substitusi

Jika Anda ingin mengganti string sh dengan benang quiet hanya di baris 10, Anda dapat menentukannya sebagai berikut -

$ 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

Demikian pula, untuk melakukan substitusi rentang alamat, Anda dapat melakukan sesuatu seperti berikut -

$ 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

Seperti yang Anda lihat dari output, lima baris pertama memiliki string sh diubah menjadi quiet, tapi garis lainnya tidak tersentuh.

Perintah Pencocokan

Anda akan menggunakan p opsi bersama dengan -n pilihan untuk mencetak semua baris yang cocok sebagai berikut -

$ 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

Menggunakan Ekspresi Reguler

Saat mencocokkan pola, Anda dapat menggunakan ekspresi reguler yang memberikan lebih banyak fleksibilitas.

Periksa contoh berikut yang cocok dengan semua baris yang dimulai dengan daemon dan kemudian menghapusnya -

$ 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

Berikut adalah contoh yang menghapus semua baris yang diakhiri dengan sh -

$ cat testing | sed '/sh$/d'
sync:x:4:65534:sync:/bin:/bin/sync

Tabel berikut mencantumkan empat karakter khusus yang sangat berguna dalam ekspresi reguler.

Sr.No. Deskripsi karakter
1

^

Cocok dengan awal baris

2

$

Cocok dengan akhir baris

3

.

Cocok dengan salah satu karakter

4

*

Mencocokkan nol atau lebih kemunculan karakter sebelumnya

5

[chars]

Cocok dengan salah satu karakter yang diberikan dalam karakter, di mana karakter adalah urutan karakter. Anda dapat menggunakan - karakter untuk menunjukkan serangkaian karakter.

Karakter yang Cocok

Lihat beberapa ekspresi lagi untuk memperagakan penggunaannya metacharacters. Misalnya, pola berikut -

Sr.No. Ekspresi & Deskripsi
1

/a.c/

Cocok dengan baris yang berisi string seperti a+c, a-c, abc, match, dan a3c

2

/a*c/

Cocok dengan string yang sama bersama dengan string seperti ace, yacc, dan arctic

3

/[tT]he/

Cocok dengan string The dan the

4

/^$/

Cocok dengan baris kosong

5

/^.*$/

Mencocokkan seluruh baris apa pun itu

6

/ */

Cocok dengan satu atau lebih spasi

7

/^$/

Cocok blank garis

Tabel berikut menunjukkan beberapa set karakter yang sering digunakan -

Sr.No. Set & Deskripsi
1

[a-z]

Cocok dengan satu huruf kecil

2

[A-Z]

Cocok dengan satu huruf besar

3

[a-zA-Z]

Cocok dengan satu huruf

4

[0-9]

Cocok dengan satu nomor

5

[a-zA-Z0-9]

Cocok dengan satu huruf atau angka

Kata Kunci Kelas Karakter

Beberapa kata kunci khusus biasanya tersedia untuk regexps, terutama utilitas GNU yang menggunakan regexps. Ini sangat berguna untuk ekspresi reguler sed karena mereka menyederhanakan dan meningkatkan keterbacaan.

Misalnya karakter a through z dan karakternya A through Z, Merupakan salah satu kelas karakter yang memiliki kata kunci [[:alpha:]]

Menggunakan kata kunci kelas karakter alfabet, perintah ini hanya mencetak baris di /etc/syslog.conf file yang dimulai dengan huruf alfabet -

$ 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

Tabel berikut adalah daftar lengkap dari kata kunci kelas karakter yang tersedia di GNU sed.

Sr.No. Kelas Karakter & Deskripsi
1

[[:alnum:]]

Alfanumerik [az AZ 0-9]

2

[[:alpha:]]

Alfabet [az AZ]

3

[[:blank:]]

Karakter kosong (spasi atau tab)

4

[[:cntrl:]]

Kontrol karakter

5

[[:digit:]]

Angka [0-9]

6

[[:graph:]]

Semua karakter yang terlihat (tidak termasuk spasi)

7

[[:lower:]]

Huruf kecil [az]

8

[[:print:]]

Karakter yang dapat dicetak (karakter non-kontrol)

9

[[:punct:]]

Karakter tanda baca

10

[[:space:]]

Spasi Putih

11

[[:upper:]]

Huruf besar [AZ]

12

[[:xdigit:]]

Digit hex [0-9 af AF]

Aampersand Referensi

Itu sed metacharacter &mewakili isi pola yang cocok. Misalnya, Anda memiliki file bernamaphone.txt penuh dengan nomor telepon, seperti berikut -

5555551212
5555551213
5555551214
6665551215
6665551216
7775551217

Anda ingin membuat file area code(tiga digit pertama) diapit tanda kurung agar lebih mudah dibaca. Untuk melakukan ini, Anda dapat menggunakan karakter pengganti ampersand -

$ sed -e 's/^[[:digit:]][[:digit:]][[:digit:]]/(&)/g' phone.txt
(555)5551212
(555)5551213
(555)5551214
(666)5551215

(666)5551216
(777)5551217

Di sini, di bagian pola Anda mencocokkan 3 digit pertama dan kemudian menggunakan & Anda mengganti 3 digit itu dengan sekitarnya parentheses.

Menggunakan Beberapa Perintah sed

Anda dapat menggunakan beberapa perintah sed dalam satu perintah sed sebagai berikut -

$ sed -e 'command1' -e 'command2' ... -e 'commandN' files

Sini command1 melalui commandNadalah perintah sed dari tipe yang dibahas sebelumnya. Perintah ini diterapkan ke setiap baris dalam daftar file yang diberikan oleh file.

Dengan menggunakan mekanisme yang sama, kita dapat menuliskan contoh nomor telepon di atas sebagai berikut -

$ 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 - Pada contoh di atas, alih-alih mengulang kata kunci kelas karakter [[:digit:]] tiga kali, kami menggantinya dengan \{3\}, yang berarti persamaan reguler sebelumnya dicocokkan tiga kali. Kami juga telah menggunakan\ untuk memberikan jeda baris dan ini harus dihapus sebelum perintah dijalankan.

Referensi Belakang

Itu ampersand metacharacterberguna, tetapi yang lebih berguna adalah kemampuan untuk menentukan kawasan tertentu dalam ekspresi reguler. Wilayah khusus ini dapat digunakan sebagai referensi dalam string pengganti Anda. Dengan menentukan bagian tertentu dari ekspresi reguler, Anda kemudian dapat merujuk kembali ke bagian tersebut dengan karakter referensi khusus.

Melakukan back references, Anda harus menentukan wilayah terlebih dahulu, lalu merujuk kembali ke wilayah tersebut. Untuk menentukan wilayah, Anda menyisipkanbackslashed parenthesesdi sekitar setiap wilayah yang diminati. Wilayah pertama yang Anda kelilingi dengan garis miring terbalik kemudian direferensikan oleh\1, wilayah kedua oleh \2, dan seterusnya.

Asumsi phone.txt memiliki teks berikut -

(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(666)555-1216
(777)555-1217

Coba perintah berikut -

$ 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 - Dalam contoh di atas, setiap ekspresi reguler di dalam tanda kurung akan direferensikan oleh \1, \2dan seterusnya. Kami telah menggunakan\untuk memberikan jeda baris di sini. Ini harus dihapus sebelum menjalankan perintah.

Sistem file adalah kumpulan file yang logis di partisi atau disk. Partisi adalah wadah untuk informasi dan dapat menjangkau seluruh hard drive jika diinginkan.

Hard drive Anda dapat memiliki berbagai partisi yang biasanya hanya berisi satu sistem file, seperti satu sistem file yang menampung /file system atau lainnya yang mengandung /home file system.

Satu sistem file per partisi memungkinkan pemeliharaan logis dan pengelolaan sistem file yang berbeda.

Segala sesuatu di Unix dianggap sebagai file, termasuk perangkat fisik seperti DVD-ROM, perangkat USB, dan floppy drive.

Struktur Direktori

Unix menggunakan struktur sistem file hierarki, seperti pohon terbalik, dengan root (/) di dasar sistem file dan semua direktori lain yang menyebar dari sana.

Sistem file Unix adalah kumpulan file dan direktori yang memiliki properti berikut -

  • Ini memiliki direktori root (/) yang berisi file dan direktori lain.

  • Setiap file atau direktori secara unik diidentifikasi dengan namanya, direktori tempatnya berada, dan pengenal unik, biasanya disebut inode.

  • Sesuai ketentuan, direktori root memiliki ekstensi inode jumlah 2 dan lost+found direktori memiliki inode jumlah 3. Nomor inode0 dan 1tidak digunakan. Nomor inode file dapat dilihat dengan menentukan-i option untuk ls command.

  • Itu mandiri. Tidak ada ketergantungan antara satu sistem file dan lainnya.

Direktori memiliki tujuan khusus dan umumnya menyimpan jenis informasi yang sama untuk menemukan file dengan mudah. Berikut adalah direktori yang ada di versi utama Unix -

Sr.No. Direktori & Deskripsi
1

/

Ini adalah direktori root yang seharusnya hanya berisi direktori yang diperlukan di tingkat atas dari struktur file

2

/bin

Di sinilah lokasi file yang dapat dieksekusi. File-file ini tersedia untuk semua pengguna

3

/dev

Ini adalah driver perangkat

4

/etc

Perintah direktori supervisor, file konfigurasi, file konfigurasi disk, daftar pengguna yang valid, grup, ethernet, host, tempat untuk mengirim pesan penting

5

/lib

Berisi file perpustakaan bersama dan terkadang file terkait kernel lainnya

6

/boot

Berisi file untuk boot sistem

7

/home

Berisi direktori beranda untuk pengguna dan akun lain

8

/mnt

Digunakan untuk memasang sistem file sementara lainnya, seperti cdrom dan floppy Untuk CD-ROM mengemudi dan floppy diskette drive, masing-masing

9

/proc

Berisi semua proses yang ditandai sebagai file oleh process number atau informasi lain yang dinamis ke sistem

10

/tmp

Menyimpan file sementara yang digunakan antara boot sistem

11

/usr

Digunakan untuk tujuan lain-lain, dan dapat digunakan oleh banyak pengguna. Termasuk perintah administratif, file bersama, file perpustakaan, dan lain-lain

12

/var

Biasanya berisi file dengan panjang variabel seperti file log dan cetak dan jenis file lainnya yang mungkin berisi jumlah data yang bervariasi

13

/sbin

Berisi file biner (dapat dijalankan), biasanya untuk administrasi sistem. Sebagai contoh,fdisk dan ifconfig utlities

14

/kernel

Berisi file kernel

Menavigasi Sistem File

Sekarang setelah Anda memahami dasar-dasar sistem file, Anda dapat mulai menavigasi ke file yang Anda butuhkan. Perintah berikut digunakan untuk menavigasi sistem -

Sr.No. Perintah & Deskripsi
1

cat filename

Menampilkan nama file

2

cd dirname

Memindahkan Anda ke direktori yang diidentifikasi

3

cp file1 file2

Menyalin satu file / direktori ke lokasi yang ditentukan

4

file filename

Mengidentifikasi jenis file (biner, teks, dll)

5

find filename dir

Menemukan file / direktori

6

head filename

Menampilkan awal file

7

less filename

Menjelajahi file dari akhir atau awal

8

ls dirname

Menunjukkan isi direktori yang ditentukan

9

mkdir dirname

Membuat direktori yang ditentukan

10

more filename

Menjelajahi file dari awal hingga akhir

11

mv file1 file2

Memindahkan lokasi, atau mengganti nama file / direktori

12

pwd

Menunjukkan direktori pengguna saat ini

13

rm filename

Menghapus file

14

rmdir dirname

Menghapus direktori

15

tail filename

Menunjukkan akhir file

16

touch filename

Membuat file kosong atau mengubah file yang sudah ada atau atributnya

17

whereis filename

Menunjukkan lokasi file

18

which filename

Menunjukkan lokasi file jika ada di PATH Anda

Anda dapat menggunakan Bantuan Manpage untuk memeriksa sintaks lengkap untuk setiap perintah yang disebutkan di sini.

Perintah df

Cara pertama untuk mengelola ruang partisi Anda adalah dengan df (disk free)perintah. Perintahdf -k (disk free) menampilkan disk space usage in kilobytes, seperti yang ditunjukkan di bawah ini -

$df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/vzfs 10485760 7836644 2649116 75% / /devices 0 0 0 0% /devices $

Beberapa direktori, seperti /devices, menunjukkan 0 di kolom kbytes, used, dan avail serta 0% untuk kapasitas. Ini adalah sistem file khusus (atau virtual), dan meskipun berada pada disk di bawah /, sistem file itu sendiri tidak menghabiskan ruang disk.

Itu df -kkeluaran umumnya sama pada semua sistem Unix. Inilah yang biasanya termasuk -

Sr.No. Kolom & Deskripsi
1

Filesystem

Nama sistem file fisik

2

kbytes

Total kilobyte ruang yang tersedia di media penyimpanan

3

used

Total kilobyte ruang yang digunakan (menurut file)

4

avail

Total kilobyte tersedia untuk digunakan

5

capacity

Persentase total ruang yang digunakan oleh file

6

Mounted on

Apa sistem file dipasang

Anda bisa menggunakan -h (human readable) option untuk menampilkan keluaran dalam format yang menunjukkan ukuran dalam notasi yang lebih mudah dipahami.

Perintah du

Itu du (disk usage) command memungkinkan Anda menentukan direktori untuk menunjukkan penggunaan ruang disk pada direktori tertentu.

Perintah ini berguna jika Anda ingin menentukan berapa banyak ruang yang diambil direktori tertentu. Perintah berikut menampilkan jumlah blok yang dikonsumsi oleh setiap direktori. Satu blok dapat memakan waktu 512 Byte atau 1 Kilo Byte tergantung pada sistem Anda.

$du /etc 10 /etc/cron.d 126 /etc/default 6 /etc/dfs ... $

Itu -h opsi membuat keluaran lebih mudah dipahami -

$du -h /etc 5k /etc/cron.d 63k /etc/default 3k /etc/dfs ... $

Memasang Sistem File

Sistem file harus dipasang agar dapat digunakan oleh sistem. Untuk melihat apa yang saat ini dipasang (tersedia untuk digunakan) di sistem Anda, gunakan perintah berikut -

$ mount /dev/vzfs on / type reiserfs (rw,usrquota,grpquota) proc on /proc type proc (rw,nodiratime) devpts on /dev/pts type devpts (rw) $

Itu /mntdirektori, menurut konvensi Unix, adalah tempat mount sementara (seperti drive CDROM, drive jaringan jarak jauh, dan drive floppy) berada. Jika Anda perlu memasang sistem file, Anda dapat menggunakan perintah mount dengan sintaks berikut -

mount -t file_system_type device_to_mount directory_to_mount_to

Misalnya, jika Anda ingin memasang file CD-ROM ke direktori /mnt/cdrom, Anda dapat mengetik -

$ mount -t iso9660 /dev/cdrom /mnt/cdrom

Ini mengasumsikan bahwa perangkat CD-ROM Anda dipanggil /dev/cdrom dan Anda ingin memasangnya /mnt/cdrom. Lihat halaman manual mount untuk informasi lebih spesifik atau tipe mount-h di baris perintah untuk informasi bantuan.

Setelah pemasangan, Anda dapat menggunakan perintah cd untuk menavigasi sistem file yang baru tersedia melalui titik pemasangan yang baru saja Anda buat.

Melepas Sistem File

Untuk melepas (menghapus) sistem file dari sistem Anda, gunakan umount perintah dengan mengidentifikasi titik pemasangan atau perangkat.

Sebagai contoh, to unmount cdrom, gunakan perintah berikut -

$ umount /dev/cdrom

Itu mount command memungkinkan Anda untuk mengakses sistem file Anda, tetapi pada kebanyakan sistem Unix modern, file automount function membuat proses ini tidak terlihat oleh pengguna dan tidak memerlukan intervensi.

Kuota Pengguna dan Grup

Kuota pengguna dan grup menyediakan mekanisme di mana jumlah ruang yang digunakan oleh satu pengguna atau semua pengguna dalam grup tertentu dapat dibatasi ke nilai yang ditentukan oleh administrator.

Kuota beroperasi di sekitar dua batas yang memungkinkan pengguna untuk mengambil tindakan jika jumlah ruang atau jumlah blok disk mulai melebihi batas yang ditentukan administrator -

  • Soft Limit - Jika pengguna melebihi batas yang ditentukan, ada masa tenggang yang memungkinkan pengguna mengosongkan sebagian ruang.

  • Hard Limit - Ketika batas keras tercapai, terlepas dari masa tenggang, tidak ada file atau blok lagi yang dapat dialokasikan.

Ada sejumlah perintah untuk mengelola kuota -

Sr.No. Perintah & Deskripsi
1

quota

Menampilkan penggunaan disk dan batas untuk pengguna grup

2

edquota

Ini adalah editor kuota. Kuota pengguna atau grup dapat diedit menggunakan perintah ini

3

quotacheck

Memindai sistem file untuk penggunaan disk, membuat, memeriksa, dan memperbaiki file kuota

4

setquota

Ini adalah editor kuota baris perintah

5

quotaon

Ini mengumumkan ke sistem bahwa kuota disk harus diaktifkan pada satu atau lebih sistem file

6

quotaoff

Ini mengumumkan ke sistem bahwa kuota disk harus dinonaktifkan untuk satu atau lebih sistem file

7

repquota

Ini mencetak ringkasan penggunaan disk dan kuota untuk sistem file yang ditentukan

Anda dapat menggunakan Bantuan Manpage untuk memeriksa sintaks lengkap untuk setiap perintah yang disebutkan di sini.

Pada bab ini, kami akan membahas secara detail tentang administrasi pengguna di Unix.

Ada tiga jenis akun di sistem Unix -

Akun root

Ini juga disebut superuserdan akan memiliki kendali sistem yang lengkap dan tidak terkekang. Pengguna super dapat menjalankan perintah apa pun tanpa batasan apa pun. Pengguna ini harus dianggap sebagai administrator sistem.

Akun sistem

Akun sistem adalah yang diperlukan untuk pengoperasian komponen khusus sistem, misalnya akun email dan sshdakun. Akun ini biasanya diperlukan untuk beberapa fungsi tertentu pada sistem Anda, dan modifikasi apa pun terhadapnya dapat berdampak buruk pada sistem.

Akun pengguna

Akun pengguna menyediakan akses interaktif ke sistem untuk pengguna dan grup pengguna. Pengguna umum biasanya ditugaskan ke akun ini dan biasanya memiliki akses terbatas ke file dan direktori sistem penting.

Unix mendukung konsep Akun Grup yang secara logis mengelompokkan sejumlah akun. Setiap akun akan menjadi bagian dari akun grup lain. Grup Unix memainkan peran penting dalam menangani izin file dan manajemen proses.

Mengelola Pengguna dan Grup

Ada empat file administrasi pengguna utama -

  • /etc/passwd- Menyimpan informasi akun pengguna dan kata sandi. File ini menyimpan sebagian besar informasi tentang akun di sistem Unix.

  • /etc/shadow- Menyimpan kata sandi terenkripsi dari akun yang sesuai. Tidak semua sistem mendukung file ini.

  • /etc/group - File ini berisi informasi grup untuk setiap akun.

  • /etc/gshadow - File ini berisi informasi akun grup aman.

Periksa semua file di atas menggunakan cat perintah.

Tabel berikut mencantumkan perintah yang tersedia di sebagian besar sistem Unix untuk membuat dan mengelola akun dan grup -

Sr.No. Perintah & Deskripsi
1

useradd

Menambahkan akun ke sistem

2

usermod

Mengubah atribut akun

3

userdel

Menghapus akun dari sistem

4

groupadd

Menambahkan grup ke sistem

5

groupmod

Mengubah atribut grup

6

groupdel

Menghapus grup dari sistem

Anda dapat menggunakan Bantuan Manpage untuk memeriksa sintaks lengkap untuk setiap perintah yang disebutkan di sini.

Buat Grup

Kami sekarang akan memahami cara membuat grup. Untuk ini, kami perlu membuat grup sebelum membuat akun apa pun jika tidak, kami dapat menggunakan grup yang ada di sistem kami. Kami memiliki semua grup yang terdaftar/etc/groups mengajukan.

Semua grup default adalah grup khusus akun sistem dan tidak disarankan untuk menggunakannya untuk akun biasa. Jadi, berikut adalah sintaks untuk membuat akun grup baru -

groupadd [-g gid [-o]] [-r] [-f] groupname

Tabel berikut mencantumkan parameter -

Sr.No. Opsi & Deskripsi
1

-g GID

Nilai numerik ID grup

2

-o

Opsi ini mengizinkan untuk menambahkan grup dengan GID non-unik

3

-r

Bendera ini menginstruksikan groupadd untuk menambahkan akun sistem

4

-f

Pilihan ini menyebabkan keluar dengan status sukses, jika grup yang ditentukan sudah ada. Dengan -g, jika GID yang ditentukan sudah ada, GID (unik) lainnya akan dipilih

5

groupname

Nama grup sebenarnya yang akan dibuat

Jika Anda tidak menentukan parameter apa pun, maka sistem akan menggunakan nilai default.

Contoh berikut membuat grup pengembang dengan nilai default, yang sangat dapat diterima oleh sebagian besar administrator.

$ groupadd developers

Ubah Grup

Untuk mengubah grup, gunakan groupmod sintaks -

$ groupmod -n new_modified_group_name old_group_name

Untuk mengubah nama grup pengembang_2 menjadi pengembang, ketik -

$ groupmod -n developer developer_2

Inilah cara Anda mengubah GID keuangan menjadi 545 -

$ groupmod -g 545 developer

Hapus Grup

Kami sekarang akan memahami cara menghapus grup. Untuk menghapus grup yang ada, yang Anda butuhkan hanyalah filegroupdel command dan group name. Untuk menghapus grup keuangan, perintahnya adalah -

$ groupdel developer

Ini hanya menghapus grup, bukan file yang terkait dengan grup itu. File-file tersebut masih dapat diakses oleh pemiliknya.

Buat sebuah akun

Mari kita lihat cara membuat akun baru di sistem Unix Anda. Berikut ini adalah sintaks untuk membuat akun pengguna -

useradd -d homedir -g groupname -m -s shell -u userid accountname

Tabel berikut mencantumkan parameter -

Sr.No. Opsi & Deskripsi
1

-d homedir

Menentukan direktori home untuk akun tersebut

2

-g groupname

Menentukan akun grup untuk akun ini

3

-m

Membuat direktori home jika tidak ada

4

-s shell

Menentukan shell default untuk akun ini

5

-u userid

Anda dapat menentukan id pengguna untuk akun ini

6

accountname

Nama akun sebenarnya yang akan dibuat

Jika Anda tidak menentukan parameter apa pun, maka sistem akan menggunakan nilai default. Ituuseradd perintah memodifikasi /etc/passwd, /etc/shadow, dan /etc/group file dan membuat direktori home.

Berikut adalah contoh pembuatan akun mcmohd, menyetel direktori utamanya ke /home/mcmohd dan grup sebagai developers. Pengguna ini akan memiliki Korn Shell yang ditugaskan padanya.

$ useradd -d /home/mcmohd -g developers -s /bin/ksh mcmohd

Sebelum mengeluarkan perintah di atas, pastikan Anda sudah memiliki grup pengembang yang dibuat menggunakangroupadd perintah.

Setelah akun dibuat, Anda dapat mengatur kata sandinya menggunakan passwd perintah sebagai berikut -

$ passwd mcmohd20
Changing password for user mcmohd20.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

Saat Anda mengetik passwd accountname, ini memberi Anda opsi untuk mengubah kata sandi, asalkan Anda adalah pengguna super. Jika tidak, Anda dapat mengubah hanya kata sandi Anda menggunakan perintah yang sama tetapi tanpa menentukan nama akun Anda.

Ubah Akun

Itu usermodperintah memungkinkan Anda untuk membuat perubahan pada akun yang ada dari baris perintah. Ini menggunakan argumen yang sama denganuseradd perintah, ditambah argumen -l, yang memungkinkan Anda mengubah nama akun.

Misalnya untuk mengganti nama akun mcmohd untuk mcmohd20 dan untuk mengubah direktori home yang sesuai, Anda perlu mengeluarkan perintah berikut -

$ usermod -d /home/mcmohd20 -m -l mcmohd mcmohd20

Hapus sebuah Akun

Itu userdelperintah dapat digunakan untuk menghapus pengguna yang sudah ada. Ini adalah perintah yang sangat berbahaya jika tidak digunakan dengan hati-hati.

Hanya ada satu argumen atau opsi yang tersedia untuk perintah tersebut .r, untuk menghapus direktori utama akun dan file email.

Misalnya, untuk menghapus akun mcmohd20 , jalankan perintah berikut -

$ userdel -r mcmohd20

Jika Anda ingin menyimpan direktori home untuk tujuan pencadangan, hilangkan -rpilihan. Anda dapat menghapus direktori home sesuai kebutuhan di lain waktu.

Pada bab ini, kita akan membahas secara detail tentang kinerja sistem di Unix.

Kami akan memperkenalkan Anda pada beberapa alat gratis yang tersedia untuk memantau dan mengelola kinerja pada sistem Unix. Alat ini juga memberikan panduan tentang cara mendiagnosis dan memperbaiki masalah kinerja di lingkungan Unix.

Unix memiliki jenis sumber daya utama berikut yang perlu dipantau dan disetel -

  • CPU

  • Memory

  • Disk space

  • Communications lines

  • I/O Time

  • Network Time

  • Applications programs

Komponen Kinerja

Tabel berikut mencantumkan lima komponen utama yang menghabiskan waktu sistem -

Sr.No. Deskripsi komponen
1

User State CPU

Jumlah waktu aktual yang dihabiskan CPU untuk menjalankan program pengguna di status pengguna. Ini termasuk waktu yang dihabiskan untuk mengeksekusi panggilan perpustakaan, tetapi tidak termasuk waktu yang dihabiskan di kernel atas namanya

2

System State CPU

Ini adalah jumlah waktu yang dihabiskan CPU dalam status sistem atas nama program ini. SemuaI/O routinesmembutuhkan layanan kernel. Programmer dapat mempengaruhi nilai ini dengan memblokir transfer I / O

3

I/O Time and Network Time

Ini adalah jumlah waktu yang dihabiskan untuk memindahkan data dan melayani permintaan I / O

4

Virtual Memory Performance

Ini termasuk pengalihan konteks dan pertukaran

5

Application Program

Waktu yang dihabiskan untuk menjalankan program lain - saat sistem tidak melayani aplikasi ini karena aplikasi lain saat ini memiliki CPU

Alat Kinerja

Unix menyediakan alat penting berikut untuk mengukur dan menyempurnakan kinerja sistem Unix -

Sr.No. Perintah & Deskripsi
1

nice/renice

Menjalankan program dengan prioritas penjadwalan yang dimodifikasi

2

netstat

Mencetak koneksi jaringan, tabel perutean, statistik antarmuka, koneksi masquerade, dan keanggotaan multicast

3

time

Membantu waktu perintah sederhana atau memberikan penggunaan sumber daya

4

uptime

Ini adalah Rata-rata Beban Sistem

5

ps

Melaporkan cuplikan dari proses saat ini

6

vmstat

Melaporkan statistik memori virtual

7

gprof

Menampilkan data profil grafik panggilan

8

prof

Memfasilitasi Proses Profiling

9

top

Menampilkan tugas sistem

Anda dapat menggunakan Bantuan Manpage untuk memeriksa sintaks lengkap untuk setiap perintah yang disebutkan di sini.

Dalam bab ini, kita akan membahas secara rinci tentang logging sistem di Unix.

Sistem Unix memiliki sistem logging yang sangat fleksibel dan kuat, yang memungkinkan Anda merekam hampir semua hal yang dapat Anda bayangkan dan kemudian memanipulasi log untuk mengambil informasi yang Anda butuhkan.

Banyak versi Unix menyediakan fasilitas logging untuk keperluan umum yang disebut syslog. Program individu yang membutuhkan informasi yang dicatat, mengirim informasi ke syslog.

Unix syslog adalah fasilitas logging sistem seragam yang dapat dikonfigurasi host. Sistem menggunakan proses pencatatan sistem terpusat yang menjalankan program/etc/syslogd atau /etc/syslog.

Pengoperasian logger sistem cukup mudah. Program mengirim entri log mereka ke syslogd , yang mencari file konfigurasi/etc/syslogd.conf atau /etc/syslog dan, ketika kecocokan ditemukan, tulis pesan log ke file log yang diinginkan.

Ada empat istilah syslog dasar yang harus Anda pahami -

Sr.No. Istilah & Deskripsi
1

Facility

Pengenal yang digunakan untuk mendeskripsikan aplikasi atau proses yang mengirimkan pesan log. Misalnya, mail, kernel, dan ftp.

2

Priority

Indikator pentingnya pesan. Tingkat didefinisikan dalam syslog sebagai pedoman, dari informasi debug hingga peristiwa penting.

3

Selector

Kombinasi dari satu atau lebih fasilitas dan level. Ketika acara masuk cocok dengan selektor, tindakan dilakukan.

4

Action

Apa yang terjadi pada pesan masuk yang cocok dengan pemilih - Tindakan dapat menulis pesan ke file log, menggemakan pesan ke konsol atau perangkat lain, menulis pesan ke pengguna yang masuk, atau mengirim pesan bersama ke server syslog lain.

Fasilitas Syslog

Sekarang kita akan mengerti tentang fasilitas syslog. Berikut fasilitas yang tersedia untuk selector. Tidak semua fasilitas ada di semua versi Unix.

Fasilitas Deskripsi
1

auth

Aktivitas terkait dengan meminta nama dan kata sandi (getty, su, login)

2

authpriv

Sama seperti auth tetapi masuk ke file yang hanya bisa dibaca oleh pengguna yang dipilih

3

console

Digunakan untuk menangkap pesan yang umumnya diarahkan ke konsol sistem

4

cron

Pesan dari penjadwal sistem cron

5

daemon

Daemon sistem penampung-semua

6

ftp

Pesan-pesan yang berhubungan dengan daemon ftp

7

kern

Pesan kernel

8

local0.local7

Fasilitas lokal ditentukan per situs

9

lpr

Pesan dari sistem pencetakan garis

10

mail

Pesan yang berkaitan dengan sistem email

11

mark

Pseudo-event digunakan untuk menghasilkan cap waktu di file log

12

news

Pesan yang berkaitan dengan protokol berita jaringan (nntp)

13

ntp

Pesan yang berkaitan dengan protokol waktu jaringan

14

user

Proses pengguna biasa

15

uucp

Subsistem UUCP

Prioritas Syslog

Prioritas syslog dirangkum dalam tabel berikut -

Sr.No. Prioritas & Deskripsi
1

emerg

Kondisi darurat, seperti sistem akan segera crash, biasanya disiarkan ke semua pengguna

2

alert

Kondisi yang harus segera diperbaiki, seperti database sistem yang rusak

3

crit

Kondisi kritis, seperti kesalahan perangkat keras

4

err

Kesalahan biasa

5

Warning

Peringatan

6

notice

Kondisi itu bukan kesalahan, tetapi mungkin harus ditangani dengan cara khusus

7

info

Pesan informasional

8

debug

Pesan yang digunakan saat men-debug program

9

none

Tingkat semu digunakan untuk menentukan untuk tidak mencatat pesan

Kombinasi fasilitas dan level memungkinkan Anda untuk memahami tentang apa yang dicatat dan ke mana informasi itu pergi.

Karena setiap program mengirimkan pesannya dengan patuh ke logger sistem, logger membuat keputusan tentang apa yang harus dilacak dan apa yang harus dibuang berdasarkan level yang ditentukan di pemilih.

Saat Anda menentukan level, sistem akan melacak semua yang ada di level itu dan yang lebih tinggi.

File /etc/syslog.conf

Itu /etc/syslog.confkontrol file tempat pesan dicatat. Sebuah tipikalsyslog.conf File mungkin terlihat seperti ini -

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

Setiap baris file berisi dua bagian -

  • SEBUAH message selectoryang menentukan jenis pesan yang akan dicatat. Misalnya, semua pesan kesalahan atau semua pesan debugging dari kernel.

  • Sebuah action fieldyang mengatakan apa yang harus dilakukan dengan pesan tersebut. Misalnya, masukkan ke dalam file atau kirim pesan ke terminal pengguna.

Berikut adalah poin penting untuk konfigurasi di atas -

  • Pemilih pesan memiliki dua bagian: a facility dan a priority. Misalnya, kern.debug memilih semua pesan debug (prioritas) yang dibuat oleh kernel (fasilitas).

  • Pemilih pesan kern.debug memilih semua prioritas yang lebih besar dari debug.

  • Tanda bintang di tempat fasilitas atau prioritas menunjukkan "semua". Sebagai contoh,*.debug berarti semua pesan debug, sementara kern.* berarti semua pesan yang dibuat oleh kernel.

  • Anda juga dapat menggunakan koma untuk menentukan beberapa fasilitas. Dua atau lebih penyeleksi dapat dikelompokkan bersama menggunakan titik koma.

Tindakan Logging

Bidang tindakan menentukan satu dari lima tindakan -

  • Log pesan ke file atau perangkat. Sebagai contoh,/var/log/lpr.log atau /dev/console.

  • Kirim pesan ke pengguna. Anda dapat menentukan beberapa nama pengguna dengan memisahkannya dengan koma; misalnya, root, amrood.

  • Kirim pesan ke semua pengguna. Dalam kasus ini, bidang tindakan terdiri dari tanda bintang; sebagai contoh, *.

  • Menyalurkan pesan ke program. Dalam kasus ini, program ditentukan setelah simbol pipa Unix (|).

  • Kirim pesan ke syslog di host lain. Dalam kasus ini, bidang tindakan terdiri dari nama host, diawali dengan tanda at; misalnya, @ tutorialspoint.com.

Perintah logger

Unix menyediakan loggerperintah, yang merupakan perintah yang sangat berguna untuk menangani logging sistem. Itulogger perintah mengirim pesan logging ke daemon syslogd, dan akibatnya memicu logging sistem.

Ini berarti kita dapat memeriksa dari baris perintah kapan saja syslogddaemon dan konfigurasinya. Perintah logger menyediakan metode untuk menambahkan entri satu baris ke file log sistem dari baris perintah.

Format perintahnya adalah -

logger [-i] [-f file] [-p priority] [-t tag] [message]...

Berikut detail parameternya -

Sr.No. Opsi & Deskripsi
1

-f filename

Menggunakan isi nama file file sebagai pesan untuk log.

2

-i

Log ID proses dari proses logger dengan setiap baris.

3

-p priority

Memasukkan pesan dengan prioritas yang ditentukan (entri pemilih yang ditentukan); prioritas pesan dapat ditentukan secara numerik, atau sebagai pasangan fasilitas.prioritas. Prioritas default adalah user.notice.

4

-t tag

Menandai setiap baris ditambahkan ke log dengan tag tertentu.

5

message

Argumen string yang isinya digabungkan dalam urutan yang ditentukan, dipisahkan oleh spasi.

Anda dapat menggunakan Bantuan Manpage untuk memeriksa sintaks lengkap untuk perintah ini.

Rotasi Log

File log memiliki kecenderungan untuk tumbuh sangat cepat dan menghabiskan banyak ruang disk. Untuk mengaktifkan rotasi log, sebagian besar distribusi menggunakan alat sepertinewsyslog atau logrotate.

Alat-alat ini harus dipanggil pada interval waktu yang sering menggunakan cron daemon. Periksa halaman manual untuk newsyslog atau logrotate untuk lebih jelasnya.

Lokasi Log Penting

Semua aplikasi sistem membuat file log mereka di /var/logdan subdirektorinya. Berikut adalah beberapa aplikasi penting dan direktori log yang sesuai -

Aplikasi Direktori
httpd / var / log / httpd
samba / var / log / samba
cron / var / log /
surat / var / log /
mysql.dll / var / log /

Pada bab ini, kita akan membahas secara detail tentang Sinyal dan Jebakan di Unix.

Sinyal adalah interupsi perangkat lunak yang dikirim ke program untuk menunjukkan bahwa peristiwa penting telah terjadi. Peristiwa dapat bervariasi dari permintaan pengguna hingga kesalahan akses memori ilegal. Beberapa sinyal, seperti sinyal interupsi, menunjukkan bahwa pengguna telah meminta program untuk melakukan sesuatu yang tidak berada dalam aliran kontrol yang biasa.

Tabel berikut mencantumkan sinyal umum yang mungkin Anda temui dan ingin gunakan dalam program Anda -

Nama Sinyal Nomor Sinyal Deskripsi
SIGHUP 1 Hang up terdeteksi pada terminal pengendali atau matinya proses pengendalian
SIGINT 2 Dikeluarkan jika pengguna mengirim sinyal interupsi (Ctrl + C)
SIGQUIT 3 Dikeluarkan jika pengguna mengirim sinyal berhenti (Ctrl + D)
SIGFPE 8 Dikeluarkan jika operasi matematika ilegal dicoba
SIGKILL 9 Jika suatu proses mendapatkan sinyal ini, proses tersebut harus segera berhenti dan tidak akan melakukan operasi pembersihan apa pun
SIGALRM 14 Sinyal jam alarm (digunakan untuk pengatur waktu)
SIGTERM 15 Sinyal penghentian perangkat lunak (dikirim oleh kill secara default)

Daftar Sinyal

Ada cara mudah untuk mencatat semua sinyal yang didukung oleh sistem Anda. Terbitkan sajakill -l perintah dan itu akan menampilkan semua sinyal yang didukung -

$ 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

Daftar sinyal yang sebenarnya berbeda-beda antara Solaris, HP-UX, dan Linux.

Tindakan Default

Setiap sinyal memiliki tindakan default yang terkait dengannya. Tindakan default untuk sinyal adalah tindakan yang dilakukan oleh skrip atau program saat menerima sinyal.

Beberapa kemungkinan tindakan default adalah -

  • Hentikan prosesnya.

  • Abaikan sinyalnya.

  • Buang inti. Ini membuat file bernamacore berisi gambar memori proses saat menerima sinyal.

  • Hentikan prosesnya.

  • Lanjutkan proses yang dihentikan.

Mengirim Sinyal

Ada beberapa metode untuk mengirimkan sinyal ke program atau skrip. Salah satu cara yang paling umum bagi pengguna untuk mengetikCONTROL-C atau INTERRUPT key saat skrip sedang dijalankan.

Saat Anda menekan Ctrl+C kunci, a SIGINT dikirim ke skrip dan sesuai dengan skrip tindakan default yang ditentukan berakhir.

Metode umum lainnya untuk mengirimkan sinyal adalah dengan menggunakan kill command, sintaksnya adalah sebagai berikut -

$ kill -signal pid

Sini signal adalah nomor atau nama sinyal yang akan dikirim dan pidadalah proses ID yang sinyal harus dikirim. Sebagai Contoh -

$ kill -1 1001

Perintah di atas mengirimkan sinyal HUP atau hang-up ke program yang dijalankan process ID 1001. Untuk mengirim sinyal kill ke proses yang sama, gunakan perintah berikut -

$ kill -9 1001

Ini mematikan proses yang sedang berjalan process ID 1001.

Sinyal Perangkap

Ketika Anda menekan Ctrl + C atau tombol Break di terminal Anda selama eksekusi program shell, biasanya program itu segera dihentikan, dan prompt perintah Anda kembali. Ini mungkin tidak selalu diinginkan. Misalnya, Anda mungkin akan meninggalkan banyak file sementara yang tidak bisa dibersihkan.

Menangkap sinyal ini cukup mudah, dan perintah trap memiliki sintaks berikut -

$ trap commands signals

Di sini perintah dapat berupa perintah Unix yang valid, atau bahkan fungsi yang ditentukan pengguna, dan sinyal dapat berupa daftar sejumlah sinyal yang ingin Anda perangkap.

Ada dua kegunaan umum untuk perangkap dalam skrip shell -

  • Bersihkan file sementara
  • Abaikan sinyal

Membersihkan File Sementara

Sebagai contoh dari perintah trap, berikut ini menunjukkan bagaimana Anda dapat menghapus beberapa file dan kemudian keluar jika seseorang mencoba untuk membatalkan program dari terminal -

$ trap "rm -f $WORKDIR/work1$$ $WORKDIR/dataout$$; exit" 2

Dari program shell di mana perangkap ini dijalankan, dua file work1$$ dan dataout$$ akan otomatis terhapus jika sinyal nomor 2 diterima oleh program.

Oleh karena itu, jika pengguna menghentikan eksekusi program setelah jebakan ini dijalankan, Anda dapat yakin bahwa kedua file ini akan dibersihkan. Ituexit perintah yang mengikuti rm diperlukan karena tanpanya, eksekusi akan dilanjutkan dalam program di titik di mana ia berhenti saat sinyal diterima.

Sinyal nomor 1 dibuat untuk hangup. Entah seseorang dengan sengaja menutup sambungan atau sambungan terputus secara tidak sengaja.

Anda dapat memodifikasi perangkap sebelumnya untuk juga menghapus dua file yang ditentukan dalam hal ini dengan menambahkan sinyal nomor 1 ke daftar sinyal -

$ trap "rm $WORKDIR/work1$$ $WORKDIR/dataout$$; exit" 1 2

Sekarang file-file ini akan dihapus jika garis ditutup atau jika tombol Ctrl + C ditekan.

Perintah yang ditentukan untuk trap harus diapit tanda kutip, jika mereka berisi lebih dari satu perintah. Juga perhatikan bahwa shell memindai baris perintah pada saat perintah trap dijalankan dan juga ketika salah satu sinyal terdaftar diterima.

Jadi, dalam contoh sebelumnya, nilai WORKDIR dan $$akan diganti pada saat perintah trap dijalankan. Jika Anda ingin penggantian ini terjadi pada saat sinyal 1 atau 2 diterima, Anda dapat meletakkan perintah di dalam tanda kutip tunggal -

$ trap 'rm $WORKDIR/work1$$ $WORKDIR/dataout$$; exit' 1 2

Mengabaikan Sinyal

Jika perintah yang terdaftar untuk trap adalah null, sinyal yang ditentukan akan diabaikan saat diterima. Misalnya, perintah -

$ trap '' 2

Ini menentukan bahwa sinyal interupsi harus diabaikan. Anda mungkin ingin mengabaikan sinyal tertentu saat melakukan operasi yang tidak ingin Anda ganggu. Anda dapat menentukan beberapa sinyal untuk diabaikan sebagai berikut -

$ trap '' 1 2 3 15

Perhatikan bahwa argumen pertama harus ditentukan agar sinyal diabaikan dan tidak sama dengan menulis berikut ini, yang memiliki arti tersendiri -

$ trap  2

Jika Anda mengabaikan sinyal, semua subkulit juga mengabaikan sinyal itu. Namun, jika Anda menentukan tindakan yang akan diambil saat menerima sinyal, semua subkulit akan tetap mengambil tindakan default saat menerima sinyal tersebut.

Mengatur Ulang Perangkap

Setelah Anda mengubah tindakan default yang akan diambil setelah menerima sinyal, Anda dapat mengubahnya kembali dengan jebakan jika Anda mengabaikan argumen pertama; jadi -

$ trap 1 2

Ini mengatur ulang tindakan yang harus diambil setelah menerima sinyal 1 atau 2 kembali ke default.