GNU/Linux >> Belajar Linux >  >> Linux

Mengurai riwayat Bash di Linux

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


Linux
  1. Cara menggunakan perintah riwayat Bash

  2. Cara Menghapus Riwayat Baris Perintah BASH di Linux

  3. Cara Menghapus Riwayat Bash di Linux

  1. Dinginkan prompt Bash Anda di Linux

  2. Cara Menghapus Perintah Tertentu Dari Riwayat Bash Di Linux

  3. Bagaimana Cara Mempersingkat Bash Prompt di Linux?

  1. Perintah Sejarah di Linux Dijelaskan Secara Mendalam

  2. Sejarah baris perintah di Linux

  3. Perintah sejarah Linux