Saya dapat melihat perintah terakhir di terminal dengan menekan up arrow
seperti pada contoh berikut:
Saya mengetik cd /
:
Makss-Mac:~ maks$ cd /
... ditekan enter
, perintah cd /
dieksekusi dan sekarang saya dapat menekan up arrow
dan melihat perintah cd /
lagi:
Makss-Mac:/ maks$ cd /
Saya ingin tidak hanya melihat perintah terakhir tetapi menyalinnya ke clipboard.
Mungkin ada shortcut yang tidak hanya menampilkan perintah terakhir di terminal (seperti yang up arrow
dilakukan) tetapi pada saat yang sama menyalinnya ke clipboard.
Atau mungkin ada jalan pintas untuk memilih semua dari jalur terminal saat ini. Jadi saya akan dapat menyalin perintah terakhir (setelah menekan up arrow
) dengan menekan super+c
. Tentu saja saya bisa memilihnya dengan mouse. Tetapi ketika perintah dalam 10 kali lebih lama dari cd /
itu bisa terlalu memakan waktu, terutama jika Anda melakukannya setiap 30 detik.
Atau mungkin ada cara untuk menulis plugin untuk Terminal
sumber
Jawaban:
Masukkan ini ke dalam
~/.bashrc
~/.bash_profile
atau di mana pun Anda suka:Setelah membuka jendela baru (atau menjalankan
source ~/.bash_profile
) Anda harus dapat menjalankancopyLastCmd
dan memiliki perintah di clipboard.Untuk menjelaskan apa yang terjadi: pada dasarnya Anda menggunakan "perintah perbaikan" (
fc
) untuk memberi Anda perintah terakhir, hapus spasi spasi awal dan akhir trailing untuk format yang lebih bagus,awk
lalu salin ke papan tulis Mac Andapbcopy
.EDIT:
Sekarang kita tahu bahwa Anda ingin menyalin untuk menempel ke tab terminal lain, ada opsi lain: Tambahkan baris ini ke Anda
~/.bashrc
~/.bash_profile
atau di mana pun Anda suka:Kemudian, setelah Anda membuka beberapa tab baru (sebut saja "tab A" dan "tab B"):
EDIT 2: Saya telah mengganti penggunaan
sed
denganawk
dalam jawaban asli di atas, untuk menjaga spasi putih terkemuka dan tertinggal.sumber
awk
:alias copyLastCmd='fc -ln -1 | sed '1s/^[[:space:]]*//' | awk 1 ORS="" | pbcopy '
fc -ln -1 | awk '{$1=$1}1'
akan menghapus spasi tambahan dan memimpin.alias copyLastCmd="fc -ln -1 | awk '{\$1=\$1}1' | pbcopy"
. masih mendapat upvote sayaIni jawaban lain berdasarkan jawaban oleh @ Asmus. Untuk membuat aliasnya berfungsi di skrip bash saya, saya harus menggunakan sedikit kutipan, karena tanda kutip tunggal tidak berfungsi dalam alias yang dikutip tunggal tanpa beberapa kutipan tambahan:
Pada
'\''
dasarnya akan menutup kutipan saat ini, lalu menambahkan kutipan yang lolos, dan kemudian membuka kutipan yang sebenarnya lagi.Versi di atas akan menyalin perintah terakhir ke clipboard Anda, dan setelah Anda menempelkannya, itu segera dieksekusi, karena itu akan memiliki baris baru di akhir.
Untuk menghilangkan baris baru di bagian akhir, sehingga Anda benar-benar dapat mengedit perintah sebelum menjalankannya, Anda dapat melakukan hal berikut:
The
ORS=''
(yang ini tanpa mengutip) akan menanggalkan karakter baris baru trailing, sehingga Anda dapat mengedit teks disisipkan sebelum menjalankannya.sumber
Ini akan menggunakan ekspansi sejarah untuk mengambil perintah terakhir dan mengulanginya. Anda dapat
pbcopy
mengirim ke untuk menyimpan perintah terakhir ke clipboard Anda.Jika Anda menginginkan perintah dari riwayat Anda yang bukan yang terakhir , Anda dapat menjalankan:
Dan referensi nomor perintah yang diinginkan seperti:
sumber
Saya datang ke sini karena mendapat jawaban yang sama persis dengan Sam Berry, tetapi itu tidak berhasil bagi saya (OSX 10.14.6).
Berhasil melakukannya dengan kutipan di sekitar
!!
:echo "!!" | pbcopy
sumber
Anda dapat mengatur riwayat Anda untuk mengabaikan perintah yang dimulai dengan spasi:
Dan kemudian jalankan perintah berikut untuk mengirimkan perintah terakhir ke clipboard (pastikan Anda memiliki spasi di awal):
Anda mungkin ingin menyimpan perintah sebagai alias untuk membuatnya lebih mudah diingat.
sumber