Bazı iyi bilinen dizinlere cd yazmak için gereken yazımı kısaltabilir miyim


11

Kendimi bir terminal açarken buluyorum ve daha sonra yolu çok uzun olan aynı dizine çok fazla CD yazıyorum.

Bu, çok fazla cd'ing yaptığım ve sekmeyi çok hızlandırmak için kullanıyorum.

Ben hızlı bir şekilde derin iç içe dizinde olacağını ki bu dizine bağlantı bir tür ve daha sonra sadece cd bir çeşit olabilir eğer harika olurdu.

Mümkün mü?


1
Bir github projesine cd'ing ve çalışan gibi küçük (ilgili) görevleri yapmak birkaç (bash) komut dosyaları var git status. Ben de benim, bazı takma adları var .bash_profile. Tam olarak ne istediğini değil, ilgili olduğunu.
keyser

Yanıtlar:


24

İşte cdsık sık karmaşık yollar ile başa çıkmak için bir yol .

mkdir ~/Links
ln -s /complexpath/there ~/Links

bu sembolik bağlantıyı yaratacaktır

~/Links/there

Bu yeni kullanmak için Linksverimli bir dizin, giriş kabuğu ise bash Gözlerinde farklı bu komutu dahil sadece ~/.profile(bütün Bourne tarzı kabuklarla kullanılır bash, ksh, zsh...):

CDPATH=~/Links:.
export CDPATH

Bu, her biri cdiçin kabuğunuzun bir yerel yol adı bulmak için 2 dizine bakacağı anlamına gelir :

~/Links
.

Test etmek için oturumunuzu yeniden başlatmanız gerekmez, sadece çalıştırın:

. ~/.profile

Bu sadece okumak benim anlamına gelir ~/.profile. ( ~/.bashrcDeğiştirmediğinizde aynı değişken başlatmayı tekrarlamanıza gerek olmadığından, içine koymak zorunda kalmayacaksınız.)

Test ettikten sonra, oturumunuzu yeniden başlatabileceksiniz;).

Şu andan itibaren, her gitmek istediğinizde aşağıdakileri thereyazmanız gerekecek:

cd there

Bu gördüğüm en şık genel çözüm. Genellikle (aliasing gibi ortak hedefler için takma ad yapmak cdoraiçin cd $ORACLE_HOMEve bu tür ...)
bmike

Herkes Finder arayüzü üzerinden basit bir eşdeğeri ile ilgilenebilir mi?
dan

11

Bir takma ad tanımlamak, daha uzun bir komut için kısa bir kısaltmaya sahip olmanın çok kolay bir yoludur. Takma adlarınız doğru olduğunda, .bashrc dosyanızda (veya başka bir başlangıç ​​dosyasında) bir bölüm oluşturabilirsiniz, böylece başlattığınız her yeni kabuk için bu takma adları yeniden yazmak zorunda kalmazsınız:

.bashrc içinde:

alias ws4='ssh qsv-rhws4'
alias httpdlog='cd /var/log/httpd/'
alias EC2='ssh -i BMTestEC2.pem ec2-user@xxxxxxxx.compute.amazonaws.com'

vb.

Oturumu kapatıp tekrar açın (veya sadece çalıştırın . ~/.bashrc) ve şimdi yazabilirsiniz httpdlogve cd'yi gerçekleştirir. Veya ws4aslında ssh komutunu vb. Gerçekleştirir.

Bu, ana dizininizin karışıklık gibi görünmesine neden olacak (büyük miktarda) boş bağlantı oluşturma ihtiyacını ortadan kaldırır.


10

Otomatik atlama veya z tuşunu kullanmayı deneyin .

Bu ikisinden birini yükledikten sonra, cdnormal gibi gibisiniz ve en çok ziyaret ettiğiniz dizinleri öğreniyorlar ve yolun sadece bir kısmını yazarak bunlara gitmenizi sağlıyorlar:

$ cd /very/long/path/foobar
$ cd
$ z foobar
$ echo $PWD
/very/long/path/foobar

İkisinin z'sini tercih ederim.


autojump hakkında bilmiyorum ama 'z' script kayalar!
Kris

7

Ben çok tavsiye FASD autojump benzer ve z ama daha iyi IMHO. Web sitesinden:

Fasd ("hızlı" olarak telaffuz edilir) bir komut satırı üretkenlik güçlendiricisidir. Fasd, POSIX kabukları için dosyalara ve dizinlere hızlı erişim sağlar. Autojump, z ve v gibi araçlardan esinlenmiştir. Fasd, eriştiğiniz dosya ve dizinleri izler, böylece komut satırında hızlı bir şekilde bunlara başvurabilirsiniz.

Fasd adı, varsayılan olarak önerilen f (dosyalar), a (dosyalar / dizinler), s (göster / ara / seç), d (dizinler) takma adlarından gelir.

Fasd, dosyaları ve dizinleri "frekanssızlık", yani hem "frekans" hem de "yenilik" olarak sıralar. "Bereket" terimi ilk olarak Mozilla tarafından üretildi ve Firefox'ta (link) kullanıldı.


4

Alternatif olarak bir takma ad da oluşturabilirsiniz. Aşağıdakileri .bashrc veya .aliases gibi bir şeye atın

alias shortcut='cd ~/path/to/deep/deep/deep/directory/'

Sonra hangi dosyanın olursa olsun sourced olduğundan emin olun . Benim takma adlar .bash_profile bu satır ile kaynak .bashrc içinde: source ~/.bashrc


2

Kolaylık simgeleri eklemek, özel bir dizin veya iki için iyidir, ancak çok hızlı bir şekilde yönetmek için bir acı olur. Çok daha iyi bir çözüm olduğunu ortam değişkenini kullanmak CDPATH, mevcut üzerinde bashsadece bu amaç için ve diğer kabukları.

CDPATHPATHbir dizin adı aramak için iki nokta üst üste işaretli yerlerin listesidir (gibi ). Hem mutlak hem de göreceli yol adları içerebilir. Benimki gibi bir şeye ayarladım export CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>".

Bu kurulumla, cd pdftools her yerden yazabilirim ve beni götürür ~/projects/pdftools. (Bir sembolik bağ ile, yazmak zorunda ediyorum cd ~/pdftoolsbenim ANA dizininde olmasaydı.) Ayrıca alt dizinleri içine kısayol yapabilirsiniz: cd pdftools/bin.

..Benim de CDPATHbeni yazın sağlar cd sisterdiryerine cd ../sisterdirbeklediğiniz gibi her yerde yeni dizinleri oluştururken, vb CDPATHotomatik bulunabilir edeceğiz cd- Yeni sembolik veya takma ad oluşturmaya gerek kalmadan.

bash_completionDebian sistemlerinde dağıtılan dosyayı kullanırsanız bu özellik daha da güzelleşir . OS X kutumla birlikte gelmedi, bu yüzden bir kopya aldım ve iyi çalışıyor. (İle alın brew, ya da sadece elle indirmek burada .) Bu dosya komut tamamlanması için geliştirmeler tanımlar, ben yazabilirsiniz böylece cd pdf<TAB>ve pdftoolsdizin bulundu ve gelen genişletilir her yerde üzerinde CDPATH.


1

Elbette: Sembolik bir bağlantı oluşturun

ln -s /some/really/long/path/to/somewhere/ ~/shortcut
cd ~/shortcut


1

Alternatif olarak balık kabuğunu takmayı da deneyebilirsiniz.

http://fishshell.com/

Bunun komutlar için mükemmel bir tahmini vardır. Ayrıca akıllıca, büyük / küçük harfe duyarlı olmadan büyük / küçük harfe duyarsız yazmanızı sağlar.

Balığın dezavantajı, kendi komut dosyası diline sahip olması ve bash uyumlu olmamasıdır.


1

Tüm yaptığım "cd" yazın ve sonra klasörü Finder'dan tam yolda yapışan Terminal'e sürükleyin. Belki de o kadar zarif değil, ancak önceden kaydedilmiş birkaç kısayol ile tüm klasörler için çalışıyor mu?

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.