Jawaban saya menawarkan perintah sederhana dalam tiga sintaks yang berbeda, yang semuanya bekerja sama, tetapi yang satu sedikit lebih pendek dan lebih mudah untuk mengetik daripada yang kedua. Variasi ketiga adalah apa yang disebut alias, itu berarti Anda dapat menetapkan perintah nama kustom dan memanggilnya dengan mengeksekusi itu tanpa harus mengingat hal-hal kompleks.
Persiapan:
Pertama, instal paket xsel
yang memungkinkan Anda untuk mengakses papan klip X dari terminal:
sudo apt-get install xsel
Variasi perintah 1 (pendek):
Setelah itu, Anda bisa mengetikkan baris berikut untuk menyalin perintah sebelumnya ke clipboard:
xsel -ib <<<!!:q
Jika Anda ingin menyalin perintah terbaru kedua, ganti !!
dengan !-2
, untuk penggunaan terakhir ketiga !-3
dan seterusnya.
Untuk menjelaskan apa yang Anda jalankan, berikut ini beberapa rincian perintah:
xsel
adalah alat baris perintah untuk mengakses papan klip X.
Untuk info lebih lanjut, baca manualnya secara online atau dengan menjalankan man xsel
.
- The
-i
parameter mengatakan xsel
untuk membaca dari stdin (biasanya masukan berarti keyboard ini, tapi kita akan redirect sesuatu di sini)
- The
-b
menspesifikasikan parameter untuk menggunakan clipboard bukan "utama" atau "sekunder" Pilihan X.
<<<
adalah sintaks Bash khusus yang disebut "Here String".
Ini pada dasarnya memperluas (tidak mengevaluasi!) Argumen (hanya satu!) Setelah itu dan mengarahkan kembali sebagai string ke stdin (input standar) dari perintah sebelum / sesudahnya berdiri.
!!:q
disebut "perintah bang" untuk ekspansi sejarah di bash. Itu menggantikan dirinya dengan baris perintah yang sebelumnya diketik.
Untuk info lebih lanjut, baca manual lokalnya dengan menjalankan man history
(manual online tidak membantu).
- The
!!
singkatan baris perintah sebelumnya dan adalah sinonim untuk !-1
.
Jelas !-2
berarti kemudian baris perintah terakhir kedua. Jangan lupa tanda minus -
, jika tidak maka akan mengembalikan perintah ke-2 (ke-3 / ...) yang pernah Anda ketik.
- The
:q
memodifikasi perintah bang dan memberitahu bash untuk melampirkan substitusi dalam tanda kutip tunggal ( '
) untuk mencegah ekspansi lebih lanjut oleh shell.
Variasi perintah 2 (sedikit lebih lama):
echo !!:q | xsel -ib
echo
memiliki pekerjaan sederhana untuk mencetak semua argumennya ke terminal stdout.
!!:q
disebut "perintah bang" untuk ekspansi sejarah di bash. Itu menggantikan dirinya dengan baris perintah yang sebelumnya diketik.
- The
!!
singkatan baris perintah sebelumnya dan adalah sinonim untuk !-1
. Jelas !-2
berarti kemudian baris perintah terakhir kedua. Jangan lupa tanda minus -
, jika tidak maka akan mengembalikan perintah ke-2 (ke-3 / ...) yang pernah Anda ketik.
- The
:q
memodifikasi perintah bang dan memberitahu bash untuk melampirkan substitusi dalam tanda kutip tunggal ( '
) untuk mencegah ekspansi lebih lanjut oleh shell.
|
adalah sebuah pipa. Ini mengarahkan output terminal ("stdout") dari perintah sebelum ke input terminal ("stdin") dari perintah setelahnya.
xsel
adalah alat baris perintah untuk mengakses papan klip X.
Untuk info lebih lanjut, baca manualnya secara online atau dengan menjalankan man xsel
.
- The
-i
parameter mengatakan xsel
untuk membaca dari stdin (biasanya masukan berarti keyboard ini, tapi kita akan redirect sesuatu di sini)
- The
-b
menspesifikasikan parameter untuk menggunakan clipboard bukan "utama" atau "sekunder" Pilihan X.
Variasi perintah 3 (alias):
Alias bash adalah hal yang keren jika Anda tidak ingin mengingat perintah panjang atau rumit yang sering Anda gunakan. Anda dapat menetapkan perintah ini ke nama alias sederhana, yang bisa Anda jalankan alih-alih perintah panjang untuk mencapai yang sama.
Sayangnya, karena perintah bang adalah fitur Bash khusus dan dapat diperluas sebelum alias diselesaikan, Anda tidak bisa hanya menyebutkan salah satu variasi di atas karena !!
bagian itu tidak akan berfungsi. Tapi ada solusinya.
Untuk mengatur alias, jalankan baris berikut di terminal Anda. Perhatikan bahwa Anda dapat memilih nama variabel Bash yang valid alih-alih copylastcommand
:
alias copylastcommand='history -p \!\! | xsel -ib'
Namun ini hanya persisten untuk sesi Bash Anda saat ini, yang berarti alias akan hilang setelah Anda menutup jendela terminal. Anda dapat membuatnya terus-menerus di setiap sesi Bash Anda dengan menambahkan baris ini di atas ke ~/.bashrc
file Anda , atau ke ~/.bash_aliases
file Anda jika Anda punya.
Sekali lagi, jeda singkat dari garis:
alias name='command'
adalah sintaks untuk menetapkan alias di Bash. Ini command
akan dijalankan setiap kali Anda mengeksekusi name
mulai sekarang.
history -p \!\!
menampilkan baris perintah yang sebelumnya dieksekusi ke stdout (output standar). Tanpa -p
saklar, itu tidak hanya akan mencetak tetapi juga menjalankan perintah lagi.
Perhatikan bahwa kita perlu melarikan diri dari poni ( !
) dengan garis miring terbalik ( \
), karena jika tidak bash akan memperluas mereka ketika kita mencoba untuk mengatur alias, yang tidak masuk akal karena mereka perlu di alias seperti apa adanya.
Sekali lagi, Anda juga dapat menentukan perintah terakhir [n] dengan mengganti bang kedua dengan -n
, misalnya \!-2
.
|
adalah sebuah pipa. Ini mengarahkan kembali output standar ("stdout") dari perintah sebelum ke standar terminal ("stdin") dari perintah setelahnya.
xsel
adalah alat baris perintah untuk mengakses papan klip X.
Untuk info lebih lanjut, baca manualnya secara online atau dengan menjalankan man xsel
.
- The
-i
parameter mengatakan xsel
untuk membaca dari stdin (biasanya masukan berarti keyboard ini, tapi kita akan redirect sesuatu di sini)
- The
-b
menspesifikasikan parameter untuk menggunakan clipboard bukan "utama" atau "sekunder" Pilihan X.
<<<"!!" xsel -ib