Jalan pintas untuk beralih ke direktori yang diberikan

12

Di terminal Ubuntu saya menemukan diri saya menghabiskan banyak waktu untuk beralih ke direktori tertentu setiap kali komputer dinyalakan. Apakah ada cara agar proses ini lebih mudah? Apakah ada beberapa hotkey atau perubahan direktori cepat yang dapat saya gunakan (seperti panggilan cepat di telepon)?

 eg:
    cd 1:Changes to saved directory one
Pengembang Android
sumber
Empat tahun sejak pertanyaan ini diajukan dan tidak ada yang menyebutkan CDPATH hingga hari ini. :(
kojiro
Saya kira ini mungkin tergantung pada konsol Anda, tetapi di terminal Kubuntu ada menu Penanda di mana saya bisa mem-bookmark direktori dan langsung menuju ke sana!
Pixel

Jawaban:

12

Ada dua opsi:

  1. Jika Anda ingin berada di direktori tertentu setiap kali Anda membuka terminal bash, edit ~/.bashrcfile Anda dan cukup tambahkan baris cd Directory, misalnya cd ~/Desktop.

  2. Jika Anda ingin memiliki beberapa jalan pintas, Anda selalu dapat menggunakan variabel global, yang dapat Anda atur di ~/.bashrcfile Anda sebagai berikut export a=/tmpdan kemudian Anda akan dapat melakukan cd $ayang akan membawa Anda ke sana /tmp.

Ingatlah bahwa setelah mengedit .bashrcfile Anda, Anda harus me-restart terminal atau membuka yang baru.

Dan
sumber
3
Untuk menghindari restart terminal Anda dapat menggunakan source ~/.bashrcatau, lebih pendek . ~/.bashrc,.
Gerhard Burger
18

Lihat juga autojump, itu membangun database dengan direktori yang dikunjungi sebelumnya dan kemudian Anda dapat melompat ke sana. Jadi misalnya kamu punya

/home/user/this/long/and/annoyingly/deep/directory/workstuff

maka jika Anda telah mengunjunginya setelah Anda dapat melewatinya

j workstuff

atau bahkan

j stuff

karena ini juga berfungsi dengan sebagian pertandingan. Jika lebih dari satu direktori cocok Anda melompat ke yang paling banyak dikunjungi, jika ini bukan yang Anda inginkan, maka ulangi perintah untuk pergi ke yang kedua.

Namun itu menjadi lebih baik! Jika Anda juga memiliki direktori

/home/user/stuff

dan kamu juga

j stuff 

dan kemudian TabTabTabAnda mendapatkan (dalam urutan paling banyak dikunjungi)

$ j stuff__
stuff__1__/home/user/this/long/and/annoyingly/deep/directory/workstuff
stuff__2__/home/user/stuff

dan kemudian Anda cukup menekan nomor direktori yang Anda inginkan!

Untuk menginstal Anda cukup menggunakan sudo apt-get install autojumpdan kemudian Anda perlu menambahkan

source /usr/share/autojump/autojump.bash

untuk Anda ~/.bashrc.

Informasi lebih lanjut di sini: https://github.com/wting/autojump (juga instruksi tentang cara menginstal ini dari src yang memberi Anda versi terbaru)

Gerhard Burger
sumber
1
crtl + r di terminal juga mencari "sebagian kecocokan" pada perintah sebelumnya. Sangat berguna juga.
Dan
4

Meskipun sudah ada beberapa jawaban bagus, saya pikir saya akan menyebutkan untuk kelengkapan yang lama pushddan popdBash bawaan dengan memungkinkan Anda untuk bergerak sangat cepat antara direktori di jalur yang dalam di sistem file Anda. Berbeda dengan autojumpbookmark yang disebutkan oleh burger.ga , tumpukan direktori yang dibuat dengan menggunakan pushdhanya sementara.

Sebagai catatan manual GNU , pushddan popdBash builtin digunakan untuk membangun tumpukan direktori sementara yaitu a

daftar direktori yang baru-baru ini dikunjungi. Pushd builtin menambahkan direktori ke stack saat ia mengubah direktori saat ini, dan popd builtin menghapus direktori yang ditentukan dari stack dan mengubah direktori saat ini ke direktori yang dihapus. Dirs builtin menampilkan isi dari tumpukan direktori.

Dibutuhkan sedikit membiasakan diri, tetapi ada banyak tutorial yang bermanfaat di luar sana di blog ini dan situs ini misalnya. Tidak ada halaman manual terpisah untuk perintah-perintah tersebut, karena mereka termasuk dalam halaman manual Bash, tetapi untuk referensi cepat Anda dapat melihat halaman GNU Bash .

Penjelasan paling jelas ada di artikel yang sangat berguna ini dan persis seperti yang saya gunakan pushddan popd:

Pertama, gunakan dirsatau dirs -luntuk mendaftar direktori pada stack dan dirs -cuntuk menghapus stack.

Dalam arti Anda menandai lokasi di mana Anda ingin kembali dengan memasukkan

pushd /home/mike/Pictures/Canon/2012_07_01

dan kemudian Anda dapat menambahkan lebih banyak direktori ke tumpukan, sehingga Anda mendapatkan daftar direktori seperti di bawah ini, yang mencakup 3 folder yang ditunjuk dan ~folder rumah Anda :

dirs
~/Downloads/folder/interest ~/Music/artist/album ~ ~/Pictures/Canon/2012_07_01

Anda sebenarnya tidak perlu menggunakan popdlangsung karena itu menghapus direktori dari tumpukan; hal terbaik yang harus dilakukan adalah menggunakan pushduntuk memutar tumpukan, sehingga Anda dapat terus beralih di antara direktori dan memesannya seperti yang Anda inginkan. Untuk lebih lanjut tentang rotasi tumpukan yang berguna lihat halaman manual Bash .

Jika Anda memiliki susunan susunan persis seperti yang dirsditunjukkan daftar di atas , pushd +3mengalihkan Anda ke folder Gambar spesifik dan menempatkannya di atas tumpukan (itu adalah +3 dan bukan +4 karena Anda tidak menghitungnya ~di tumpukan direktori):

pushd +3
~/Pictures/Canon/2012_07_01 ~/Downloads/folder/interest ~/Music/artist/album ~

Jadi prompt berbunyi,

~/Pictures/Canon/2012_07_01$

Anda dapat terus melakukan ini tanpa menghapusnya dari tumpukan, meskipun folder apa pun yang Anda gunakan cd, selain yang ditambahkan ke tumpukan direktori pushd, akan mengubah tumpukan direktori Anda.

Setelah tumpukan direktori diatur sesuai urutan yang Anda inginkan, Anda dapat menggunakan popduntuk dengan cepat menelusuri direktori dan kemudian kembali ke folder rumah; misalnya, dari Pictureskita dapat kembali ke Downloads:

popd
~/Downloads/folder/interest ~/Music/artist/album ~

dan prompt berbunyi

~/Downloads/folder/interest$

Secara umum keindahan dari ini adalah Anda dapat mengatur tumpukan direktori dan urutan item di dalamnya dengan pushddan kemudian, katakanlah Anda memiliki tiga file untuk diedit di masing-masing direktori, Anda dapat kembali secara instan ke masing-masing dengan popdsambil menghapusnya dari tumpukan direktori. Kemudian dengan yang terakhir, popdAnda akan kembali ke ~. Ini menjadi sangat berguna ketika Anda memiliki direktori yang sangat dalam dan dapat menggunakannya untuk mengatur tumpukan direktori untuk dengan cepat berpindah di antaranya.

Selain itu, pertanyaan ini berisi beberapa kiat yang mungkin berguna saat Anda mengerjakan baris perintah:

Komunitas
sumber
2

Meskipun ada beberapa cara baris perintah untuk melakukannya lebih cepat, saya secara pribadi akan merekomendasikan menggunakan ekstensi Nautilus yang disebut nautilus-open-terminal.

Pertama instal paket nautilus-open-terminaldan bookmark folder favorit Anda dengan Nautilus. Pada Nautilus 3.6. *, Anda harus masuk ke menu roda gigi dan pilih Tandai Lokasi ini .

masukkan deskripsi gambar di sini

Kemudian gunakan bookmark Nautilus untuk lebih cepat di direktori favorit Anda, dan klik kanan pada ruang kosong dan pilih Buka di Terminal .

masukkan deskripsi gambar di sini

Sekarang Anda dapat memiliki akses cepat command line dan file manager ke direktori favorit Anda.

remjg
sumber
Poster asli berusaha bekerja dari terminal dan seringkali lebih cepat untuk bekerja dari terminal.
haziz
1
@haziz: Ya, tetapi pertanyaan dan jawaban AskUbuntu seharusnya bermanfaat tidak hanya untuk OP, tetapi khusus untuk semua orang yang menemukan ini di web. Ini jawaban yang berharga buat saya.
Javier Rivera
2

anc dirancang tepat untuk use case itu.

https://github.com/tobimensch/anc

Berikut kutipan dari README.md:

# make the current directory the default anchor:
$ anc s

# go to /etc, then /, then /usr/local and then back to the default anchor:
$ cd /etc; cd ..; cd usr/local; anc

# go back to /usr/local :
$ anc b

# add another anchor:
$ anc a $HOME/test

# view the list of anchors (the default one has the asterisk):
$ anc l
(0) /path/to/first/anchor *
(1) /home/usr/test

# jump to the anchor we just added:
# by using its anchor number
$ anc 1
# or by jumping to the last anchor in the list
$ anc -1

# add multiple anchors:
$ anc a $HOME/projects/first $HOME/projects/second $HOME/documents/first

# use text matching to jump to $HOME/projects/first
$ anc pro fir

# use text matching to jump to $HOME/documents/first
$ anc doc fir

# add anchor and jump to it using an absolute path
$ anc /etc
# is the same as
$ anc a /etc; anc -1

# add anchor and jump to it using a relative path
$ anc ./X11 #note that "./" is required for relative paths
# is the same as
$ anc a X11; anc -1

# using wildcards you can add many anchors at once
$ anc a $HOME/projects/*

# use shell completion to see a list of matching anchors
# and select the one you want to jump to directly
$ anc pro[TAB]

Pengungkapan penuh: Saya penulis anc.

Tobi
sumber
1

Anda dapat menempatkan alias di file .bashrc Anda (atau file konfigurasi untuk shell favorit Anda - biasanya ada di direktori home Anda):

alias cd1="cd directory/directory/my_destination/"

Tautan info yang berguna tentang penggunaan alias di bash ada di sini .

Haziz
sumber
1

Saya membuat satu set fungsi bash untuk ini dan menambahkannya ke .bash_profile saya

Naskah

goto(){
    cd $(getFolders $1)
}

gf(){
    getFolders $1
}

getFolders (){

    local folderList=(
     'alias'
     'Description of alias'
     '/path/to/alias/folder'
     'alias2'
     'Description of alias2'
     '/path/to/alias2/folder'
    )
    local moved="0"
    local count=0

    # Returns the path to the project
    while [ "${folderList[count]}" != "" ]
    do
        if [ "$1" == "${folderList[count]}" ]; then
            echo ${folderList[$(( $count + 2 ))]}
            moved="1"
        fi
        count=$(( $count + 3 ))
    done

    # Returns all project names
    if [ "$moved" != "1" ]; then
        count=0
        while [ "${folderList[count]}" != "" ]
        do
            echoc 6 ${folderList[count]}
            echo - ${folderList[count+1]}
            count=$(( $count + 3 ))
        done
    fi
}

Pemakaian

getFolders

Menggunakan getFolders Anda memiliki daftar singkatan, deskripsi, dan lokasi untuk setiap folder. Ketika Anda menggunakan getFolders dengan tulisan cepat, itu akan menampilkan lokasi folder. Anda bisa mendapatkan daftar folder yang tersedia dan deskripsinya hanya dengan memanggil getFolders tanpa parameter

Contoh mendapatkan jalur folder

getFolders alias

output

/path/to/alias/folder

Contoh mendapatkan folder yang tersedia.

getFolders

output

alias
- Description of alias
alias2
- Description of alias2

gf

gf adalah jalan pintas untuk getFolders

gf alias2

output

/path/to/alias2/folder

pergi ke

goto adalah cara sederhana untuk melakukan cd ke folder yang dipilih.

goto alias

keluaran

cd telah berjalan di / path / ke / alias / folder

/ path / ke / alias / folder>

Mengapa memiliki banyak fungsi

Di jantung Unix dan Linux Anda memiliki fungsi-fungsi sederhana yang dapat digunakan kembali yang dapat dirangkai bersama. Saya lebih suka metode ini karena tidak hanya memindahkan Anda ke lokasi yang dipilih tetapi, adalah fungsi yang oleh alias mengembalikan jalur. Anda dapat menggunakan fungsi ini untuk melakukan apa saja dari titik itu seperti cd ke jalur itu.

Michael Warner
sumber
0

Pertimbangkan untuk mengatur CDPATHvariabel lingkungan di .bashrc atau .bash_profile Anda. CDPATH mengambil bentuk dipisahkan-usus yang sama dengan PATHvariabel suka lainnya , dan mari kita cdambil jalan pintas untuk menemukan direktori Anda. Sebagai contoh:

$ mkdir -p /tmp/foo/bar/baz
$ CDPATH='/tmp/foo/bar'
$ cd baz
/tmp/foo/bar/baz
kojiro
sumber
0

Anda dapat mengatur pintasan Anda sendiri ke direktori tertentu. Misalnya Anda ingin pergi ke direktori bersarang, umumnya Anda lakukan

cd / home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target

Anda biasanya menggunakan perintah cd dan kemudian ketik semua nama direktori atau mungkin Anda lewati mengetik (menggunakan tombol TAB) tetapi masih membutuhkan beberapa menit Anda.

Jadi, untuk menghemat waktu Anda, Anda bisa membuat alias di terminal. Satu kali tugasnya untuk mengatur alias.

alias dir-target = '/ home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target'

Sekarang, Anda hanya perlu menggunakan nama alias ( dir-target ) untuk pindah ke direktori target Anda.

sanjay mundhra
sumber
0

Cara tercepat yang saya temukan adalah xd, program "eXchange Directories" yang ditulis oleh orang Belanda bernama Frank B. Brokken.

Ia bekerja dengan menemukan semua jalur pada sistem berkas Anda yang dapat mengatasi singkatan yang Anda ketikkan, mis. ulbBisa berarti /usr/local/binjika folder tersebut ada di sistem Anda:

% cx ulb
Multiple Solutions:
 1: /usr/lib/binfmt.d/
 2: /usr/local/bin/

Saat menekan 2 Anda berada /usr/local/bin.

Ini perangkat lunak yang sangat tua dan tidak lagi tersedia di lokasi asli, tidak ada kontak dengan penulis, jadi untuk mencegahnya hilang, saya letakkan di repo Github:

https://github.com/mrkafk/exchange_directories

LetMeSOThat4U
sumber
-1

Saya menggunakan DirB (Direktori Bookmarks) untuk melakukan ini. Sangat bagus! http://www.linuxjournal.com/article/10585

Saya telah memodifikasi milik saya sesuai dengan selera saya dan lebih mudah digunakan dan lebih jelas.

fstephens
sumber
Selamat Datang di Tanya Ubuntu! Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
fossfreedom