ทำไมคุณควรเรียกใช้ซีดี ก่อนทำอะไร


คำตอบ:


32

คุณทำไม่ได้

อย่างน้อยก็ไม่ใช่อย่างนั้น บรรทัดก่อนหน้าในเอกสารที่ยกมามีความสำคัญ:

  • ตั้งค่าพรอมต์ของคุณให้ทำpwdทุกครั้งที่คุณซีดี
  • ทำอะไรcd .ก่อนเสมอ

ด้วยวิธีนี้คุณในฐานะผู้ดำเนินการยืนยัน dir ที่ทำงานอยู่ในปัจจุบันของคุณก่อนที่จะทำการใด ๆ ที่มีความสำคัญเนื่องจากมีการพิมพ์ออกมาพร้อมกับการเปลี่ยนแปลงแต่ละอย่าง cd .ไม่สมเหตุสมผลใด ๆ

"การยืนยัน" นี้เป็นสิ่งที่ดีและคุณควรปรับรูปแบบของมัน ชุดรูปแบบทั่วไปเพิ่มเติม (IMHO) ของชุดรูปแบบนี้คือพิมพ์ dir ที่ทำงานอยู่เสมอที่พร้อมต์


11
มันน่าจะดีกว่าถ้าคิดแบบนี้ว่า "พิมพ์ 'pwd' เสมอก่อนที่จะทำอะไรที่สำคัญเพื่อให้แน่ใจว่าคุณอยู่ในสารบบที่คุณคิดว่าคุณเป็น"
Rod MacPherson

4
ทำไมไม่ทำpwdก่อนทำอะไรเลย
Martin Konecny

15
จริงๆแล้วมันมีประโยชน์ หากคุณเข้าสู่ไดเรกทอรีผ่านลิงก์สัญลักษณ์และลิงก์นั้นจะถูกลบและสร้างขึ้นใหม่ที่อื่นเช่นในระหว่างการปรับใช้เซิร์ฟเวอร์ที่เวอร์ชันถูกควบคุมด้วย symlink เป็น "current_release" การcd .เปลี่ยนแปลงจะเป็นการอ้างอิงพื้นฐานจริง ไดเรกทอรีที่คุณอยู่
สจ๊วต

1
+1 สำหรับ " พิมพ์ dir ที่ทำงานอยู่เสมอที่พร้อมท์" นั่นคือสิ่งที่ฉันทำ
Paddy Landau

4
@Stewart น่าเสียดายที่นี่จะไม่ช่วยถ้าการเชื่อมโยงสัญลักษณ์เปลี่ยนหลังจาก cd .แต่ก่อนทำสิ่งอื่น เพียงลดโอกาสที่จะอยู่ในไดเรกทอรีที่ไม่ถูกต้อง แต่ไม่ได้แก้ปัญหาทั่วไป นอกเสียจากคุณจะเปลี่ยนเป็นไดเรกทอรีจริงโดยใช้สิ่งที่ต้องการcd $(readlink -f .)เนื่องจากคุณต้องการอยู่ที่นั่นจริงๆ
scai

18

หากไดเรกทอรีการทำงานปัจจุบันของเชลล์ของคุณถูกลบมันเป็นไปได้ที่จะสูญเสียข้อมูล

ตัวอย่างเช่น,

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

ผลลัพธ์ของsome_commandไม่ได้ถูกเขียนไปยังดิสก์

การพิมพ์cd .ก่อนเรียกใช้คำสั่งจะเปิดเผยปัญหา

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

หากไดเรกทอรีไดเรกทอรีทำงานปัจจุบันถูกลบและสร้างใหม่การพิมพ์cd .จะ "รีเฟรช" การอ้างอิงไปยังไดเรกทอรีนั้น

$ 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

ฉันคิดว่าการแสดงไดเรกทอรีปัจจุบันของคุณสำคัญกว่า

ในทุกเซิร์ฟเวอร์ linux ฉันจะแก้ไขข้อความแจ้ง/etc/bashrcโดยเปลี่ยน "W" เป็น "w"

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

ไปยัง

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

ผลของสิ่งนี้คือ:

[root@xt include]#

กับ

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

PS1เฉพาะทุบตีคืออะไร?
qdii

ฉันคิดอย่างนั้น ... มันคือทั้งหมดที่ฉันใช้
ewwhite

1
การเปลี่ยนแปลงของคุณอาจหายไปจากการอัพเกรดระบบครั้งต่อไป
ott--

2
@ ott-- ติด~/.profileหรือ~/.bash_profileปรับปรุงเป็นของคุณ/etc/skel/.profile
jscott
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.