Neden cd çalıştırmalısın? bir şey yapmadan önce


Yanıtlar:


32

Sen değil.

En azından sadece böyle değil. Alıntılanan belgede bulunan önceki satır önemlidir:

  • Her pwdzaman cd yapmak için istemi ayarlayın .
  • Bir cd .şey yapmadan önce her zaman bir yap .

Bu sayede, operatör olarak, her değişiklikle birlikte yazdırıldığı gibi, önemli bir şey yapmadan önce mevcut çalışma yönünüzü doğrularsınız. cd .başka türlü bir şey ifade etmiyor.

Bu "doğrulama" iyi bir şeydir ve bunun bir şeklini uyarlamanız gerekir. Bu temanın daha fazla (IMHO) ortak bir çeşidi , komut isteminde daima çalışan dizini yazdırmaktır.


11
Bunu, düşündüğünüz dizinde olduğunuzdan emin olmak için önemli bir şey yapmadan önce "daima" pwd "olarak yazmanız daha iyi olur"
Rod MacPherson

4
Neden sadece bir pwdşey yapmadan önce yapmıyorsun?
Martin Konecny

15
Aslında, bir kullanımı var. Sembolik bir link üzerinden bir dizine girdiyseniz ve link silinir ve başka yerlerde, örneğin sürümlerin "current_release" e bir bağlantı ile kontrol edildiği bir sunucu dağıtımı sırasında olduğu gibi yeniden yaratılır, sonra cd .gerçek durumun değişmesine neden olur. içinde bulunduğunuz dizini.
Stewart

1
+1 " her zaman komut isteminde çalışma dizinini yazdırın." Yaptığım budur.
Paddy Landau

4
Sembolik bağlantı değişirse @Stewart Ne yazık ki bu olmaz yardım sonrasında cd . ancak önce başka bir şey yapıyor. Sadece yanlış dizinde olma olasılığını azaltır, fakat genel sorunu çözmez. Gerçek dizine cd $(readlink -f .)geçmeden, aslında orada kalmak istediğin gibi bir şeyi kullanarak .
scai

18

Kabuğunuzun geçerli çalışma dizini kaldırılırsa, veri kaybı mümkündür.

Örneğin,

$ pwd
/home/user/test
$ rmdir /home/user/test
$ pwd
/home/user/test
$ some_command | tee command.log
tee: command.log: No such file or directory
<long output>

Çıktısı some_commanddiske yazılmadı.

cd .Bir komutu çalıştırmadan önce yazmak sorunu ortaya çıkarır.

$ pwd
/home/user/test
$ rmdir /home/user/test
$ cd .
$ pwd
.

Geçerli çalışma dizini dizini kaldırılmış ve yeniden oluşturulmuşsa, yazmak cd .o dizine yapılan referansı "yenileyecektir".

$ ls
foo bar ljz
$ pwd
/home/user/test
$ rmdir /home/user/test
$ mkdir /home/user/test
$ pwd
/home/user/test
$ ls
$ cd .
$ ls 
foo bar ljz

13

Geçerli dizini göstermenin daha önemli olduğunu düşünüyorum.

Her linux sunucusunda /etc/bashrc"W" yi "w" olarak değiştirerek istemde değişiklik yapıyorum .

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

için

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \w]\\$ "

Bunun etkisi:

[root@xt include]#

e karşı

[root@xt /usr/src/spl-0.6.1/include]# 

olan PS1bash özgü?
qdii

Sanırım öyle ... Tüm kullandığım.
whwhite

1
Bir sonraki sistem güncellemesiyle değişiklikleriniz kaybolabilir, tho.
ott--

2
@ ott-- Çubuğu kendinize ~/.profileveya ~/.bash_profilegüncelleyeceğiniz gibi/etc/skel/.profile
jscott
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.