Mengapa Anda menjalankan cd. sebelum melakukan sesuatu?

22

Dalam kompilasi kengerian sysadmin ini , salah satu penulis menulis, sebagai aturan praktis:

Selalu lakukan cd .sebelum melakukan sesuatu.

Mengapa Anda ingin melakukan itu?

qdii
sumber

Jawaban:

32

Kamu tidak.

Setidaknya tidak begitu saja. Baris sebelumnya dalam dokumen yang dikutip ini penting:

  • Atur prompt Anda untuk melakukan pwdsetiap kali Anda melakukan cd.
  • Selalu lakukan cd .sebelum melakukan sesuatu.

Dengan cara ini, Anda sebagai operator memverifikasi dir Anda saat ini bekerja sebelum melakukan sesuatu yang penting, karena dicetak dengan setiap perubahan. cd .tidak masuk akal sebaliknya.

"Verifikasi" ini adalah hal yang baik, dan Anda harus menyesuaikan bentuknya. Variasi yang lebih umum (IMHO) dari tema ini adalah untuk selalu mencetak dir yang berfungsi saat diminta.

Roma
sumber
11
Mungkin lebih baik untuk menganggap ini sebagai "selalu ketik 'pwd' sebelum melakukan sesuatu yang penting untuk memastikan Anda berada di direktori yang Anda pikir Anda"
Rod MacPherson
4
Mengapa tidak melakukan pwdsebelum melakukan sesuatu?
Martin Konecny
15
Sebenarnya, memang ada gunanya. Jika Anda telah masuk ke direktori melalui tautan simbolik, dan tautan itu kemudian dihapus dan dibuat ulang di tempat lain, seperti selama penyebaran server di mana versi dikontrol dengan symlink ke "current_release", maka melakukan cd .akan mengubah yang mendasarinya sebenarnya direktori tempat Anda berada.
Stewart
1
+1 untuk " selalu cetak dir yang berfungsi saat diminta." Itu yang saya lakukan.
Paddy Landau
4
@Stewart Sayangnya ini tidak akan membantu jika tautan simbolis berubah setelah cd . tetapi sebelum melakukan hal lain. Itu hanya mengurangi kemungkinan berada di direktori yang salah, tetapi tidak menyelesaikan masalah umum. Kecuali Anda beralih ke direktori nyata menggunakan sesuatu seperti cd $(readlink -f .)mengingat bahwa Anda sebenarnya ingin tinggal di sana.
scai
18

Jika direktori kerja shell Anda saat ini dihapus, ada kemungkinan kehilangan data.

Sebagai contoh,

$ 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>

Output dari some_commandtidak ditulis ke disk.

Mengetik cd .sebelum menjalankan perintah akan mengungkapkan masalahnya.

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

Jika direktori direktori kerja saat ini telah dihapus dan dibuat kembali, mengetik cd .akan "menyegarkan" referensi ke direktori itu.

$ 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

sumber
13

Saya pikir lebih penting untuk menunjukkan direktori Anda saat ini.

Di setiap server linux, saya memodifikasi prompt /etc/bashrcdengan mengubah "W" menjadi "w".

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

untuk

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

Efek dari ini adalah:

[root@xt include]#

melawan

[root@xt /usr/src/spl-0.6.1/include]# 
putih
sumber
adalah PS1pesta khusus?
qdii
Saya kira begitu ... Hanya itu yang saya gunakan.
ewwhite
1
Perubahan Anda mungkin hilang dengan peningkatan sistem selanjutnya, ya.
ott--
2
@ ott - Stiknya Anda ~/.profileatau ~/.bash_profilejuga memperbarui/etc/skel/.profile
jscott