Simpan perintah ke riwayat tanpa mengeksekusi di bash

8

Apakah ada cara untuk menyimpan perintah dalam bash history tanpa menjalankannya? misalnya

$ cmd [a long list of arguments] 

dan sekarang saat mengetik saya ingat saya ingin melakukan hal lain dulu. Bisakah saya memiliki sesuatu seperti

$ cmd [a long list of arguments][some-key-strokes]

dan ini tidak benar-benar mengeksekusi tetapi masuk ke dalam bash history sehingga saya bisa menggunakannya nanti?


sumber
5
Dalam situasi itu, saya hanya awali baris dengan #, dan kemudian tekan Enter.
Oliver Charlesworth

Jawaban:

5

Mungkin ada cara yang lebih baik, tetapi Anda dapat menggunakan :ppengubah ekspansi riwayat untuk mencetak baris komentar saat ini tanpa mengeksekusi. !#adalah baris saat ini, dan %dengan sendirinya tidak akan cocok dengan apa pun

$ cmd [arguments] !#%:p
Pil Ledakan
sumber
keren! ;) dan tanpa perlu melarikan diri karakter khusus dalam perintah apa yang bisa berantakan jika perintah itu bukan hanya ls -al+1
keren! sangat rapi
8

Gunakan -sopsi untuk historyperintah:

history -s cmd arg1 arg2

Panggilan untuk history -sdirinya sendiri, dengan mudahnya, tidak ditambahkan ke histori perintah, jadi dalam histori Anda tampaknya seolah-olah Anda dieksekusi cmdtanpa benar-benar melakukannya.

chepner
sumber
keren! ini juga luar biasa
1

Biasanya ini dilakukan oleh

echo 'cmd [a long list of arguments]' >> /home/you/bash_history

Perhatikan bahwa nama histori dapat berbeda pada sistem Anda. Karena itu Anda dapat menggunakan HISTFILElingkungan var

apa yang membuat:

echo 'cmd [a long list of arguments]' >> "$HISTFILE"
hek2mgl
sumber
1

Biasanya saya hanya menambahkan # ke awal baris untuk mengubah baris menjadi komentar:

#cmd [a long list of arguments] 

Saya lebih suka cara ini karena Anda bisa melakukannya hanya dengan 3 [4 jika Anda memerlukan SHIFT untuk memasukkan #] penekanan tombol

^a#<ENTER>

^ a pergi ke awal baris saat ini

# menambahkan komentar

ENTER mengeksekusi komentar

pengguna3726536
sumber
0

Anda dapat mencoba menambahkan spasi dan | (pipa) di akhir baris, tekan enter, lalu Ctrl-C'ing.

( Space, |, Enter, Ctrl+ C)

Perintah akan ada dalam riwayat Anda dengan | | pada akhirnya (cukup dengan menghapus dengan backspace) daripada # di awal (berpotensi lebih membosankan untuk dihapus).

PENOLAKAN: Saya tidak tahu apakah ini selalu berhasil! Gunakan dengan risiko Anda sendiri!

$ cmd [daftar argumen panjang] |

> Ctrl+C

$ Up

$ cmd [daftar argumen panjang] |

Josiah Krutz
sumber
0

Anda dapat mencoba menggunakan baris ini:

history -s -p $COMMAND

Dari help:

The -p option means to perform
history expansion on each ARG and display the result,

Ini berarti Anda dapat memperluas hal-hal seperti !!dan menyimpan hasilnya di bagian bawah sejarah.

Felipe Alvarez
sumber
history -sdiberikan dalam jawaban dua tahun lalu. Apakah -ppeningkatan itu? Apa yang -pharus dilakukan (Sejauh itu masuk akal untuk melakukannya, Anda harus mengedit jawaban Anda untuk membuatnya lebih baik, dan tidak menanggapi komentar saya dengan komentar lain.)
G-Man Mengatakan 'Reinstate Monica'
0

Opsi lain adalah pergi ke awal baris dan melakukan hal yang akan Anda lakukan diikuti oleh &&, seperti

rm old_file && cmd [args]

Jadi jika hal yang ingin Anda lakukan berhasil, perintah Anda akan segera berjalan setelahnya, dan jika gagal Anda perintah tidak akan berjalan, tetapi itu akan ada dalam sejarah. Anda juga bisa melakukannya

test && cmd [args]

Karena tes tanpa args akan gagal, tetapi ini adalah beberapa penekanan tombol ekstra dibandingkan dengan #metode ini.

Nickolai
sumber
0

Saya pikir "beberapa stroke kunci" yang Anda inginkan adalah Ctrl-U dan Ctr-Y yang menyimpan garis ke cincin-membunuh, dan kemudian menariknya kembali nanti. Itu tidak masuk ke dalam sejarah, tapi kemudian saya pikir tidak seharusnya, karena Anda tidak melakukannya.

Perintah Pembunuhan Readline

Membunuh Dan Menarik

Saya belajar ini tahun lalu, kemudian lupa dan pergi mencari stroke kunci juga.

Ini dibahas di sini juga: /unix/140741/how-to-save-a-command-you-entered-without-executing-it

Scipilot
sumber