Saya memiliki proses yang membuat file teks yang nama filenya didasarkan pada timestamp saat pembuatannya:
$ ls
1378971222.txt
1378971254.txt
1378971482.txt
1378971488.txt
1378972089.txt
1378972140.txt
1378972141.txt
1378972153.txt
1378972155.txt
1378972241.txt
Bagaimana saya bisa melengkapi nama file file yang dibuat terbaru , yaitu file dengan mtime terbaru? Tidak ada cara untuk menggunakan Tab-completion untuk file-file ini karena hampir setiap karakter dalam nama file dibagi dengan file lain. Saya berharap menemukan jalan pintas (seperti Alt .
yang secara otomatis melengkapi argumen terakhir dari perintah terakhir). Saya telah berhasil menyusun alias berikut yang besar untuk VIM
, tapi aku akan senang untuk mengetahui apakah jalan pintas tujuan umum ada yang saya bisa menggunakan dengan kde-open
, sqlite3
, dan aplikasi lainnya.
alias lastest="vim `ls -t | grep -vE "^total [0-9]*$" | head -n1`"
bash
autocomplete
dotancohen
sumber
sumber
$(ls -t|head -1)
ke dalam garis. Karena itu, jangan bersepeda. Karena tidak ada jawaban yang memuaskan, saya menerima jawaban yang paling mengajari saya dan menyediakan utilitas paling banyak.Jawaban:
Hapus saja
vim
dari alias. Lakukan sesuatu seperti ini:Anda kemudian dapat menggunakan program apa pun untuk membuka file terbaru:
dll.
Namun, ini akan pecah jika nama file Anda memiliki spasi atau karakter aneh yang mengapa Anda tidak boleh menguraikan
ls
. Cara yang lebih baik adalah seperti ini (tambahkan ini ke Anda.bashrc
):Fungsi ini akan menjalankan perintah apa pun yang Anda berikan sebagai argumen dan meneruskan hasil
find
panggilan (file terbaru) ke perintah itu. Jadi, Anda dapat melakukan hal-hal seperti:Jika Anda harus dapat melakukan hal-hal seperti
mv $(latest) foo/
coba yang ini sebagai gantinya:Kemudian, untuk menyalin file terbaru ke
bar/
, Anda akan melakukannyaDan Anda masih bisa melakukannya
latest emacs
dengan cara yang sama seperti sebelumnya.sumber
alias latest='\ls -tr | tail -n 1'
- ini akan berhasil jika Anda memilikils
alias.Anda dapat dengan mudah mengkonfigurasi ini di
zsh
, misalnya dengan sesuatu seperti ini:(Anda juga dapat mengubah baris sehingga gaya ini hanya digunakan untuk pola nama file tertentu)
zsh
sangat mirip dengan bash, Anda mungkin bisa menyebutnya superset dari bash - fitur- / penggunaan-bijaksana.Tapi mungkin bash memiliki fitur serupa.
sumber
zsh
tetapi jika saya pernah melakukannya, saya memiliki bookmark ini!zsh
!Karena file terbaru juga diurutkan terakhir, Anda dapat menggunakan
menu-complete-backward
.menu-complete
danmenu-complete-backward
siklus melalui penyelesaian atau masukkan penyelesaian pertama atau terakhir. Saya telah mengikat mereka ke tab opsi dan tab shift di~/.inputrc
:Emulator terminal Anda mungkin tidak dimasukkan
\e[Z
saat Anda menekan tab-geser. GunakanC-v
ataucat -v
untuk melihat teks apa yang dimasukkan saat Anda menekan kombinasi tombol.sumber
Latar belakang untuk pertanyaan adalah kecepatan penggunaan. Saya menemukan makro keyboard yang paling tepat. Tambahkan ke
~/.inputrc
:Ide selanjutnya: Awalnya, saya menginginkan sesuatu yang memberi saya file terbaru ke-1, ke-2, ke-3. Suatu gagasan adalah, untuk menandai tempat dengan token, misalnya "grep x _", kemudian jalankan makro keyboard "\ C-alatest-expansion \ Cm" dan "ekspansi terbaru" meminta daftar pemilihan kutukan untuk memilih dari file terbaru untuk setiap token "_" di baris perintah.
Saya menganggap ini pertanyaan penting, karena satu kelebihan yang tersisa dari GUI dibandingkan SHELL adalah bagi saya pemilihan file dan direktori yang baru digunakan / dibuat.
autojump
membantu sedikit untuk direktori, solusi untuk file tidak ada.sumber
$(ls -t|head -1)
ke dalam garis bash, jadi itu perlu ditafsirkan. Itu membuatnya kurang bermanfaat, tetapi itu masih trik yang bagus.