Di Bash, history
command adalah kunci untuk tidak hanya memahami apa yang telah Anda lakukan selama sesi shell Anda, tetapi juga untuk bahan mentah untuk perintah baru yang ingin Anda jalankan di masa mendatang. History
sangat berguna saat Anda menjalankan server tanpa kepala. Jika Anda tidak memiliki mouse, Anda tidak dapat dengan mudah menyalin dan menempelkan bagian terakhir dari perintah kompleks untuk menjalankan versi yang sedikit dimodifikasi, jadi Anda harus mengetik semuanya lagi - kecuali jika Anda menggunakan history
pengubah.
Jauhkan sejarah dari sejarah Anda
Sebelum membahas sejarah, berikut adalah tip untuk menjaga history
literal entri dari riwayat Anda.
Masalah dengan menggunakan history
perintah untuk meninjau history
Anda apakah itu menambahkan entri ke history
Anda mengajukan. Entri ini tidak hanya mengacaukan history
Anda , tetapi juga menyebabkan setiap baris mundur "lebih jauh" dari posisi Anda saat ini.
$ cd example-project
$ ls
bin doc src
$ touch doc/LICENSE
$ history
102 cd example-project
103 ls
104 touch doc/LICENSE
105 history
$
Target yang bergerak sulit untuk dilacak dan sulit untuk dicapai, jadi jika Anda berencana untuk serius menggunakan history
Anda untuk mempercepat interaksi Bash Anda, tambahkan konfigurasi ini ke .bashrc
. Anda berkas:
export HISTCONTROL=$HISTCONTROL:ignorespace
Konfigurasi ini mencegah perintah apa pun yang didahului oleh spasi ditambahkan ke history
Bash Anda .
$ cd example-project
$ ls
bin doc src
$ touch doc/LICENSE
$ history
102 cd example-project
103 ls
104 touch doc/LICENSE
$
[ Kursus online gratis:Ikhtisar teknis Red Hat Enterprise Linux. ]
Peristiwa sejarah
Struktur dasar shell history
dimulai dengan daftar events
. Sebuah event
adalah apa pun yang Anda masukkan ke dalam shell, diikuti oleh Return
atau Enter
kunci. Setiap event
diberi nomor indeks (nomor baris), dan Anda dapat melihat dan mengingat peristiwa dengan menggunakan event designators
.
Misalnya, untuk mengingat item baris tertentu di history
shell Anda , gunakan tanda seru (!
) segera diikuti dengan nomor history
baris:
$ history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src
Anda juga dapat merujuk ke perintah sebelumnya relatif terhadap posisinya di history
daftar. Misalnya, untuk menjalankan perintah dua baris di masa lalu, anggap Prompt Anda saat ini lebih besar dari baris terakhir di history
, lalu kurangi jumlah baris yang ingin Anda jalankan dari nomor baris Anda saat ini. Dalam contoh ini, baris 103 adalah garis target dan 105 adalah prompt saat ini (untuk delta 105-103=2 ):
$ history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src
Anda dapat menyimpan seluruh karakter jika Anda hanya ingin menjalankan kembali baris terakhir. Ekspresi !!
dan !-1
sinonim:
$ history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src
Perhatikan perintah itu sendiri diulang dalam output ketika history
diulang. Untuk singkatnya dan kejelasan, keluaran tersebut dikecualikan dari contoh yang tersisa di artikel ini.
Penanda kata
Bash memiliki fitur untuk membantu Anda menguraikan history
menggunakan word designators
, dan alat untuk memungkinkan Anda mengubah perintah di history
. Mungkin membantu untuk memikirkan history
shell Anda sebagai array yang diindeks, atau bahkan sebagai objek sejarah besar yang terdiri dari banyak item yang lebih kecil. Setiap kata di setiap baris history
Anda diindeks, mulai dari 0 (yang biasanya merupakan perintah, tetapi perintah multi-bagian dan awalan variabel lingkungan adalah pengecualian penting). Anda dapat mengakses setiap indeks dengan menambahkan titik dua (:
) ke referensi baris Anda, segera diikuti oleh word designators
.
Berikut ini contoh mengakses kata pertama:
$ history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src
Karena mengambil argumen pertama adalah hal biasa, sirkumfleksa (atau "topi":^
) adalah alias untuk :1
.
$ echo foo
$ !!^
foo
Di ujung lain spektrum, dolar ($
) tanda mewakili argumen terakhir:
$ echo foo bar baz
$ echo !!$
baz
Rentang kata
Anda tidak harus puas hanya dengan satu argumen. Anda juga dapat mengekstrak rentang indeks. Semua argumen kecuali yang nol tersedia dengan tanda bintang (*
).
$ echo foo bar baz
$ touch !!*
$ ls
foo bar baz
Ini sebenarnya sinonim untuk 1-$
(yaitu, argumen pertama hingga argumen terakhir). Seperti yang Anda harapkan, Anda dapat menentukan rentang Anda secara sewenang-wenang menggunakan notasi yang tidak disingkat ini. Contoh ini merujuk pada argumen kedua hingga kelima, mengabaikan dua argumen pertama dan terakhir:
$ cp foo a.sh spacer.sh rev.bin sync.py baz ~/dest
$ cd ~/dest
$ chmod ug+x !-2:2-5
$ ls -l --classify
a.sh* baz foo rev.bin* spacer.sh* sync.py*
Jika Anda hanya perlu mengecualikan satu kata terakhir dalam indeks, Anda dapat memberikan rentang tanpa penghentian:
$ cp foo a.sh spacer.sh ~/dest
$ cd ~/dest
$ chmod ug+x !-2:2-
$ ls -l --classify
a.sh* foo spacer.sh*
Menggunakan riwayat untuk kecepatan dan presisi
history
perintah tidak selalu tentang mengurangi penekanan tombol. Anda dapat menggunakan history
Bash Anda untuk menghindari secara tidak sengaja mengecualikan file atau folder dari operasi penting, atau salah mengeja nama file. Dapatkan kenyamanan dengan history
perintah untuk interaksi Bash yang lebih kuat.
[ Ingin mencoba Red Hat Enterprise Linux? Unduh sekarang secara gratis. ]