Sebagai contoh:
[root@ip-10-0-7-125 ~]# history | grep free
594 free -m
634 free -m | xargs | awk '{print "free/total memory" $17 " / " $ 8}'
635 free -m
636 free -m | xargs | awk '{print "free/total memory" $9 " / " $ 10}'
736 df -h | xargs | awk '{print "free/total disk: " $11 " / " $9}'
740 df -h | xargs | awk '{print "free/total disk: " $11 " / " $8}'
741 free -m | xargs | awk '{print "free/total memory: " $17 " / " $8 " MB"}'
Saya hanya ingin tahu apakah ada cara untuk menjalankan perintah 636 tanpa mengetiknya lagi, cukup ketik sesuatu ditambah angka, seperti sejarah 636 atau sesuatu.
bash
command-history
Yang satu
sumber
sumber
ctrl-r
?Jawaban:
Dalam bash, hanya
!636
akan baik-baik saja.sumber
In Linux
- Ini lebih berkaitan dengan shell (bash, zsh, dll) seseorang menjalankan OS yang Anda jalankan. Ada cangkang di linux tanpa dukungan untuk sejarah.:p
untuk mencetak perintah tanpa menjalankannya,!636:p
misalnya. Yang berarti bahwa Anda dapat dengan mudah memilihnya lagi dari riwayat Anda dengan menekan panah atas dan membuat perubahan kecil yang Anda inginkanYa, ini disebut "ekspansi sejarah." Lihat
untuk detail lengkap.
Menggunakan tanda seru diikuti oleh angka bisa dibilang penggunaan paling sederhana:
Namun, Anda juga dapat menjalankan perintah yang terakhir dieksekusi secara langsung tanpa mengetahui nomor riwayatnya:
Atau Anda dapat menjalankan dua perintah kembali:
Namun, bentuk yang paling sering saya gunakan adalah mengulang argumen terakhir dari perintah terakhir:
Atau, katakanlah saya sedang memeriksa file. Menggunakan penyelesaian tab, saya mungkin melakukan hal berikut:
Sekali lagi, baca halaman manual untuk lebih jelasnya:
sumber
Alt-.
bisa lebih nyaman daripada!$
. Itu menyisipkan argumen terakhir dari perintah terakhir kata demi kata ke dalam baris.!$
, tetapi tidak pernah mendengarAlt-.
)? Apakah Anda akan memposting tautan ke situ?LESS="+/DEFAULT KEY BINDINGS" man 3 readline
,/etc/inputrc
,~/.inputrc
. Banyak program selain bash menggunakan libreadline; bagi yang melakukannya, Anda mendapatkan fitur yang sama sepertiAlt-.
,Ctrl-X-U
(batalkan),Ctrl-/
(jelaskan pintasan), penyelesaian tab, dll - gratis. Misalnya, dengan hanya tiga baris dariPYTHONSTARTUP
satu dapat mengaktifkan tab-completion dan sejarah di REPL saham python . Yang akan bekerja (kebanyakan) sama dengan di bash, karena itu adalah pustaka GNU Readline yang bekerja. Halaman readline's menggambarkan fitur secara rinci.echo {1..5}
diikuti olehtouch !$
akan menyentuh lima file, bukan hanya satu. Jadi sebenarnya itu bukan argumen terakhir tetapi kata terakhir di baris itu. (Coba jugaecho hello >temp
diikuti olehecho goodbye !$
.) Jika Anda dapat memikirkan cara untuk membuatnya lebih jelas, bebas untuk menyarankan edit.Yang bagus, jika Anda tidak ingin riwayat pertama, catat nomornya, dll:
di bash (dan mungkin yang lain):
(
ctrl-r
= "membalikkan pencarian secara interaktif") (something
= bagian dari perintah sebelumnya)Ini akan menampilkan baris riwayat terbaru yang berisi
something
. Untuk mendapatkan yang sebelumnya, lakukan ctrl-r (sendiri) lagi, setiap kali mendapat baris sebelumnya.ex:
untuk menampilkan baris riwayat terbaru yang berisi '10' (untuk contoh baris dengan
$10
, dalam contoh Anda), danctrl-r
lagi sampai Anda mengambil baris riwayat yang Anda cariKetika garis yang Anda inginkan muncul, hanya
Enter
untuk menjalankannya (atau Anda juga bisa mengeditnya, menggunakanarrow keys
,backspace
danctrl-a
untuk pergi ke awal baris,ctrl-e
untuk sampai ke Akhir,ctrl-k
: untuk "membunuh" dari kursor ke akhir baris (= menghapus + menyimpannya dalam buffer),:ctrl-y
untuk mengembalikan, dari buffer, bit yang sebelumnya mati, dll.)Jika Anda ingin mencari maju (ctrl-s), Anda harus terlebih dahulu menonaktifkan XON : lihat https://stackoverflow.com/a/791800/1841533 :
"hanya untuk menonaktifkan XON / XOFF dengan menjalankan
"(dan kemudian Anda akan dapat menggunakan ctrl-s, tanpa harus membekukan terminal)
sumber
Anda dapat menggunakan shell builtin fc :
sumber
-s
untuk mendapatkan manfaatnya. Jika Anda menjalankan,fc 636
Anda akan membuka editor dengan perintah 636 dari riwayat Anda di buffer, dan ketika Anda menyimpan dan keluar dari perintah (dimodifikasi atau tidak) akan dijalankan. Dan yang lebih baik lagi, yang satu ini kompatibel dengan POSIX .help
bukan POSIX - mungkin harus melakukanman dash
atau serupahelp
ada. Shell lain builtin. Dan membingungkan bagi pengguna yang tidak waspada yang mungkin ingin membantu dengan sistem baru, tetapi sebaliknya dihadapkan dengan aliran omong kosong. :-(Ada
HSTR
-hh
perintah untukbash
danzsh
pemilihan perintah interaktif, lebih baik daripada pencarian terbalik Ctrl-R:bersifat interaktif, sehingga Anda dapat mencari, dan mengedit perintah, sebelum menjalankannya.
Di Ubuntu, Anda dapat menginstal
hh
dengan satu-liner berikut:atau langkah demi langkah:
Instal
hh
di Fedora, RHEL atau CentOS:Di macOS dengan
homebrew
:... lalu konfigurasikan dengan:
Ini akan menggantikan perilaku Ctrl-R default.
Jalankan
hh --show-configuration
untuk menentukan apa yang akan ditambahkan ke profil Bash Anda.Opsi konfigurasi lainnya tersedia di beranda proyek di Github: https://github.com/dvorka/hstr
sumber