บทสรุปผู้บริหาร (TL; DR)
- ใช้
pwd
เพื่อทราบว่าคุณอยู่ที่ไหน (หรือดูระหว่าง:
และ$
ในพร้อมท์ของคุณ)
- ใช้
cd
เพื่อเปลี่ยนไดเรกทอรีที่อื่น ไม่เหมือนกับใน Windows cd
จะต้องเว้นวรรคตามด้วยเสมอ คำสั่งเช่นcd/
และcd..
จะไม่ทำงาน แต่cd /
และcd ..
จะ
รู้ว่าคุณอยู่ที่ไหน
วิธีที่ 1: pwd
Run
ไดเรกทอรีใดที่คุณอยู่ในขณะนี้คือเชลล์เฉพาะ (และโดยทั่วไปมากขึ้นเฉพาะแอปพลิเคชัน) คุณอาจเรียกใช้หนึ่งเชลล์ที่คุณอยู่ในไดเรกทอรีเดียวและอีกเชลล์ที่คุณอยู่ในไดเรกทอรีอื่น
หากต้องการทราบว่าคุณอยู่ในไดเรกทอรีใดให้เรียกใช้:
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/log
cd /var/log
เส้นทางที่ขึ้นต้นด้วย/
สัมบูรณ์ วิธีการแก้ไขไม่ได้ขึ้นอยู่กับว่าคุณอยู่ที่ไหน
เส้นทาง~
คือเกินไปแน่นอนเพราะมันเป็น (หลัก) $HOME
ชวเลข HOME
เป็นตัวแปรสภาพแวดล้อมและนิพจน์$HOME
จะขยายไปยังพา ธ ที่สมบูรณ์และสมบูรณ์ของโฮมไดเรกทอรีของผู้ใช้ปัจจุบัน
~
สัญกรณ์ยังสามารถใช้เพื่อแสดงไดเรกทอรีบ้านของผู้ใช้อื่น ถ้าคุณเขียนนี่จะหมายถึงไดเรกทอรีบ้านของ~username
username
กลับไปยังที่ที่คุณเคยไป
ไดเรกทอรีที่คุณอยู่ในปัจจุบันถูกเก็บไว้ใน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 cd
man pwd
help
สำหรับเชลล์บิวด์อิน man
สำหรับคำสั่งแบบสแตนด์อโลน - คำสั่งที่เรียกใช้เป็นกระบวนการแยกต่างหากและมีอยู่เป็นไฟล์ประมวลผลแยกต่างหาก type
คำสั่งเผยถ้าสั่งเป็น builtin เปลือกหรือไม่และถ้าไม่ได้ที่โปรแกรมมันจะทำงานตั้งอยู่ ตัวอย่างเช่นคุณสามารถเรียกใช้type help
, หรือtype type
type man