Bash'ta boşluk içeren bir ismi içeren bir dizine cd nasıl verilir?


84

denedim cd "~/Library/Application Support/" -bash: cd: ~/Library/Application Support/: No such file or directory

Ayrıca cd ~/Library/Application Support/ -bash: cd: ~/Library/Application Support/: No such file or directory

Yanıtlar:


113

Tabİlk birkaç karaktere bastıktan sonra tuşunu kullanabilirsiniz (bu daha sonra sizin için klasörün kalanını "doldurur", örneğin yazın cd ~/LTabve cd ~/Library/ardından yazın ApTabve kalanını doldurun.

Kelimeler arasında boşluk varsa ve yukarıdaki yöntemleri kullanmak istemiyorsanız \, boşluktan önce bir ters eğik çizgi koyun , örn cd ~/Library/Application\ Support.


Yol büyük / küçük harf duyarlı mı yoksa duyarsız mı? Library'ye cd ~ / library ile erişebiliyorum, ancak büyük yanlışlık yaparsam sekme yöntemi çalışmaz.
colinfang

@colinfang OS X, büyük / küçük harfe duyarsızdır, ancak büyük harf korur. Beşinci kabuk, otomatik tamamlama söz konusu olduğunda biraz daha belirgin olmalıdır.
NReilingh

@NReilingh - Aha, thx.
colinfang

1
@colinfang: kullanabilirsiniz shopt -s nocaseglobve bind 'set completion-ignore-case on'yapmak bash durumda daha az duyarlı.
Chris Johnsen

2
colinfang - bash uyumluluğu ile duyarsız bir sekme tamamlaması için 'zsh' ı deneyin. Ayrıca bu kabuğun joker karakter tamamlaması çok iyi.
Ɱark Ƭ

27

Buradaki temel sorun, kabuğun ( bash ) nasıl alıntı yaptığını ve bunun tilde genişlemesini ve “kelimelere” bölünmesini nasıl etkilediğini (çalışmakta olan programın argümanları).

bash , baş tilde yalnızca teklif edilmezse özel olarak davranır. Ek olarak, aşağıdaki eğik çizgi de alıntılanmamalıdır.

Aynı zamanda bash , komut satırlarını alıntılanmayan beyaz boşluğa dayalı olarak “sözcüklere” ayrıştırır. cdKomut tipik tam olarak bir argüman (hedef dizin) gerektirir. Bir komut satırı , iki argümanla cd foo barçalışmak anlamına gelir cd: foove bar. Yalnızca tek bir foo barargüman göndermek istiyorsanız, boşluğu belirtmeniz gerekir:
(eg) cd foo\ bar(aşağıdaki daha fazla alıntı örneğine bakın).

Özel durumunuzda, dizin adında boşluk bırakırken tilde ve aşağıdaki eğik çizgiyi işaretsiz bırakmanız gerekir. Sizin cd "~/Library/Application Support/"sizin süre deneme, (tilde ve eğik çizgi) çok fazla alıntı biter cd ~/Library/Application Support/deneme (bu dizin adı boşluk alıntı atlar) çok az tırnak.

En yaygın çözüm, yalnızca boşluk bırakmak için tek karakterli kaçış kullanmaktır:

    cd ~/Library/Application\ Support

Ayrıca, yalnızca alanın, alanın ve bu argümanın diğer bazı kısımlarının çevresinde tek veya çift tırnak kullanabilirsiniz ~/:

    cd ~/Library/Application' 'Support
    cd ~/Library/Application" "Support
    cd ~/Library/App'lication 'Support
    cd ~/Library/Application" Supp"ort
    cd ~/'Library/Application 'Support
    cd ~/"Library/Application "Support

Bu tür alıntıların farklı anlamları vardır, ancak bu örneklerde aynıdırlar. Tek tırnaklar değişmez dizgileri korurken, çift tırnaklar alıntılanan bölgedeki çeşitli genişlemelere ve yer değiştirmelere izin verir.

Genelde, kabuğun işi sizin için yapmasına izin verebilirsiniz.

  • Küreselleşme (joker karakterler):

    cd ~/L*/Ap*

    shopt -s nocaseglobGlobbing davasını duyarsız hale getirmek için kullanabilirsiniz :

    cd ~/l*/ap*
  • tamamlanma:

    TabGirdikten sonra basmak cd ~/Lmuhtemelen genişletecektir cd ~/Library/. Girdikten sonra tekrar
    basmak (şimdi sahip olduğunuz ) büyük olasılıkla genişleyecektir (kabuk otomatik olarak kaçan ters eğik çizgiyi yerleştirmiştir).TabApcd ~/Library/Apcd ~/Library/Application\ Support/

    bind 'set completion-ignore-case on'Tamamlama durumunu duyarsız hale getirmek için kullanabilirsiniz :

    cd ~/l Tabcd ~/Library/; ap Tabcd ~/Library/Application\ Support/


Güzel cevap @ Chris. Sekme karakterlerinin tuşlara benzemesini nasıl sağladınız?
robzolkos

4
@RobZ: <kbd></kbd>HTML etiketidir ( SE markdown'da desteklenen birkaç HTML etiketinden biridir ).
Chris Johnsen

9

Bir yolu iki kez alıntıladığınızda, tilde genişlemesini durdurursunuz. Yani bunu yapmanın birkaç yolu var:

cd ~/"My Code"
cd ~/'My Code'

Tilde burada alıntılanmadığından, tilde genişlemesi devam eder.

cd "$HOME/My Code"

Çift tırnaklı dizgilerin içindeki ortam değişkenlerini genişletebilirsiniz; bu temelde genişlemenin yaptığı şeydir

cd ~/My\ Code

Ayrıca, ters eğik çizgiyle özel karakterlerden de (boşluk gibi) kaçabilirsiniz.


9

Alternatif olarak bir klasörü Terminal penceresine de sürükleyebilirsiniz, dosya / klasör yolunun tamamı sürüklendiğinde otomatik olarak yapıştırılır.


4

" Application Support" İçindeki boşluktan kaçmanız gerekiyor

Deneyin $ cd ~/Library/Application\ Support/


0

Normal yollar işe yaramazsa, ile boşlukları değiştirmeyi deneyin %20.

SSH ve benzeri diğer domain-style komutları ile uğraşırken bu benim için çalıştı auto_smb.


0

Bunu, boşluklu klasörler / dosyalar için deneyebilirsiniz, eğer dosya veya klasör adı 1) dosya adı içeriyorsa, komut, cd ~ / file \ name.extension / (veya) cd ~ / "dosya ismi.extension" / olmalıdır.


1
Bu cevap, diğer benzer cevaplardan herhangi birinde nasıl farklılaşmakta ya da gelişmektedir?
fsb

Boşluk tanımlamak ve tırnak vermek için mükemmel terminal sözdizimi, kullanıcı tanımlı kullanıcılardan biridir ve aynı zamanda sekme tuşunu kullanmak, 1) dosyaadı.ext 2) dosya adı gibi bir isim kullanmaz. kelimelerin tamamlanması o sırada "dosya" yı gösterir ve bu ters eğik çizgiyi terminaldeki boşluğu tanımlamak için kullanabiliriz. @fsp
prasanth sivanesan

Tüm bu bilgiler, okuyuculara, kabul edilen Cevap da dahil olmak üzere, diğer 9 Yanıttan ne kadar farklı olduğunu göstermek için Cevap bölümünde olmalıdır.
fsb
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.