บทสรุปผู้บริหาร (TL; DR)
- ใช้
pwdเพื่อทราบว่าคุณอยู่ที่ไหน (หรือดูระหว่าง:และ$ในพร้อมท์ของคุณ)
- ใช้
cdเพื่อเปลี่ยนไดเรกทอรีที่อื่น ไม่เหมือนกับใน Windows cdจะต้องเว้นวรรคตามด้วยเสมอ คำสั่งเช่นcd/และcd..จะไม่ทำงาน แต่cd /และcd ..จะ
รู้ว่าคุณอยู่ที่ไหน
วิธีที่ 1: pwdRun
ไดเรกทอรีใดที่คุณอยู่ในขณะนี้คือเชลล์เฉพาะ (และโดยทั่วไปมากขึ้นเฉพาะแอปพลิเคชัน) คุณอาจเรียกใช้หนึ่งเชลล์ที่คุณอยู่ในไดเรกทอรีเดียวและอีกเชลล์ที่คุณอยู่ในไดเรกทอรีอื่น
หากต้องการทราบว่าคุณอยู่ในไดเรกทอรีใดให้เรียกใช้:
pwd
ตัวอย่างเช่น (จากกระสุนที่ฉันเปิดตอนนี้บนเครื่องของฉัน):
ek@Kip:~$ pwd
/home/ek
/home/ekนี้จะบอกผมว่าผมอยู่ในไดเรกทอรี /homeคือ (ค่อนข้างสับสน) ไดเรกทอรีที่มีโฮมไดเร็กตอรี่ของผู้ใช้มนุษย์(ไม่ใช่ไดเรกทอรีโฮมของผู้ใช้) ผู้ใช้ที่เป็นมนุษย์usernameมีโฮมไดเร็กตอรี่/home/username
rootผู้ใช้/homeไม่ได้ในไดเรกทอรีบ้าน แทนroot's /rootไดเรกทอรีบ้านคือ นี้จะไม่ให้สับสนกับไดเรกทอรีราก/ซึ่งเป็น
วิธีที่ 2: ตรวจสอบพรอมต์ของคุณ
การกำหนดค่าเริ่มต้นสำหรับพรอมต์ของคุณคือมันจะบอกคุณว่าไดเรกทอรีใดที่คุณอยู่ในปัจจุบันพรอมต์ของคุณคือข้อความที่ปรากฏขึ้นเพื่อแจ้งให้คุณทราบว่าเชลล์พร้อมที่จะยอมรับคำสั่ง
ในตัวอย่างที่คุณแสดงให้เราเห็นในคำถามของคุณข้อความแจ้งของคุณคือ:
christy@ubuntu:~$
christyเป็นชื่อผู้ใช้ของคุณ @ตัวอักษรแยกจากubuntuชื่อโฮสต์ของคอมพิวเตอร์ของคุณ (หากคุณใช้งานซีดีสดชื่อโฮสต์จะเป็นubuntuและบางคนเลือกเป็นชื่อคอมพิวเตอร์ในระหว่างการติดตั้งด้วย)
:ตัวอักษรแยกจากชื่อของไดเรกทอรีที่คุณมีในปัจจุบัน.~ในกรณีนี้ว่าเป็นตัวแทนจาก ~จดชวเลขสำหรับไดเรกทอรีบ้านของคุณ เมื่อคุณไม่ได้อยู่ในไดเรกทอรีบ้านของคุณคุณควรเห็นชื่อไดเรกทอรีแบบเต็ม ตัวอย่างเช่น:
ek@Kip:~$ cd /var/log
ek@Kip:/var/log$
(เมื่อต้องการทำให้ความหมายของแต่ละส่วนของพรอมต์ให้สมบูรณ์: สำหรับพรอมต์ที่เป็นไปตามแบบแผนนี้จะมีอักขระ$หรือ#อักขระปรากฏขึ้น$เช่นในกรณีนี้หมายความว่าเป็นเชลล์ผู้ใช้ปกติ#อักขระจะหมายถึงว่าเป็นrootเชลล์)
เปลี่ยนว่าคุณอยู่ที่ไหน
ทำไมคำสั่ง "cd" ของคุณไม่ทำงาน
ในการเปลี่ยนไดเรกทอรีใช้cdคำสั่ง
cd/คุณวิ่ง สิ่งนี้ไม่ทำงานเนื่องจากคุณไม่ได้รันcdคำสั่งจริง ใน Ubuntu และระบบปฏิบัติการคล้าย Unix อื่น ๆ (ที่จริงแล้วในเชลล์สไตล์ Unixเช่นbashเชลล์ที่คุณใช้งาน) ชื่อของคำสั่งนั้นถูกพิจารณาว่าจะสิ้นสุดที่เว้นวรรคหรือท้ายบรรทัดเท่านั้น
ดังนั้นต่างจาก Command Prompt ใน Windows (ที่cd\ถูกตีความเหมือนcd \และcd..ถูกตีความเหมือนกับcd ..) ในbash(เชลล์ที่คุณใช้ใน Ubuntu) cd/ไม่ใช่คำสั่งที่ถูกต้อง cd /คุณต้องใช้
cd/หมายถึง "รายการในไดเรกทอรีปัจจุบันที่มีชื่อcdและยังเป็นไดเรกทอรีด้วย" ไม่ว่าจะมีไดเรกทอรีย่อยอยู่หรือไม่ก็ไม่สามารถเรียกใช้เป็นคำสั่งได้ดังนั้นไม่ว่าคุณจะได้รับข้อผิดพลาดแบบใดก็ตาม (แม้ว่าข้อผิดพลาดที่คุณได้รับจะแตกต่างกัน):
ek@Kip:~$ cd/
bash: cd/: No such file or directory
ek@Kip:~$ mkdir cd
ek@Kip:~$ cd/
bash: cd/: Is a directory
ย้ายไปยังไดเรกทอรีบ้านของคุณ
หากต้องการไปยังโฮมไดเร็กตอรี่ของคุณให้รันcdด้วยตัวเองโดยไม่มีข้อโต้แย้งใด ๆ :
cd
บางคนชอบตั้งชื่อโฮมไดเร็กตอรี่ของพวกเขาอย่างชัดเจน คุณสามารถใช้ชื่อเต็มหรือ
cd ~
แต่cdด้วยตัวเองก็เพียงพอแล้ว
เลื่อนขึ้นหนึ่งไดเรกทอรี
หากต้องการเปลี่ยนไดเรกทอรีเป็นไดเรกทอรีหลักของไดเรกทอรีปัจจุบัน(เช่นไดเรกทอรีที่มีอยู่) ให้ใช้:
cd ..
..แสดงถึงไดเรกทอรีหลักของไดเรกทอรีปัจจุบัน ถ้าคุณอยู่ในไดเรกทอรีราก ( /) มีข้อยกเว้น: เพียงแสดงให้เห็นถึง.. /ดังนั้นการเรียกใช้cd ..จะเลื่อนขึ้นหนึ่งไดเรกทอรีเมื่อทำงานที่ใดก็ได้ แต่/; เมื่อทำงานในคุณอยู่ใน//
ทุกไดเรกทอรีมี..รายการ พวกเขาทั้งหมดมี.รายการที่อ้างถึงไดเรกทอรีปัจจุบันเอง มันไม่ได้ทำงานcd .มากนัก คุณมักจะอยู่ในที่ที่คุณอยู่
เส้นทางที่แน่นอนและสัมพัทธ์
หากคุณcdบางสิ่งบางอย่างที่ไม่ได้เริ่มต้นด้วย/แล้วก็พยายามที่จะไปที่ไดเรกทอรีที่ภายในไดเรกทอรีปัจจุบัน
ตัวอย่างเช่นถ้าคุณวิ่ง
cd var/log
จากนั้นมันจะพยายามเข้าไปยังvarไดเรกทอรีย่อยที่คุณอยู่ในปัจจุบันและเข้าไปในlogไดเรกทอรีย่อยของที่ ยกเว้นในกรณีที่ทั้งสองอยู่และในสถานที่เหล่านั้นว่าcdคำสั่งจะล้มเหลว (และคุณจะยังคงอยู่ที่คุณใช้อยู่เดิม)
หากคุณต้องการไปที่logไดเรกทอรีย่อยของvarไดเรกทอรีย่อยของไดเรกทอรีรากให้รันสิ่งนี้แทน:
cd /var/log
แต่ถ้าคุณอยู่ในขณะนี้/คือเทียบเท่ากับcd var/logcd /var/log
เส้นทางที่ขึ้นต้นด้วย/สัมบูรณ์ วิธีการแก้ไขไม่ได้ขึ้นอยู่กับว่าคุณอยู่ที่ไหน
เส้นทาง~คือเกินไปแน่นอนเพราะมันเป็น (หลัก) $HOMEชวเลข HOMEเป็นตัวแปรสภาพแวดล้อมและนิพจน์$HOMEจะขยายไปยังพา ธ ที่สมบูรณ์และสมบูรณ์ของโฮมไดเรกทอรีของผู้ใช้ปัจจุบัน
~สัญกรณ์ยังสามารถใช้เพื่อแสดงไดเรกทอรีบ้านของผู้ใช้อื่น ถ้าคุณเขียนนี่จะหมายถึงไดเรกทอรีบ้านของ~usernameusername
กลับไปยังที่ที่คุณเคยไป
ไดเรกทอรีที่คุณอยู่ในปัจจุบันถูกเก็บไว้ในPWDตัวแปรสภาพแวดล้อม สุดท้ายไดเรกทอรีที่คุณอยู่ในถูกเก็บไว้ในOLDPWDตัวแปรสภาพแวดล้อม คุณสามารถดูOLDPWDแบบเดียวกับที่คุณดูตัวแปรสภาพแวดล้อมใด ๆ :
echo $OLDPWD
เนื่องจากข้อมูลนี้ถูกจัดเก็บcdจึงสามารถมีวิธีพิเศษที่รวดเร็วและง่ายดายในการกลับไปยังที่ที่คุณเคยอยู่ ตามที่pst007x พูดว่าให้ไปที่ไดเรกทอรีสุดท้ายที่คุณอยู่ให้รัน:
cd -
หากไม่เคยมีไดเรกทอรีใด ๆ มาก่อนหน้านี้ที่คุณอยู่ในเชลล์นั้นOLDPWDตัวแปรสภาพแวดล้อมจะไม่ถูกตั้งค่าและการพยายามเรียกใช้cd -จะส่งผลให้เกิดข้อผิดพลาด (และคุณจะยังอยู่ในตำแหน่งที่คุณอยู่):
ek@Kip:~$ cd -
bash: cd: OLDPWD not set
การเปลี่ยนตำแหน่งที่คุณเป็นเหมือนเจ้านาย
pushdและpopd: สแต็กไดเรกทอรี
ลองนึกภาพชื่อไดเรกทอรีต่างๆ โดยสแต็คฉันหมายถึงบางสิ่งที่เมื่อคุณเพิ่มสิ่งที่อยู่ด้านบนและคุณสามารถลบได้ทีละรายการเท่านั้นและสิ่งที่คุณลบจะเป็นสิ่งที่อยู่ด้านบนเสมอ
คุณสามารถพุชไดเร็กทอรีใด ๆdirลงบนสแต็กได้โดยรัน:
pushd dir
หากคุณต้องการที่จะผลักดันไดเรกทอรีปัจจุบันไปที่ด้านบนของสแต็คคุณสามารถใช้.(ซึ่งตามที่อธิบายไว้ข้างต้นมักจะหมายถึงไดเรกทอรีปัจจุบัน):
pushd .
จากนั้นคุณสามารถไปเกี่ยวกับธุรกิจของคุณเปลี่ยนไดเรกทอรีได้มากเท่าที่คุณต้องการ เมื่อคุณต้องการกลับไปยังไดเรกทอรีสุดท้ายที่คุณกดลงไปในสแต็กด้วยpushdให้รัน:
popd
สิ่งนี้จะไปที่ไดเรคทอรีนั้นและจะแตกออกจากสแต็ก ตอนนี้สแต็กจะสั้นลงหนึ่งไดเรกทอรี หากนั่นเป็นไดเรกทอรีเดียวบนสแต็กสแต็กจะว่างเปล่าในขณะนี้
คุณสามารถมีสแต็กที่มีขนาดใหญ่กว่า 1 นั่นคือคุณสามารถใช้pushdคำสั่งแยกกันเพื่อพุชไดเร็กทอรีจำนวนมากลงบนสแต็ก popdคำสั่งที่ตามมาแต่ละคำสั่งจะไปที่ (และปิดป๊อปอัปเช่นลบออกจากสแต็ก ) ไดเรกทอรีที่พุชล่าสุดที่ยังไม่ปรากฏ
นี่คือตัวอย่าง:
ek@Kip:~$ cd /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd .
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd /home/ek
~ /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:~$ cd /var/log/apt
ek@Kip:/var/log/apt$ pushd .
/var/log/apt /var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ cd
ek@Kip:~$ popd
/var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ popd
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ cd /
ek@Kip:/$ pushd usr
/usr / /etc/apt/sources.list.d
ek@Kip:/usr$ cd
ek@Kip:~$ popd
/ /etc/apt/sources.list.d
ek@Kip:/$ popd
/etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ popd
bash: popd: directory stack empty
ek@Kip:/etc/apt/sources.list.d$
pushdและมักมีการใช้มากน้อยกว่าpopd cdพวกเขายังมีการใช้อื่น ๆ แม้กระทั่งขั้นสูงยิ่งขึ้น เรียกใช้help pushdและhelp popdเพื่อดูรายละเอียด
เรียนรู้เพิ่มเติมและเข้าถึงเอกสาร
cdและpwdมีการใช้งานขั้นสูงมากขึ้นเช่นกัน หากต้องการเรียนรู้เกี่ยวกับพวกเขาทำงานและhelp cdman pwd
helpสำหรับเชลล์บิวด์อิน manสำหรับคำสั่งแบบสแตนด์อโลน - คำสั่งที่เรียกใช้เป็นกระบวนการแยกต่างหากและมีอยู่เป็นไฟล์ประมวลผลแยกต่างหาก typeคำสั่งเผยถ้าสั่งเป็น builtin เปลือกหรือไม่และถ้าไม่ได้ที่โปรแกรมมันจะทำงานตั้งอยู่ ตัวอย่างเช่นคุณสามารถเรียกใช้type help, หรือtype typetype man