Bagaimana cara pergi ke direktori kerja sebelumnya di terminal?

213

Di terminal, bagaimana saya bisa mendefinisikan kunci untuk pergi ke direktori sebelumnya ketika saya mengubah direktori dengan cdperintah?

Sebagai contoh, saya masuk /opt/soft/bindan saya cdmasuk /etc/squid3dan saya ingin kembali ke direktori pertama.

Hojat Taheri
sumber

Jawaban:

284

Anda dapat gunakan

cd -

atau bisa digunakan

cd $OLDPWD
Raphael Ahrens
sumber
3
Adakah yang tahu mengapa nama direktori dicetak ke konsol saat menggunakan "cd -"?
dtmland
4
Mungkin karena cangkang yang lama tidak menampilkan nama direktori saat ini di prompt, akan sangat membantu untuk melihat nama direktori saat Anda mengetik cd -. Misalnya ketika Anda mengetik cd /usr/localAnda tahu bahwa Anda berada di dalamnya /usr/loal, tetapi ketika Anda mengetik cd -Anda tidak selalu ingat dari direktori mana Anda berasal. Jadi itu menyelamatkan Anda dari mengetik cd -; pwd. Tapi ini semua spekulasi.
Raphael Ahrens
2
Atau Anda dapat menggunakan aliasing: Siapkan alias alias -- -='cd -'saat menggunakan -(1 karakter) alih-alih cd -(4 karakter). Lebih cepat:D
ADTC
2
Bagaimana saya bisa hidup tanpa ini?
VSZM
1
@ AndréKuhlmann Anda dapat melakukannya cd -dua kali. Apakah cd /; cd /usr; cd -; cd -Anda harus berada dalam /usr. Tapi mungkin aku rindu mengerti pertanyaanmu.
Raphael Ahrens
54

Jawaban lain pasti lengkap dalam arti jawaban langsung. cd -dan cd $OLDPWDjelas merupakan pilihan utama untuk ini. Namun, saya sering menemukan bahwa masuk ke alur kerja pushddan popdbekerja lebih baik.

Singkatnya, jika Anda pindah ke direktori dengan tujuan akhir untuk kembali ke tempat Anda mulai, gunakan pushd/ popd.

Contoh yang diperluas

Perbedaan utama mudah ditunjukkan oleh contoh.

$ cd dir1
$ pushd dir2

Pada titik ini, Anda memiliki tumpukan direktori dir2, dir1. Berjalan pushdtanpa argumen akan membuat Anda kembali dir1dengan tumpukan sekarang sebagai dir1, dir2. popdakan melakukan hal yang sama, tetapi akan meninggalkan Anda dengan tumpukan direktori kosong. Ini tidak jauh berbeda dari bagaimana Anda seharusnya dengan cd -alur kerja.

Namun, sekarang Anda sekarang dapat mengubah direktori beberapa kali dan kembali ke dir1. Sebagai contoh,

$ cd dir1
$ pushd dir2
$ cd dir3

Jika Anda menjalankan popdpada titik ini, Anda akan kembali ke dir1.

Josh Berry
sumber
2
Anda juga dapat menumpuk direktori, jadi gunakan berulang kali pushddan kembali ke folder sebelumnya sambil popd-ing.
Bernhard
1
Pasti. Saya hampir memberikan contoh besar yang termasuk memeriksa stack dirs -v, tetapi kenyataannya bagi saya adalah sering kali hanya case sederhana yang benar-benar saya gunakan. (Atau, lebih buruk lagi, saya membuat kesalahan ketika mencoba push +2atau serupa) Juga, saya pikir langkah kecil untuk membuat seseorang mencoba alur kerja. :)
Josh Berry
Bagaimana Anda cdke atas tumpukan tanpa muncul?
Jon Deaton
18

Kamu harus menggunakan:

cd ~-

itu melakukan hal yang sama cd -(dari jawaban yang diterima saat ini) tanpa gema direktori yang menjengkelkan dan lebih mudah untuk mengetik daripada cd "$OLDPWD"atau cd - > /dev/null.

Anthon
sumber
2
Mengarahkan kembali gema ke file null! Itu jenius !!
Ram
2
Gema menunjukkan direktori baru bukan yang sebelumnya. Dan saya akan merasa berguna, sehingga saya tahu di mana saya sekarang, terutama jika saya di shell yang hanya menampilkan nama direktori saat ini (atau tidak sama sekali) pada prompt, dan saya terlalu terikat untuk mengubah meminta untuk menampilkan path lengkap. Tentu saja, jika prompt Anda sudah menunjukkan path lengkap, gema akan berlebihan dan menjengkelkan. Dalam hal ini, saya pikir Anda dapat mencoba melakukannya alias -- -='cd "$OLDPWD"'menggunakan -(1 char) daripada cd ~-(5 char). :)
ADTC
Sumber dan penjelasan: unix.stackexchange.com/a/330885/38213 Spoiler, - adalah operan dan ~ adalah alias path. Jadi cd ~-/..berfungsi tetapi cd -/..tidak!
Ray Foss
16
$ cd - 

akan berubah ke direktori kerja sebelumnya.

mezi
sumber
3

Anda dapat "mendefinisikan kunci" untuk 'cd -' dengan mengedit file '~ / .bashrc' Anda dan menyertakan alias untuk perintah. Misalnya Anda dapat menambahkan 'cdc' untuk menjadikannya 'cd -' yang akan memberi Anda cara yang lebih singkat untuk sampai ke direktori terakhir dengan menambahkan:

alias cdc='cd -'

Dengan cara ini Anda cukup mengetik 'cdc' dan itu akan menempatkan Anda di direktori kerja terakhir Anda.

Atari911
sumber
5
Dan membingungkan Anda tanpa akhir ketika Anda menggunakan sistem di mana alias itu tidak ada. Ini menghemat mengetik satu karakter sesekali. Kenapa repot-repot?
CVn
2
"Di terminal, bagaimana saya bisa mendefinisikan kunci untuk pergi ke direktori sebelumnya" Saya tidak pernah bingung. Ini hanya jalan pintas, ketika Anda berada di sistem lain hanya menggunakan cara lama.
Atari911
@ Atari911 pertanyaan bagus! inilah jawabannya: stackoverflow.com/questions/4200800 Inilah yang saya lakukan (terikat F12): bind '"\e[24~":"\C-k \C-ucd -\n"'(atau lebih baik memindahkannya ke inputrcfile seperti yang disebutkan dalam jawaban).
ADTC
1

cd ..pergi ke folder preseden di pohon folder.
cd -pergi ke folder yang sebelumnya. Perintah ini tidak berfungsi pada beberapa distro (ubuntu 16.04), berfungsi di debian 9.

Kalajengking
sumber