Saya tidak yakin bagaimana mengatakannya, tetapi saya sering menemukan diri saya mengetik perintah seperti ini:
cp /etc/prog/dir1/myconfig.yml /etc/prog/dir1/myconfig.yml.bak
Saya biasanya cukup mengetikkan path dua kali (dengan tab selesai) atau saya akan menyalin dan menempel path dengan kursor. Apakah ada beberapa bashfoo yang membuat ini lebih mudah untuk diketik?
bash
command-line
clipboard
line-editor
pengguna1028270
sumber
sumber
bash-fu
:)Jawaban:
Ada sejumlah trik (saya pikir ada duplikat), tetapi untuk ini saya cenderung melakukannya
yang akan diperluas ke perintah Anda.
Ini dikenal sebagai ekspansi brace . Dalam bentuk yang digunakan di sini,
{}
ekspresi menentukan sejumlah string yang dipisahkan oleh koma. Ini "memperluas" seluruh/etc/prog/dir1/myconfig.yml{,.bak}
ekspresi, mengganti{}
bagian dengan masing-masing string pada gilirannya: string kosong, memberi/etc/prog/dir1/myconfig.yml
, dan kemudian.bak
, memberi/etc/prog/dir1/myconfig.yml.bak
. Hasilnya adalahEkspresi ini dapat disarangkan:
menghasilkan
Ada varian menggunakan angka untuk menghasilkan urutan:
menghasilkan
dan Anda juga dapat menentukan langkah:
menghasilkan
sumber
.bak
.Perluasan sejarah dapat berguna untuk hal semacam ini (dengan asumsi sejarah bash diaktifkan).
Dalam contoh Anda, Anda bisa melakukan:
Di sini,
!#
merujuk ke baris saat ini,!#:1
merujuk ke parameter 1 di baris saat ini,dan
!#:1.bak
merujuk ke parameter 1 di baris saat ini dengan '.bak' ditempelkan di akhir.Ketika Anda memiliki specifier sejarah yang diketik, Anda dapat menggunakan Ctrl+ Alt+ Euntuk memperluasnya ke nilai sebenarnya jika Anda ingin misalnya memeriksa ulang atau memodifikasi nama file.
Bagian "Riwayat Perluasan" di halaman bash man memiliki info lebih lanjut.
sumber
Mirip dengan jawaban progo, tetapi agak lebih sederhana:
C-w
memotong ("membunuh") kata di sebelah kiri kursor,C-y
menyisipkan ("menyentak") lagi.sumber
Anda juga dapat memotong-paste (kill-yank dalam istilah emacs / bash) dari commandline untuk menggandakan bagian-bagian untuk diedit.
M-d
membunuh maju sampai batas kata, dan Anda dapat membunuh teks beberapa kali dan mereka semua disatukan menjadi satu 'tempel' untuk menarik. Mudah!Tarik ini semua kembali ke baris perintah di kursor oleh
C-y
. Jadi jika Anda memiliki garis seperti ini (elemen blok █ menunjukkan posisi kursor):Apa pun yang Anda inginkan, membiasakan diri dengan apa yang ditawarkan bash di departemen kunci interaktif akan bermanfaat. http://web.mit.edu/gnu/doc/html/features_7.html
sumber
Dalam
tcsh
atauzsh
, Alt+Ctrl+_dalamemacs
mode (copy-prev-word
widget) memasukkan kata terakhir, jadibash
memilikicopy-backward-word
widget (tidak terikat ke tombol apa pun secara default) tetapi itu hanya menyalin kata ke buffer cincin, Anda harus juga menekan Ctrl-Y(dalamemacs
mode) untuk menariknya. Tetapi Anda bisa melakukannya:Untuk Alt+Ctrl+_melakukan copy / snarf dan paste / yank seperti di
tcsh
/zsh
.sumber