อะไรคือความแตกต่างระหว่างคำสั่ง“ cd \” และ“ cd /” ในเทอร์มินัลอูบุนตู?


10

ในการให้cd \ผมได้รับ>สัญลักษณ์ในขณะที่cd /การเปลี่ยนแปลงเข้าสู่ระบบในไดเรกทอรีของฉันไป~/

lsคำสั่งยังแสดงไดเรกทอรีเช่นdev, root, usrในกรณีของcd /ฉัน

คำตอบ:


15

ใน Bash เชลล์ของคุณ\(แบ็กสแลช) หมายถึงอักขระยกเว้น ควรใช้ในกรณีที่คุณต้องการหลีกเลี่ยงอักขระเช่นช่องว่างอัญประกาศและอักขระอื่น ๆ ที่มีความหมายกับไวยากรณ์เชลล์ แต่คุณต้องการให้มันเผยแพร่เป็นข้อมูลไปยังคำสั่งที่คุณใช้งานอยู่ ด้วยการทำให้สิ่งนี้เป็นตัวละครตัวสุดท้ายของบรรทัดคุณกำลังจะขึ้นบรรทัดใหม่และ Bash กำลังรอการป้อนข้อมูลเพิ่มเติม (หลายบรรทัด)

/เป็นเพียงเครื่องหมายสแลช (หมายถึงตัวคั่นไดเรกทอรี ) เพียงแค่/นี้หมายถึงรูทดังนั้นตัวอย่างเช่นls /รายการเนื้อหาของรูต โดยการเปลี่ยนไดเรกทอรีทำงาน/เป็นตัวบ่งชี้ในเปลือกของคุณยังเปลี่ยนจาก~(ย่อมาจากไดเรกทอรีบ้านเช่น/home/gert/) เป็นไดเรกทอรีที่คุณอยู่ในนั้น ( /)


การสาธิต

$ touch a filename with spaces
$ ls -l
total 0
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 a
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 filename
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 spaces
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 with

โอ้ noes a filename with spacesมันเป็นความตั้งใจของผมที่จะสร้างไฟล์ที่มีชื่อ ดังนั้นที่นี่เราใช้\เพื่อหนีช่องว่าง การทำเช่นนี้จะป้องกันไม่ให้เชลล์จัดเตรียมอาร์กิวเมนต์สี่ตัวให้touchแต่จะให้ช่องเดียวที่มีช่องว่างอยู่แทน

touch a\ filename\ with\ spaces

$ touch a\ filename\ with\ spaces
$ ls -al
total 24
drwxrwxr-x  2 gert gert  4096 Jul  1 02:35 .
drwxrwxr-x 55 gert gert 20480 Jul  1 02:33 ..
-rw-rw-r--  1 gert gert     0 Jul  1 02:35 a filename with spaces

แน่นอนว่าการใช้อัญประกาศ ( touch "a filename with spaces") สามารถทำได้ในสิ่งเดียวกัน

นอกจากนี้ยังใช้เพื่อประกาศอักขระพิเศษเช่นบรรทัดใหม่:

$ echo -e "bla\nnewline" # \n means a newline character
bla
newline

เราจำเป็นต้อง-eมีตัวเลือกที่นี่เพื่อดูechoเพราะเป็น manpage -e enable interpretation of backslash escapesใส่มัน


สำหรับการชี้แจงเพิ่มเติม: ในตัวอย่างของ OP, cd \ escapes end-of-line (ปุ่ม Return) นี่หมายความว่าเทอร์มินัลยังคงรอคำสั่งที่เหลืออยู่ พรอมต์>แสดงว่ากำลังรอ ปกติการแสดงพรอมต์ไดเรกทอรีปัจจุบันซึ่งเป็นเหตุผลที่มันแสดงให้เห็นหลังการใช้/ สั้นมือไดเรกทอรีที่บ้านของคุณซึ่งเป็นเหตุผลที่มันแสดงให้เห็นแทน cd /~~/home/user
Paddy Landau

1

หากคุณใส่เครื่องหมายแบ็กสแลชคุณสามารถป้อนคำสั่งหลายบรรทัดได้ นี่คือความหมายของคำนำหน้า '>'


1

>เครื่องหมายหมายความว่าพรอมต์กำลังรอให้คุณต้องใส่มากขึ้นเพราะคำสั่งก่อนหน้ายังไม่สมบูรณ์ cdคุณสามารถทำซ้ำนี้กับสิ่งที่ไม่ได้เป็นเพียง เพียงแค่พิมพ์และคุณจะได้รับwhateveryouwant\>

ส่วนที่คุณเห็น~หมายถึงไดเรกทอรีการทำงานปัจจุบัน ในการเปลี่ยนไดเรกทอรีทำงานคุณใช้คำสั่งcdซึ่งหมายถึงเปลี่ยนไดเรกทอรี (โฟลเดอร์) ดังนั้นถ้าคุณทำมันเปลี่ยนแปลงไดเรกทอรีที่จะcd / /ถ้าคุณทำcd /usr/binมันก็จะเปลี่ยนไป/usr/binเรื่อย ๆ

lsเป็นคำสั่งเพื่อแสดงรายการสิ่งที่อยู่ในไดเรกทอรี / โฟลเดอร์ปัจจุบัน ดังนั้นถ้าคุณทำcd /(หมายถึงคุณเปลี่ยนไดเรกทอรีเป็น/) lsจะแสดงรายการไฟล์และโฟลเดอร์ในนั้น ถ้าคุณทำcd /etc/แล้วlsมันจะแสดงรายการไฟล์และโฟลเดอร์ที่อยู่ในรายการ/etc/และอื่น ๆ


ขอบคุณมาก :-) สำหรับเพื่อนช่วยเหลือทันที ...
ShailyGarg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.