Score:0

วิธีหลีกเลี่ยงช่องว่างในตัวแปรที่ส่งไปยัง cd

ธง be

ฉันใช้ WSL บน windows 10 กับ Ubuntu
เส้นทางไปยังไดเร็กทอรีที่ฉันใช้บ่อยประกอบด้วยไดเร็กทอรีที่มีช่องว่างในชื่อ ฉันไม่สามารถเปลี่ยนชื่อนั้นได้ เส้นทางไปยังไดเร็กทอรีนั้นยาวมาก:
/mnt/c/Users/name/Dropbox/My PC (แล็ปท็อป...)/Desktop/Studies/Python
ผมจึงอยากสร้างตัวแปรใน .bashrc โดยใช้ชื่อว่า $PROJECTPATH ซึ่งจะเท่ากับเส้นทางของไดเร็กทอรี
ด้วยวิธีนี้ฉันสามารถโทรหรือนามแฝง cd $PROJECTPATH และไปที่ไฟล์ของฉัน
ฉันพยายามเขียน:

PROJECTPATH='/mnt/c/Users/name/Dropbox/My\ PC\ \(Laptop...\)/Desktop/Studies/Python'

นามแฝง prjct='cd $PROJECTPATH'

แต่เมื่อเรียกใช้ prjct ฉันจะได้รับข้อความแสดงข้อผิดพลาด "อาร์กิวเมนต์มากเกินไป" ซึ่งหมายความว่ามีช่องว่างถูกส่งไปยังซีดี
ฉันจะหลีกเลี่ยงช่องว่างได้อย่างไรเมื่อส่งตัวแปรไปยัง cd หรือคำสั่งอื่น ๆ
และฉันควรส่งออกตัวแปรประเภทนี้หรือไม่

cn flag
เอฟเฟกต์นี้เรียกว่า [การแยกคำ](https://www.gnu.org/software/bash/manual/bash.html#Word-Splitting) ดู [รายการนี้ในวิกิ bash-hackers.org](https://wiki.bash-hackers.org/syntax/words#word_splitting)
ARunningFridge avatar
be flag
@glennjackman ทำงานได้อย่างสมบูรณ์แบบ :) ขอบคุณมาก!
bac0n avatar
cn flag
`alias a='builtin cd "$b";:'` คุณสามารถยุตินามแฝงของคุณด้วย `:` หรือ `true` สิ่งนี้จะระงับข้อโต้แย้งเพิ่มเติมใดๆ
Score:2
ธง my

คุณต้องใส่เครื่องหมายคำพูดคู่ $PROJECTPATH ในของคุณ นามแฝง คำนิยาม.

นอกจากนี้ ฉันไม่แนะนำให้ใช้เครื่องหมายแบ็กสแลชในการกำหนดตัวแปรของคุณ อ่านได้น้อยกว่าและไม่จำเป็นในกรณีนี้:

PROJECTPATH='/mnt/c/Users/name/Dropbox/My PC (Laptop...)/Desktop/Studies/Python'

นามแฝง prjct='cd "$PROJECTPATH"'

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา