Sejarah perintah selektif di terminal?

9

Di dalam terminal, ketika Anda menekan di keyboard Anda, Anda bisa melihat perintah terakhir yang Anda berikan sebelumnya secara berurutan. Saya bertanya-tanya apakah ada cara untuk melihat hanya perintah di masa lalu yang dimulai dengan-misalnya, "ls-l". Dengan begitu, jika daftar perintahnya adalah:

  1. ls-l -a
  2. cmake
  3. cd ~ / Desktop
  4. cmake

Cara untuk hanya menulis "ls" dan tab atau kombinasi apa pun dari penekanan tombol yang diperlukan untuk memunculkan perintah masa lalu yang menyerah pada terminal dimulai dengan "ls"

Terima kasih,

jlo
sumber

Jawaban:

14

Itu tidak akan menunjukkan hal-hal yang hanya dimulai dengan ls, tetapi Anda dapat melakukan Ctrl-R lspencarian mundur melalui sejarah. Ulangi Ctrl-Runtuk menemukan kecocokan berikutnya.

poolie
sumber
Terima kasih atas CTRL+Rperintah pintasnya.
Kleber S.
8

Terkadang berguna untuk memiliki ini ...

Contoh

Menghubungkan ke komputer lain menggunakan ssh:

mulai mengetik

ssh

Gunakan PgUpkunci dan ssh Anda berakhir dengan yang terakhir Anda gunakan ... tekan PgUplagi dan itu memberi Anda yang berikutnya dan seterusnya. Suka itu?

Anda bisa menggunakan ini:

Edit .bashrc Anda ( vi /home/<yourfolder>/.bashrc) dan tambahkan ini:

$if Bash
    # Search history back and forward using page-up and page-down
    "\e[5~": history-search-backward
    "\e[6~": history-search-forward

    # Completion
    set match-hidden-files off
    set page-completions off
    set completion-query-items 350
    set show-all-if-ambiguous on

$endif

Ini hanya menambahkan ke terminal pengguna Anda fungsi ini. Anda harus mengedit juga salah satu root untuk memiliki yang sama: Anda dapat mengikuti tutorial ini dari wiki tidak ada cara Anda dapat melakukannya salah, juga ada banyak hal tambahan untuk meningkatkan pengalaman terminal Anda ...

maniat1k
sumber
Anda bahkan dapat mengikatnya ke tombol panah Atas / Bawah:, bind '"\e[A": history-search-backward'; bind '"\e[B": history-search-forward'membuatnya lebih intuitif.
Fritz
5

Untuk melihat riwayat perintah, gunakan dapat menggunakan:

$ history

Jika Anda hanya ingin melihat perintah lalu mulai dengan misalnya "ls", menurut saya saya menggunakan:

$ history | grep ls

Tentu saja output akan berisi sesuatu yang bukan perintah tetapi mengandung karakter "ls", tapi saya pikir itu bisa membantu.

neo0
sumber
2

Cara termudah untuk mencapai apa yang Anda inginkan adalah dengan !<whatever-command>. Misalnya untuk mengeksekusi lsyang Anda lakukan terakhir, Anda dapat melakukan a !ls. Lihatlah log berikut untuk melihat apakah ini yang Anda butuhkan:

nits@nits-excalibur:~$ ls /mnt/Storage_1/Music/
Music I  Music II  Music III  Music IV  Music V  Music_VI
nits@nits-excalibur:~$ cd Documents/
nits@nits-excalibur:~/Documents$ top
nits@nits-excalibur:~/Documents$ !ls
ls /mnt/Storage_1/Music/
Music I  Music II  Music III  Music IV  Music V  Music_VI
Nitin Venkatesh
sumber
1
Ini menjalankan perintah tanpa menampilkannya, adakah alternatif yang menampilkannya seperti yang diminta OP?
Bruno Pereira
Di zsh, Anda bisa setopt HIST_VERIFYdan perintah akan dimasukkan ke dalam buffer input Anda, di mana Anda bisa menekan enter untuk menerimanya, atau mengeditnya.
poolie
1

Histori terletak ~ / .bash_history Juga, untuk trik yang rapi untuk mencari bash history Anda, tekan ctrl + r lalu ketik mulai dari perintah yang Anda cari.

dan http://ubuntuforums.org/showthread.php?t=204382 untuk alias dan trik baris perintah yang berguna

Buntut
sumber