Terminal Linux (misalnya Ubuntu), adakah metode untuk mendapatkan baris terakhir? Katakanlah saya mengetik td
perintah secara acak , yang belum diinstal pada sistem saya, jadi saya akan mendapatkan pesan seperti di bawah ini. Saya ingin memiliki "jalan pintas" untuk berjalan sudo apt-get install textdraw
cepat.
Apakah ada alat seperti itu atau bagaimana saya bisa menyalin baris terakhir ke clipboard tanpa menggunakan mouse?
username@WorkStation:~$ td
The program 'td' is currently not installed. You can install it by typing:
sudo apt-get install textdraw
username@WorkStation:~$
sudo apt-get install textdraw
, bukantd
. panah atas hanya akan memberi sayatd
Jawaban:
Jika Anda tidak keberatan sedikit kecabulan (saya tidak), Anda mungkin ingin menggunakan fuck , alat yang melakukan persis apa yang Anda minta.
Ya, tidak persis seperti itu, tetapi itu memecahkan masalah yang sama. Alih-alih hanya mendapatkan baris terbaru, ia mencoba untuk mencocokkan perintah terakhir yang Anda ketikkan.
Contoh-contoh yang ditunjukkan di repositori menunjukkan beberapa skenario yang Anda sebutkan.
sumber
Jawaban singkatnya: tidak, mungkin Anda tidak memiliki metode yang tersedia untuk melakukan ini.
Jawaban panjangnya:
vi
(di mana outputnya tidak bagus dengan teks berorientasi garis). Namun, bash tidak melakukan itu.Dalam praktiknya, apa yang dilakukan orang untuk mengatasi keterbatasan ini adalah menggunakan program lain untuk menangkap output perintah, dan mengeditnya. Tapi itu tidak akan menyelesaikan masalah langsung Anda.
Sebagai contoh, saya menggunakan vi-like-emacs untuk mengeluarkan perintah ad hoc shell. Jika itu tidak memerlukan input lebih lanjut, itu berfungsi dengan baik untuk menjalankan mereka di jendela , menangkap output dari perintah - dan mengedit output sesuai kebutuhan untuk memperbaiki perintah. Emacs juga memungkinkan Anda untuk melakukan sesuatu seperti itu, dan juga vim.
sumber
Jika Anda mendapatkan pesan itu di ubuntu setelah menjalankan perintah yang tidak ada dari bash, sistem Anda mungkin menggunakan
command_not_found_handle
fungsi. Anda bisa melihatnya di/etc/bash.bashrc
.Peretasan sepele mungkin merupakan opsi: Saya baru saja membuat skrip bernama
cnfh
:Kemudian jalankan perintah td menggunakan skrip ini:
Menggunakan Ubuntu 14.04.2 LTS . Saya harap itu membantu.
sumber
Dalam tmux v2.4 dan seterusnya (karena ini melakukan https://github.com/tmux/tmux/commit/76d6d3641f271be1756e41494960d96714e7ee58 ) dengan
send-keys -X
. Mungkin di versi yang lebih lama, dengan sintaks yang berbeda.Dalam
.tmux.conf
:Sekarang,
prefix+!
akan menyalin baris terakhir di posisi kursor saat ini.cursor-left
dapat ditinggalkan jika Anda ingin menjalankannya secara langsung tanpa mengetikkan return.Catatan : ini tidak akan berfungsi jika baris terakhir kosong atau jika dibungkus tetapi masih bermanfaat dalam kebanyakan kasus
sumber
Untuk mengeksekusi baris keluaran terakhir dari perintah terbaru, jika Anda bersedia untuk mengeksekusi kembali perintah itu (karena tidak melakukan apa-apa kecuali mengeluarkan pesan diagnostik), lakukan
Langkah demi langkah (lapis demi lapis):
fc
(yang mungkin merupakan singkatan dari "Fix Command") adalah perintah builtin shell untuk mengakses riwayat perintah.-ln
l
(huruf kecil L) - l ist perintah sebelumnyan
- tidak termasuk perintah n umbers1
(satu) - mengacu pada perintah terbarufc -ln -1
daftar perintah terbaru, tidak termasuk nomor perintah.$(fc -ln -1)
mengeksekusi perintah terbaru.$(fc -ln -1) | tail -n 1
mengeksekusi perintah terbaru dan menampilkan baris terakhir dari outputnya. Ini adalahsudo apt-get install textdraw
garis, dalam contoh Anda.$($(fc -ln -1) | tail -n 1)
mengeksekusi itu perintah.Anda dapat alias ini:
Saya serahkan kepada Anda untuk memilih nama yang lebih pendek untuk alias.
Catatan:
|
,<
,>
,;
,&
, atau bahkan kutipan. Jika Anda perlu menangani perintah yang rumit, Anda mungkin dapat melakukannya dengan menambahkaneval
, tetapi ini secara luas tidak disarankan.tail -n 17 | head -n 1
.fc
. Perhatikan bahwafc -ln -1
kependekan darifc -ln -1 -1
. Untuk mengambil perintah terbaru ketiga, gunakanfc -ln -3 -3
.sumber