Saya menggunakan manajer jendela ubin dan saya beralih dari gnome-terminal
dengan banyak tab ke beberapa urxvt
contoh yang dikelola oleh manajer jendela. Salah satu fitur yang saya lewatkan adalah kemampuan untuk membuka terminal baru yang secara default ke direktori kerja yang terakhir.
Singkatnya: Saya perlu cara untuk membuka urxvt (bash) baru yang default ke $ PWD dari yang terakhir digunakan.
Satu-satunya solusi yang muncul di pikiran saya adalah untuk menyelamatkan jalan saat ini pada setiap orang cd
dengan sesuatu seperti ini:
echo $PWD > ~/.last_dir
dan kembalikan jalur pada terminal baru dengan cara ini:
cd `cat ~/.last_dir`
Saya dapat sumber perintah kedua .bashrc
tetapi saya tidak tahu bagaimana menjalankan yang pertama pada setiap perubahan direktori :)
Setiap solusi sederhana yang tidak melibatkan screen
atau tmux
penggunaan dipersilahkan.
sumber
tabbed
ekstensi perl " " dariurxvt
?Jawaban:
Saya melihat tiga solusi menggunakan
.last_dir
. Anda dapat menempatkanecho $PWD > ~/.last_dir
keduanya:Dalam fungsi khusus yang akan menjadi pembungkus untuk
cd
:Tempatkan ini di Anda
~/.bashrc
dan kemudian gunakancd_
bukan cd setiap kali Anda ingin direktori kerja baru Anda disimpan.Dalam
$PROMPT_COMMAND
( tidak disarankan ):Anda dapat menguji ini langsung dari terminal atau menempatkannya di
~/.bashrc
. Solusi ini, bagaimanapun, memicu penulisan disk setiap kali prompt muncul, yang dapat menyebabkan masalah - tetapi di sisi lain,.last_dir
akan berisi direktori saat ini tidak peduli bagaimana Anda sampai di sana.Dalam skrip ekstensi perl khusus untuk
rxvt
. Saya belum pernah membuat sendiri, tetapi Anda dapat menemukan beberapa contoh di web.sumber
PROMPT_COMMAND
, salah satu variabel lingkungan yang paling banyak disalahgunakan sepanjang masa$PWD
itu tidak dikutip.) Biarkan saya memperbaiki ini ... Ada. Yang seharusnya melakukannya.Saat ini saya menggunakan versi solusi # 1 ini
di dalam saya
.zshrc
sumber
trap "[ -f ~/.last_dir ] && rm ~/.last_dir" EXIT
saya ingin mulai selalu di rumah saya kecuali ketika saya membuka tab baruauto_cd
fitur zsh. Ternyata kita dapat menggunakan pengait yang zsh sediakanIni sebenarnya cukup sepele; jika Anda menjalankan
urxvt
dari dalamurxvt
jendela yang ada , jendela baru akan berada di direktori yang sama. Saya telahdup
aliasurxvt &
untuk alasan ini. Jika Anda ingin terikat dengan hotkey, Anda dapat menggunakanbind
perintah bash . Misalnya, untuk mengikatnya ke F1:sumber
( urxvt & ) &>/dev/null
bukan hanya latar belakang.Cukup tambahkan
. /etc/profile.d/vte.sh
Anda~/.bashrc
untuk mendapatkan fitur yang samasumber
Tentu saja ini adalah pendekatan kerja untuk memodifikasi
cd
perilaku, tetapi saya ingin menunjukkan solusi yang lebih sederhana. Di man bash (1) saya menemukan bahwa jika sebuah bash interaktif keluar, ia berjalan~/.bash_logout
jika ada. Jadi, alih-alih menyimpan jalur di setiap doacd
jalur terakhir dapat disimpan saat keluar.Saya
~/.bash_logout
sangat sederhana:Dan di suatu tempat di saya
.bashrc
saya menempatkan baris ini:sumber
.bash_logout
berjalan hanya ketikalogin shells
keluar, itu tidak selalu terjadi.bash
keluar dengan:trap "echo $PWD > ~/.lastdir" EXIT"
trap
pendekatannya juga bagus, saya suka!Sangat sering saya menggunakan beberapa terminal windows sekaligus, masing-masing dengan banyak tab di dalamnya. Sebagai contoh: satu jendela untuk tab pengembangan kode sumber, satu jendela untuk file lateks, satu jendela untuk eksekusi R dan skrip, dll. Dalam satu jendela, saya ingin terminal tab baru untuk mengubah ke direktori yang digunakan terakhir di jendela tertentu (Ini digunakan untuk bekerja di masa lalu, tetapi dengan versi gnome baru, entah bagaimana tidak). Solusi kotor berikut berfungsi dengan baik untuk saya. Saya telah memasukkan ini ke dalam .bashrc.
sumber