Bismillah

Saya akan menjelaskan beberapa tips dan trik dalam menggunakan shell bash yang biasa saya gunakan sehari-hari.

Sebagian orang biasa menggunakan history untuk melihat/mencari command-command sebelumnya yang sudah pernah diinputkan. Atau bahkan menggunakan arrow key atas untuk mencari command yang diinginkan.

Sebenarnya hampir kebanyakan shell memiliki fitur reverse search. Sesuai namanya, fitur ini bisa melakukan pencarian terhadap command yang sebelumya pernah diinputkan.

Bagaimana caranya? Cukup menekan CTRL+R pada terminal. Dan ketikkan kata kunci untuk command yang sedang dicari.

1
2
3
4
(reverse-i-search)`apt': sudo apt install hugo
                    ^    ^
                    |    |- history terakhir yang paling relevan
                    |- keyword

Sintaks Spesial !!, !$ dan !n

Sintaks !!

Pada bash shell (atau shell yang lain juga, mungkin) menrujuk kepada command terakhir yang diinputkan.

Jadi, jika sebelumnya kita menginputkan, misal, perintah echo abc. Lalu pada input berikutnya jika kita memasukkan !! maka, shell akan mengeksekusi kembali perintah echo abc.

1
2
3
4
5
user@host:~$ echo abc
abc
user@host:~$ !!
echo abc    <--- terminal tidak benar-benar mengeluarkan output ini, hanya sebagai penjelasan ekspansi shell saja
abc

Ini sangat berguna ketika kita lupa hendak menambahkan sudo pada suatu command yang panjang. Maka, pada input berikutnya, kita tinggal ketikkan sudo !! tanpa perlu mengetik ulang command sebelumnya.

1
2
3
4
5
6
user@host:~$ apt install -y package1 package2 package3 package4 package5
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
user@host:~$ sudo !!
sudo apt install -y package1 package2 package3 package4 package5
...

Sintaks !$

Sintaks ini merujuk pada positional argument pada command terakhir. Sama seperti contoh sebelumnya, jika echo abc maka ekspansi dari !$ adalah abc.

Kasus penggunaan sintaks ini biasanya saat melakukan editing file. Seperti di bawah ini:

1
2
3
4
5
user@host:~$ cat /path/panjang/menuju/file
isi file
user@host:~$ vim !$
vim /path/panjang/menuju/file
...

Jadi tidak perlu lagi mengetik ulang path panjang file yang dituju, tapi cukup gunakan sintaks !$ saja.

Sintaks !n

Huruf n merujuk kepada angka pada history shell. Jika kita menjalankan perintah history maka tiap-tiap baris history terdapat angka disebelahnya (kecual jika konfigurasi untuk history sudah tidak default). Nah, dengan menggunakan !n maka shell akan mengulangi command yang sama sesuai dengan nomor yang tertera.

Contoh:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
user@host:~$ history
    1  ll
    2  ls
    3  lsblk
    4  history
user@host:~$ !1
ll
total 20
drwxr-xr-x 1 user user  110 Nov  5 07:23 ./
drwxr-xr-x 1 root root   42 Nov  5 07:22 ../
-rw-r--r-- 1 user user  220 Nov  5 07:22 .bash_logout
-rw-r--r-- 1 user user 3771 Nov  5 07:22 .bashrc
drwx------ 1 user user    0 Nov  5 07:23 .cache/
drwxr-xr-x 1 user user   40 Nov  5 07:22 .config/
-rw-r--r-- 1 user user    5 Nov  5 07:22 .hidden
-rw-r--r-- 1 user user   87 Nov  5 07:22 .inputrc
-rw-r--r-- 1 user user  807 Nov  5 07:22 .profile

Pintasan Clear Screen clear

Command clear digunakan untuk membersihkan sesi layar shell. Agar lebih cepat, cukup tekan kombinasi tombol CTRL+L.


Bersambung, insyaAllah