Değişkenler cd'leme için nasıl "~" kullanabilir?


13

Bir değişkeni nasıl kullanabilirim - $BASEcd'mde. Aşağıdakileri denedim ama bir hata alıyorum

$ cd ~/z/repo_1_ruby_193/
23:23:57 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ BASE="~/z"
23:24:03 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ cd $BASE/repo_1_ruby_193
-bash: cd: ~/z/repo_1_ruby_193: No such file or directory
23:24:25 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

Yanıtlar:


25

İçinde ana dizini genişletmek için Tilde genişletmecd ~/z/ kullanıyorsunuz . İçinde , karakteri alıntıladığınız için değilsiniz, bu yüzden genişletilmiş değil. Bu yüzden varolmayan bir dizin hakkında şikayetçi bir mesaj alırsınız . Çözüm, alıntı yapmamaktır, yani genişlemenin gerçekleşmesine izin vermek içindir.~BASE="~/z"~~BASE=~/z


11

@ jw013 geçerli bir açıklama ve çözüm verdi.

Ancak, yolları birden fazla boşluk veya özel semboller içerdiğinde alıntı yapmak istediğiniz bazı durumlar olabilir. Bu durumda kullanmanız gereken $HOMEyerine ~, yani senin BASE="~/z"olacak BASE="$HOME/z"parametre ikamesi tilde genişleme aksine çift tırnak yorumlanır çünkü ve doğru olarak çalışması.


5
Bunu yapmanın bir yolu var, ama gerekli değil. tırnaksız bırakıldığı BASE=~/"quoted name"sürece gayet iyi çalışıyor ~.
Hvd

4
@hvd: aslında eğik çizgiyi de boş bırakmalısınız. BASE=~/"quoted name"çalışıyor, ama BASE=~"/quoted name"çalışmıyor.
Gordon Davisson

Haklısın. İyi yakalama.
Hvd
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.