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