Belirli bir dizine geçmek için kısayol


12

Ubuntu terminalinde, bilgisayar her başlatıldığında kendimi belirli bir dizine geçmek için çok zaman harcıyorum. Bu işlemi kolaylaştırmamın bir yolu var mı? Kullanabileceğim bazı kısayol tuşları veya hızlı bir dizin değişikliği var mı (telefonda hızlı arama gibi)?

 eg:
    cd 1:Changes to saved directory one

Bu sorunun sorulmasından dört yıl sonra hiç kimse CDPATH'den bugüne kadar bahsetmedi. :(
kojiro

Bunun konsolunuza bağlı olabileceğini düşünüyorum, ancak Kubuntu terminalinde sadece bir dizine yer işareti koyabildiğim ve bu şekilde atlayabileceğim bir Yer İmleri menüsü var!
Pixel

Yanıtlar:


12

İki seçenek vardır:

  1. Bir bash terminalini her açışınızda belirli bir dizinde olmak istiyorsanız, ~/.bashrcdosyanızı düzenleyin ve cd Directoryörneğin satırı ekleyin cd ~/Desktop.

  2. Birkaç kısa keser sahip olmak istiyorsanız, her zaman size ayarlayabileceğiniz küresel değişkenlerini kullanabilirsiniz ~/.bashrcşöyle dosyası export a=/tmpve sonra yapmanız mümkün olacaktır cd $agetirecektir hangi /tmp.

Senin düzenledikten sonra unutmayın .bashrcdosyayı size terminali yeniden veya yeni bir açmak zorunda.


3
Terminalin yeniden başlatılmasını önlemek için source ~/.bashrcveya, daha kısa, kullanabilirsiniz . ~/.bashrc.
Gerhard Burger

18

Ayrıca bir göz atın autojump, daha önce ziyaret edilen dizinleri ile bir veritabanı oluşturur ve sonra ona atlayabilirsiniz. Yani örneğin

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

o zaman bir kez ziyaret ettiyseniz

j workstuff

ya da

j stuff

çünkü kısmi eşleşmelerle de çalışır. Birden fazla dizin eşleşirse, en çok ziyaret edilen dizine atlarsanız, bu istediğiniz dizin değilse, ikinciye gitmek için komutu tekrarlayın.

Ancak daha iyi olur! Dizininiz varsa

/home/user/stuff

ve sende yap

j stuff 

ve sonra TabTabTab(en çok ziyaret edilen sırayla)

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

ve sonra istediğiniz dizinin numarasına basabilirsiniz!

Yüklemek için sadece kullanabilirsiniz sudo apt-get install autojumpve sonra eklemeniz gerekir

source /usr/share/autojump/autojump.bash

sizin ~/.bashrc.

Daha fazla bilgi için buraya tıklayın: https://github.com/wting/autojump (ayrıca bunu en son sürümü sağlayan src'den nasıl kuracağınıza dair talimat)


1
Terminaldeki crtl + r ayrıca önceki komutlarda "kısmi eşleşmeler" arar. Gerçekten kullanışlı.
Dan

6

Bash takma adları , yaygın olarak çalıştırılan komutlara kısayollar oluşturmak için kullanışlıdır.

  • Alanında ~/.bashrc, takma ad oluşturmak için aşağıdakine benzer bir satır ekleyin:

    alias jump1='cd /long/path/name/that/is/frequently/used'
    
  • Terminali kapatıp tekrar açın veya çalıştırın source ~/.bashrc.

  • Şu andan itibaren, jump1bu uzun cdkomutu yürütmek için koşabilirsiniz .

Ayrıca bakınız:


4

Zaten bazı iyi cevaplar olsa da, eski pushdve popdBash yapılarının eksiksiz olması için dosya sisteminizdeki derin yollardaki dizinler arasında çok hızlı bir şekilde hareket etmenize izin verdiğimi düşündüm . Burger.gaautojump tarafından belirtilen yer işaretlerinin aksine , kullanılarak oluşturulan dizin yığını yalnızca geçicidir.pushd

GNU kılavuzunda belirtildiği gibi pushdve popdBash yapıları, geçici bir dizin yığını oluşturmak için kullanılır.

son ziyaret edilen dizinlerin listesi. Pushd yerleşik, geçerli dizini değiştirdikçe yığına dizinler ekler ve popd yerleşik, belirtilen dizinleri yığından kaldırır ve geçerli dizini kaldırılan dizine değiştirir. Dirs yerleşik dizin yığının içeriğini görüntüler.

Alışmak biraz zaman alır, ancak bu blogda ve bu sitede örneğin birçok yararlı öğretici vardır . Bash kılavuz sayfasına dahil edildiklerinden, komutlar için ayrı bir yönetim sayfası yoktur , ancak hızlı başvuru için GNU Bash sayfasını görüntüleyebilirsiniz.

En açık açıklama bu çok kullanışlı makalede ve tam olarak kullandığım pushdve popd:

Öncelikle, kullanmak dirsveya dirs -lyığın liste dizinlere ve dirs -cyığın temizlemek için.

Bir anlamda, geri dönmek istediğiniz yeri girerek

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

ve daha sonra yığına daha fazla dizin ekleyebilirsiniz, böylece 3 atanmış klasörü ve ~ana klasörünüzü içeren aşağıdaki gibi bir dirs listesi alırsınız :

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

Aslında popddizinleri yığından kaldırdığından hemen kullanmanıza gerek yoktur ; yapılacak en iyi şey pushdyığını döndürmek için kullanmaktır , böylece dizinler arasında geçiş yapmaya devam edebilir ve istediğiniz gibi sıralayabilirsiniz. Bu yararlı yığın döndürme hakkında daha fazla bilgi için Bash kılavuz sayfasına bakın .

Yukarıdaki dirslistede gösterildiği gibi tam olarak yığın düzenine pushd +3sahipseniz , sizi belirli Resimler klasörüne geçirir ve yığının üstüne yerleştirir ( ~dizin yığınında saymadığınız için +3 değil +4 değil ):

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

Yani istem okur,

~/Pictures/Canon/2012_07_01$

Bunları yığından kaldırmadan yapmaya devam edebilirsiniz, ancak cddizin yığına eklenenler dışındaki klasörleriniz dizin yığınızı pushddeğiştirir.

Dizin yığınını istediğiniz sırada düzenledikten sonra, dizinler arasında popdhızlı bir şekilde dolaşmak ve ardından ana klasöre geri dönmek için kullanabilirsiniz; örneğin, Picturesşu adrese geri dönebiliriz Downloads:

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

ve istem okur

~/Downloads/folder/interest$

Genel olarak bunun güzelliği, dizin yığınını ve içindeki öğelerin sırasını ayarlayabilmeniz pushdve daha sonra, bu dizinlerin her birinde düzenlemek için üç dosyanız olduğunu, popdbunları kaldırırken anında her birine geri dönebileceğinizi söyleyebilmenizdir. dizin yığını. Sonuncunuzla birlikte popddöneceksiniz ~. Özellikle derin dizinlere sahip olduğunuzda ve dizin dizinini aralarında hızlı bir şekilde hareket edecek şekilde ayarlamak için özellikle yararlı olur.

Ayrıca, bu soru komut satırı üzerinde çalışırken faydalı bulabileceğiniz bazı ipuçları içerir:


2

Daha hızlı yapmak için bazı komut satırı yolu olsa da, ben denilen bir Nautilus uzantısı kullanarak şahsen tavsiye ediyorum nautilus-open-terminal.

Önce paketi yükleyin nautilus-open-terminalve Nautilus ile en sevdiğiniz klasörleri yer imlerine ekleyin. Nautilus 3.6. * Üzerinde, dişli menüsüne gitmeniz ve Bu Konumu Yer İşareti Olarak Seçmeniz gerekecektir .

resim açıklamasını buraya girin

Ardından, favori dizinlerinizde daha hızlı gitmek için Nautilus yer işaretlerini kullanın ve boş bir alana sağ tıklayın ve Terminalde Aç'ı seçin .

resim açıklamasını buraya girin

Artık hem komut satırınıza hem de dosya yöneticinize favori dizinlerinize hızlı erişim sağlayabilirsiniz.


Orijinal poster terminalden çalışmaya çalışıyor ve genellikle terminalden çalışmak daha hızlı.
haziz

1
@haziz: Evet, ama AskUbuntu soruları ve cevapları sadece OP için değil, özellikle bunu web'de bulan tüm insanlar için yararlı olmalıdır. Bu benim için değerli bir cevap.
Javier Rivera

2

anc tam olarak bu kullanım durumu için tasarlanmıştır.

https://github.com/tobimensch/anc

İşte README.md'den bir alıntı:

# 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]

Tam açıklama: Ben anc.


1

.Bashrc dosyanıza (veya en sevdiğiniz kabuğun yapılandırma dosyasına bir takma ad yerleştirebilirsiniz - bunlar genellikle ana dizininizdedir):

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

Bash'da takma ad kullanma hakkında yararlı bir bilgi bağlantısı burada .


1

Bunun için bir bash işlevi kümesi oluşturdum ve bunu .bash_profile dosyasına ekledim

Senaryo

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
}

kullanım

getFolders

GetFolders'ı kullanarak her klasör için steno, açıklama ve konum listeniz vardır. GetFolders'ı steno ile kullandığınızda klasör konumu çıkacaktır. Parametre olmadan getFolders'ı çağırarak kullanılabilir klasörlerin ve açıklamalarının bir listesini alabilirsiniz

Klasör yolunu alma örneği

getFolders alias

çıktılar

/path/to/alias/folder

Kullanılabilir klasörleri alma örneği.

getFolders

çıktılar

alias
- Description of alias
alias2
- Description of alias2

gf

gf, getFolders için bir kısayoldur

gf alias2

çıktılar

/path/to/alias2/folder

git

goto seçilen klasöre cd basmanın basit bir yoludur.

goto alias

çıktı

cd / path / to / alias / klasör üzerinde çalışıyor

/ / Yol / takma / klasör>

Neden birden fazla işlev var?

Unix ve Linux'un kalbinde, birlikte zincirlenebilen basit yeniden kullanılabilir fonksiyonlar var. Sadece seçilen bir konuma taşımak değil, diğer ad tarafından bir yol döndüren bir işlev olduğu için bu yöntemi tercih ederim. Bu işlevi, o noktadan o yola kadar cd gibi bir şey yapmak için kullanabilirsiniz.


0

CDPATHOrtam değişkenini .bashrc veya .bash_profile dosyasında ayarlamayı düşünün . CDPATH, diğer PATHbenzer değişkenlerin aldığı aynı kolonla ayrılmış formu alır ve cddizinlerinizi bulmak için kısayollar kullanmanıza izin verir . Örneğin:

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

0

belirli bir dizine kendi kısayolunuzu ayarlayabilirsiniz. Örneğin, iç içe dizine gitmek istiyorsunuz, genellikle

cd / ana sayfa / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target

genellikle cd komutunu kullanır ve tüm dizin adlarını yazarsınız ya da yazmayı atlamış olabilirsiniz (SEKME düğmesini kullanarak), ancak yine de birkaç dakikanızı alır.

Yani, zaman kazanmak için şunları yapabilirsiniz bir takma ad yapmak terminalde bunun. Takma ad ayarlamak tek seferlik görevidir.

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

Şimdi, sadece zorunda kullanmak takma adını ( dir hedef hedef dizine taşımak için).


0

Bulduğum en hızlı yol xd, Frank B. Brokken adında bir Hollandalı tarafından yazılmış bir "eXchange Dizinleri" programı.

Dosya sisteminizde, yazdığınız bir kısaltmaya çözümlenebilecek tüm yolları bularak çalışır; örneğin ulb, /usr/local/binböyle bir klasör sisteminiz varsa, bunun için durabilir :

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

2 düğmesine bastığınızda içeri girersiniz /usr/local/bin.

Gerçekten eski bir yazılım ve artık orijinal konumunda mevcut değil, yazarla temas yok, bu yüzden kaybolmasını önlemek için Github deposuna koydum:

https://github.com/mrkafk/exchange_directories


-1

Bunu yapmak için DirB (Directory Bookmarks) kullanıyorum. Çok hoş! http://www.linuxjournal.com/article/10585

Benimkini zevkime uyacak şekilde değiştirdim ve kullanımı daha kolay ve daha net olmalıyım.


Ubuntu'ya Sor hoş geldiniz! Bu teorik olarak soruyu cevaplayabilse de , cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak tercih edilir.
fossfreedom
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.