GNU/Linux >> Belajar Linux >  >> Linux

Tutorial Fungsi Bash Shell dengan 6 Contoh Praktis

Fungsi bash shell adalah cara untuk mengelompokkan beberapa perintah UNIX/Linux untuk eksekusi selanjutnya menggunakan satu nama untuk grup . Fungsi bash shell dapat dijalankan seperti perintah Unix biasa. Fungsi shell dijalankan dalam konteks shell saat ini tanpa membuat proses baru untuk menafsirkannya.

Baik alias bash maupun fungsi memungkinkan Anda untuk menentukan pintasan untuk perintah yang lebih panjang atau lebih rumit. Namun, alias tidak mengizinkan aliran kontrol, argumen, dan hal-hal tipuan lainnya yang diizinkan oleh fungsi ini seperti yang dijelaskan dalam tutorial ini.

Artikel ini adalah bagian dari seri tutorial bash yang sedang berlangsung. Lihat tutorial kami sebelumnya tentang pengenalan bash, status keberadaan bash dan contoh alias bash.

Sintaks untuk membuat fungsi bash:

function functionname()
{
commands
.
.
}
  • fungsi adalah kata kunci yang opsional.
  • nama fungsi adalah nama fungsinya
  • perintah – Daftar perintah yang akan dieksekusi dalam fungsi.

Fungsi menerima argumen. Selama eksekusi, argumen ke fungsi menjadi parameter posisi. Parameter posisi 0 akan memiliki nama skrip yang tetap tidak berubah.

Anda dapat memanggil fungsi bash dari baris perintah seperti yang ditunjukkan di bawah ini:

$ functionname arg1 arg2
  • Saat shell menginterpretasikan perintah Linux, pertama-tama shell akan melihat ke dalam fungsi built-in khusus seperti break, continue, eval, exec dll., kemudian mencari fungsi shell.
  • Status keluar dari fungsi bash adalah status keluar dari perintah terakhir yang dijalankan di badan fungsi.

Catatan: Tempatkan definisi fungsi shell dalam file start up shell (misalnya, .bash_profile ). Dengan cara ini, fungsi shell selalu tersedia untuk Anda dari baris perintah. Lihat artikel urutan eksekusi bash kami sebelumnya untuk mengidentifikasi kapan .bash_profile akan dieksekusi.

Contoh 1:Berfungsi untuk menampilkan daftar panjang file dengan ekstensi yang diberikan

Fungsi "lsext" digunakan untuk menemukan daftar file di direktori saat ini, yang memiliki ekstensi yang diberikan seperti yang ditunjukkan di bawah ini. Fungsi ini menggunakan kombinasi perintah find dan perintah ls untuk menyelesaikan pekerjaan.

$ function lsext()
{
find . -type f -iname '*.'${1}'' -exec ls -l {} \; ;
}

$ cd ~

$ lsext txt
-rw-r--r-- 1 root root   24 Dec 15 14:00 InMorning.txt
-rw-r--r-- 1 root root  184 Dec 16 11:45 Changes16.txt
-rw-r--r-- 1 root root  458 Dec 18 11:04 Changes18.txt
-rw-r--r-- 1 root root 1821 Feb  4 15:01 ChangesOfDB.txt

Contoh 2. Fungsi Bash untuk mengeksekusi perintah Linux yang diberikan pada sekelompok file

Dalam contoh berikut, fungsi “batchexec” menemukan file dengan ekstensi yang diberikan dan menjalankan perintah yang diberikan pada file yang dipilih tersebut.

$ function batchexec()
{
find . -type f -iname '*.'${1}'' -exec ${@:2}  {} \; ;
}

$ cd ~

$ batchexec sh ls

$ batchexec sh chmod 755

$ ls -l *.sh
-rwxr-xr-x 1 root root  144 Mar  9 14:39 debug.sh
-rwxr-xr-x 1 root root 5431 Jan 25 11:32 get_opc_vers.sh
-rwxr-xr-x 1 root root   22 Mar 18 08:32 t.sh

Dalam contoh di atas, ia menemukan semua file skrip shell dengan ekstensi .sh, dan mengubah izinnya menjadi 755. (Semua izin untuk pengguna, untuk grup, dan izin lainnya untuk membaca dan menjalankan). Dalam definisi fungsi, Anda dapat melihat “${@:2}” yang memberikan parameter posisi kedua dan berikutnya (fitur ekspansi shell).

Contoh 3. Fungsi Bash untuk menghasilkan kata sandi acak

Fungsi berikut digunakan untuk menghasilkan kata sandi kuat acak dengan karakter khusus untuk panjang yang diberikan. Jika panjang tidak diberikan secara default, ini menghasilkan panjang 12 karakter.

$ function rpass() {
        cat /dev/urandom | tr -cd '[:graph:]' | head -c ${1:-12}
}

$ rpass 6
-Ju.T[[

$ rpass
Gz1f!aKN^""k

Dalam contoh di atas, ketika rpass dieksekusi dengan argumen 6, itu menghasilkan kata sandi acak dengan 6 karakter dan rpass tanpa argumen menghasilkan kata sandi dengan panjang 12 karakter. ${1:-12} berarti jika $1 tidak disetel atau null 12 akan dikembalikan jika tidak, nilai $1 akan diganti.

Contoh 4. Fungsi Bash untuk mendapatkan alamat IP dari antarmuka yang diberikan

Contoh berikut mendefinisikan fungsi yang disebut 'getip' yang menerima nama antarmuka sebagai argumen, dan memberikan alamat IP yang ditetapkan pada antarmuka yang diberikan di mesin. ( secara default ia mengembalikan alamat ip eth0 ). Ini menggunakan perintah ifconfig untuk mendapatkan alamat ip.

$ function getip()
{
/sbin/ifconfig ${1:-eth0} | awk '/inet addr/ {print $2}' | awk -F: '{print $2}';
}

$ getip
15.110.106.86

$ getip eth0
15.110.106.86

$ getip lo
127.0.0.1

Contoh 5. Bash berfungsi untuk mencetak detail mesin

Contoh ini mendefinisikan fungsi yang memberikan semua informasi yang diperlukan tentang mesin. Pengguna dapat menentukan dan memanggil fungsi ini di file start up, sehingga Anda akan mendapatkan informasi ini selama startup.

$ function mach()
{
    echo -e "\nMachine information:" ; uname -a
    echo -e "\nUsers logged on:" ; w -h
    echo -e "\nCurrent date :" ; date
    echo -e "\nMachine status :" ; uptime
    echo -e "\nMemory status :" ; free
    echo -e "\nFilesystem status :"; df -h
}

$ mach
Machine information:
Linux dev-db 2.6.18-128.el5 #1 SMP Wed Dec 17 11:41:38 EST 2008 x86_64 GNU/Linux

Users logged on:
root     pts/2    ptal.mot Wed10    0.00s  1.35s  0.01s w -h

Current date :
Thu Mar 18 11:59:36 CET 2010

Machine status :
 11:59:36 up 7 days, 3 min,  1 user,  load average: 0.01, 0.15, 0.15

Memory status :
             total       used       free     shared    buffers     cached
Mem:       2059768    2033212      26556          0      81912     797560
-/+ buffers/cache:    1153740     906028
Swap:      4192956      48164    4144792

Filesystem status :
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              12G   12G     0 100% /
tmpfs                1006M  377M  629M  38% /dev/shm
/dev/sdc5             9.9G  409M  9.0G   5% /mydisk

Contoh 6:Fungsi Bash untuk memformat output ls lebih baik

Fungsi berikut akan menghapus layar, menempatkan kursor di bagian atas layar, menjalankan ls, dan kemudian menempatkan kursor di akhir layar.

$ function ll ()
{
    clear;
    tput cup 0 0;
    ls --color=auto -F --color=always -lhFrt;
    tput cup 40 0;
}

$ ll

Tampilkan kode fungsi menggunakan perintah ketik

type adalah shell built-in yang digunakan untuk melihat kode fungsi.

Syntax:
type function-name
$ type ll
ll is a function
ll ()
{
    clear;
    tput cup 0 0;
    ls --color=auto -F --color=always -lhFrt;
    tput cup 40 0;
    alias ls="ls --color=auto -F"
}

Untuk referensi mudah Anda, dapatkan semua 6 fungsi yang disebutkan artikel ini dari contoh file fungsi .bash_profile ini.

Tambahkan semua fungsi ini ke file ~/.bash_profile Anda, untuk memastikan Anda memiliki akses ke fungsi ini setiap saat tanpa harus membuatnya setiap saat.


Linux
  1. Bash Seri Pemula #9:Menggunakan Fungsi di Bash

  2. Tutorial Status Keluar Bash Shell dengan Contoh Praktis

  3. 15 Perintah Bawaan Bash Shell yang Berguna (Dengan Contoh)

  1. Fungsi Dalam Variabel Shell?

  2. Pernyataan Bash If-Else Dengan Contoh

  3. Tutorial Awk:Memahami Variabel Awk dengan 3 Contoh Praktis

  1. Cara Menulis Skrip Bash dengan Contoh

  2. Tutorial Bash Array Terbaik dengan 15 Contoh

  3. Referensi Array Perl dan Tutorial Dereference Dengan Contoh Praktis