คำถามติดแท็ก pwd

สำหรับคำถามเกี่ยวกับไดเร็กทอรีการทำงานของกระบวนการตลอดจนคำสั่ง "pwd"


3
Unix ติดตามไดเรกทอรีการทำงานของผู้ใช้อย่างไรเมื่อสำรวจระบบไฟล์?
สมมติว่าฉันล็อกอินเข้าสู่เชลล์บนระบบยูนิกซ์และเริ่มเคาะคำสั่ง ~ผมเริ่มเริ่มต้นในบ้านของผู้ใช้ของฉัน ฉันอาจมาจากที่นั่นลงไปยังไดเรกทอรีcdDocuments คำสั่งเพื่อเปลี่ยนไดเรกทอรีการทำงานที่นี่เป็นเรื่องง่ายมากที่จะเข้าใจ: โหนดหลักมีรายการของโหนดลูกที่สามารถเข้าถึงได้และสันนิษฐานว่ามันใช้ตัวแปร (ที่เหมาะสม) ของการค้นหาเพื่อค้นหาการมีอยู่ของโหนดลูกที่มี ตั้งชื่อผู้ใช้ที่ป้อนและไดเรกทอรีการทำงานจะถูก "แก้ไข" เพื่อให้ตรงกับสิ่งนี้ - แก้ไขให้ฉันถ้าฉันผิดที่นั่น มันอาจจะง่ายกว่าที่เชลล์เพียงแค่ "ไร้เดียงสา" พยายามที่จะเข้าถึงไดเรกทอรีตรงตามความต้องการของผู้ใช้และเมื่อระบบไฟล์ส่งคืนข้อผิดพลาดบางประเภทเชลล์จะแสดงการตอบสนองตามลำดับ สิ่งที่ฉันสนใจคือกระบวนการเดียวกันนั้นทำงานอย่างไรเมื่อฉันสำรวจไดเรกทอรีต่างๆเช่นไปที่พาเรนต์หรือพาเรนต์ของผู้ปกครอง ด้วยตำแหน่งของฉัน "blind" ที่ไม่รู้ชื่อน่าจะเป็นDocumentsหนึ่งในหลาย ๆ ไดเรกทอรีในทรีระบบไฟล์ทั้งหมดด้วยชื่อนั้น Unix จะกำหนดได้อย่างไรว่าฉันควรจะวางไว้ที่ไหนต่อไป มันทำการอ้างอิงpwdและตรวจสอบว่า? ถ้าใช่จะpwdติดตามสถานะการนำทางในปัจจุบันอย่างไร
29 filesystems  pwd 


3
PS1 = '$ (pwd)' ทำไมมันถึงใช้งานได้และทำไมมันถึงแตกต่างจาก PS1 = $ (pwd)
เหตุใดเมื่อฉันป้อนคำสั่งนี้พรอมต์จึงเปลี่ยนไดเรกทอรีของฉัน PS1='$(pwd)' ฉันกำลังใช้เครื่องหมายคำพูดเดี่ยวซึ่งหมายถึงไม่มีการแก้ไขอาคาecho '$(pwd)'—— →$(pwd) ยิ่งไปกว่านั้นบอกว่าเราชี้แจงว่าทำไมสิ่งนี้ถึงได้ผล ... ทำไมมันถึงแตกต่างจากเดิมPS1=$(pwd)? (ไม่มีเครื่องหมายคำพูดเลย) โดยที่แตกต่างกันฉันหมายความว่าถ้าฉันใช้อัญประกาศแล้วพรอมต์จะเปลี่ยนไปยังไดเรกทอรีปัจจุบันของฉันในขณะที่ฉันนำทางผ่านสถานี แต่ถ้าฉันไม่ใช้เครื่องหมายคำพูดแล้วพรอมต์จะยังคงอยู่ในไดเรกทอรีที่ฉันอยู่เมื่อฉันป้อนคำสั่งครั้งแรกPS1=$(pwd) ทำไม?
18 bash  zsh  prompt  pwd 

7
กระชับ bash พรอมต์เมื่อใช้ต้นไม้ไดเรกทอรี / ชื่อไฟล์
ในระบบที่มี Ubuntu 14.04 และbashฉันมีPS1ตัวแปรลงท้ายด้วยเนื้อหาดังต่อไปนี้: \u@\h:\w\$ เพื่อให้พรอมต์ปรากฏเป็น user@machinename:/home/mydirectory$ อย่างไรก็ตามบางครั้งไดเรกทอรีปัจจุบันมีชื่อยาวหรืออยู่ภายในไดเรกทอรีที่มีชื่อยาวเพื่อให้พรอมต์ดูเหมือน user@machinename:/home/mydirectory1/second_directory_with_a_too_long_name/my_actual_directory_with_another_long_name$ วิธีนี้จะเติมบรรทัดในเทอร์มินัลและเคอร์เซอร์จะไปยังอีกบรรทัดหนึ่งซึ่งน่ารำคาญ ฉันต้องการที่จะได้รับบางสิ่งบางอย่างแทน user@machinename:/home/mydirectory1/...another_long_name$ มีวิธีการกำหนดPS1ตัวแปรเพื่อ "ห่อ" และ "กระชับ" ชื่อไดเรกทอรีเพื่อไม่เกินจำนวนอักขระที่กำหนดรับพรอมต์ที่สั้นลงหรือไม่

2
ความแตกต่างที่แปลกประหลาดระหว่าง pwd และ / bin / pwd
ฉันเพิ่ม symlink ln -s . aaไปยังไดเรกทอรีปัจจุบันด้วย ถ้าผมดำเนินการcd aaและหลังจากที่ผมดำเนินการตอบสนองคือpwd/home/sim/aa แต่ถ้าฉันรัน/bin/pwdมันจะพิมพ์/home/sim(ไดเรกทอรีปัจจุบันไม่เปลี่ยนแปลง) ความแตกต่างนี้มาจากไหน?
15 shell  symlink  pwd 

4
ข้อผิดพลาด `ls` เมื่อลบไดเรกทอรี
ฉันมีกระสุนสองนัดที่เปิดอยู่ สิ่งแรกคือในไดเรกทอรี A. ในวินาทีฉันลบไดเรกทอรี A แล้วสร้างใหม่ เมื่อฉันกลับไปที่เชลล์ตัวแรกและพิมพ์lsเอาต์พุตคือ: ls: cannot open directory .: Stale file handle ทำไม? ฉันคิดว่าเชลล์แรก (อันที่ยังคงเปิดอยู่ในไดเรกทอรีที่ไม่มีอยู่) จะ "หยุด" ในขณะที่รอคำสั่งถัดไปและจะไม่ "รู้" ว่าไดเรกทอรีนั้นถูกลบและสร้างใหม่ เชลล์เก็บการอ้างอิง "ที่ลึกกว่า" ไปยังไดเร็กทอรีการทำงานปัจจุบันนอกเหนือจากสตริง$PWDหรือไม่?

2
ทำไม pwd ไม่ยอมรับตัวเลือกที่ยาวเช่น - ฟิสิคัล?
เมื่อฉันแสดงคู่มือสำหรับpwdคำสั่งมันบอกว่าตัวเลือกแบบยาวที่--physicalได้รับการสนับสนุน $ man pwd PWD(1) User Commands PWD(1) NAME pwd - print name of current/working directory SYNOPSIS pwd [OPTION]... DESCRIPTION Print the full filename of the current working directory. -L, --logical use PWD from environment, even if it contains symlinks -P, --physical avoid all symlinks อย่างไรก็ตามมันล้มเหลวเมื่อฉันพิมพ์ต่อไปนี้ $ pwd --physical -bash: …
11 bash  rhel  pwd 

3
ฉันจะรันคำสั่งใน bash หลังจากการเปลี่ยนแปลงใด ๆ ใน $ PWD ได้อย่างไร
zsh มีฟังก์ชั่น hook ที่ดีรวมถึงchpwdการใช้งานฟังก์ชั่นหลังจากผู้ใช้เปลี่ยนไดเรกทอรี # zsh only function greet() { echo 'hi'; } chpwd_functions+=("greet") cd .. # hi pushd # hi popd # hi ฉันพยายามเลียนแบบสิ่งนั้นด้วยการทุบตี ข้อ จำกัด : มันต้องใช้งานได้ทั้งกระสุนแบบโต้ตอบและแบบไม่โต้ตอบซึ่งฉันคิดว่าหมายความว่ามันไม่สามารถพึ่งพาอะไรได้ $PROMPT_COMMAND ไม่สามารถกำหนดใหม่ได้cdเพราะฉันต้องการให้มันทำงานกับคำสั่งใด ๆ ที่เปลี่ยนไดเรกทอรี (เช่นpushdและpopd) มันจะต้องทำงานหลังจากคำสั่งของผู้ใช้ดังนั้นจึงtrap "my_function" DEBUGใช้งานไม่ได้เว้นแต่ฉันจะสามารถพูดได้ที่นั่น "ก่อนอื่นให้$BASH_COMMANDเราติดกับดักจากนั้นก็ทำเช่นนี้ ... " ฉันเห็นว่าฉันสามารถหลีกเลี่ยงการทำงานอัตโนมัติ$BASH_COMMAND หาก extdebugเปิดใช้งานและฟังก์ชั่นการดักจับคืนค่า 1 แต่ฉันไม่คิดว่าฉันต้องการบังคับextdebugและการกลับมา1ใช้คำสั่งที่ประสบความสำเร็จ ส่วนสุดท้าย - "เรียกใช้หลังจากคำสั่งของผู้ใช้" - เป็นสิ่งที่ฉันนิ่งงันในขณะนี้ …
10 bash  hook  pwd 

1
นิรุกติศาสตร์ของ $ PWD
นิรุกติศาสตร์$PWDคืออะไร? มันเป็นตัวย่อ? ฉันรู้ว่ามีคำสั่งpwdที่พิมพ์ไดเร็กตอรี่การทำงาน, แต่ในใจของฉัน, มันจะเหมาะสมกว่าที่จะตั้งชื่อตัวแปร$CWDสำหรับ Current Working Directory, เนื่องจากตัวแปรเชลล์มีข้อมูลมากกว่าพิมพ์
9 shell  history  pwd 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.