ตัวแปรใช้“ ~” สำหรับ cd'ing ได้อย่างไร


13

ฉันจะใช้ตัวแปร - $BASEในซีดีของฉันได้อย่างไร ฉันลองสิ่งต่อไปนี้ แต่ฉันได้รับข้อผิดพลาด

$ cd ~/z/repo_1_ruby_193/
23:23:57 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ BASE="~/z"
23:24:03 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ cd $BASE/repo_1_ruby_193
-bash: cd: ~/z/repo_1_ruby_193: No such file or directory
23:24:25 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

คำตอบ:


25

ในcd ~/z/คุณใช้Tilde ส่วนขยายเพื่อขยาย~เข้าไปในโฮมไดเร็กตอรี่ของคุณ ในBASE="~/z"คุณไม่ใช่เพราะคุณอ้างถึง~ตัวละครดังนั้นจึงไม่ได้ขยาย นั่นคือเหตุผลที่คุณได้รับข้อความบ่นเกี่ยวกับ~ไดเรกทอรีที่ไม่มีอยู่ การแก้ปัญหาคือการไม่พูดมันคือBASE=~/zเพื่อให้เกิดการขยายตัว


11

@ jw013 ให้คำอธิบายที่ถูกต้องและแก้ปัญหา

แต่อาจมีบางกรณีที่คุณต้องการอ้างถึงเส้นทางเช่นเมื่อมีหลายช่องว่างหรือสัญลักษณ์พิเศษ ในกรณีนี้คุณควรใช้$HOMEแทน~เช่นคุณBASE="~/z"จะกลายเป็นBASE="$HOME/z"และทำงานอย่างถูกต้องเพราะการทดแทนพารามิเตอร์ถูกตีความในเครื่องหมายคำพูดคู่ซึ่งแตกต่างจากการขยายตัวหนอน


5
นั่นเป็นวิธีหนึ่งที่จะทำ แต่ไม่จำเป็น BASE=~/"quoted name"ทำงานได้ดีตราบใดที่ไม่มีการ~อ้างอิง
hvd

4
@hvd: จริง ๆ แล้วคุณต้องทิ้งเครื่องหมายทับด้วยเช่นกัน BASE=~/"quoted name"ใช้งานได้ แต่ใช้BASE=~"/quoted name"ไม่ได้
Gordon Davisson

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