ไปที่ไดเรกทอรีหลักของไฟล์ที่มี cd หรือไม่?


9

ฉันกำลังเขียน. sh เพื่อทำงานให้ฉัน แต่ตอนนี้ฉันมาถึงจุดที่ฉันต้อง cd ไปยังไดเรกทอรีที่ไฟล์ / path/to/file.end อยู่ใน terminal ไม่อนุญาต

cd /path/to/file.end
bash: cd: /path/to/file.end: Not a directory

ฉันรู้ว่าไม่มีวิธีแก้ปัญหาเศร้าดังนั้นมันจะดีถ้าคุณสามารถช่วยได้!


4
อืมคุณหมายถึงcd /path/toอะไร ที่จะเปลี่ยนไดเรกทอรีเป็นไดเรกทอรีที่มีไฟล์file.endอยู่
Alaa Ali

1
ไม่ไฟล์เป็นตัวแปรและฉันต้องการป้อนเส้นทางของไฟล์ (วางลงในเทอร์มินัล) จากนั้นไปที่โฟลเดอร์ที่อยู่ใน
Azsgy

คำตอบ:


10

ประเภทcd $( dirname /path/to/file.end). /path/toที่จะนำคุณเข้าสู่

คำอธิบาย:

  • dirnameส่งคืนพา ธ ที่สมบูรณ์สำหรับไฟล์ (โดยไม่มีชื่อไฟล์ที่คุณจะได้รับbasename) - คือdirname /etc/apt/apt.conf.d/99update-notifierผลตอบแทน/etc/apt/apt.conf.d
  • นิพจน์$(anything)จะถูกแทนที่ด้วยผลลัพธ์ของคำสั่งในวงเล็บ ดังนั้นcd $( dirname /etc/apt/apt.conf.d/99update-notifier)จะถูกดำเนินการเป็นcd /etc/apt/apt.conf.d

เครื่องหมายอื่น (แต่เก่าและท้อแท้) สำหรับสิ่งเดียวกันคือ

cd `dirname /path/to/file.end` 

8

คุณไม่สามารถcdเป็นไฟล์ได้ นี่คือฟังก์ชั่น (บรรทัดคำสั่ง) ที่จะcdเข้าไปในพา ธโดยอัตโนมัติสำหรับพา ธ ไฟล์ที่ผ่านการรับรองโดยสมบูรณ์:

function fcd () { [ -f "$1" ] && { cd "$(dirname "$1")"; } || { cd "$1"; } ; pwd; }

ฉันได้รับสิทธินี้หรือไม่: function fcd () {[-f $ 1] && {cd $ (/ file.end $ 1); } || {cd $ 1; } pwd} การตอบสนองคือ: bash: ข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด `pwd 'มันทำให้ฉันมีข้อผิดพลาดแบบนี้ :(
Azsgy

2
@Atsch ต้องใช้เครื่องหมายอัฒภาคมาก่อนpwdและหากคุณกำหนดฟังก์ชันในหนึ่งบรรทัดให้ใช้เครื่องหมายอัฒภาคหลังจากpwdนั้น
เกล็นแจ็คแมน

@glennjackman ฟังก์ชั่นเพิ่งออกโดยไม่ต้องมีการส่งออกหรือการเปลี่ยนแปลงของ dir :(
Azsgy

เรียกใช้ฟังก์ชั่นแล้วป้อนecho $?- สถานะการออกคืออะไร?
เกล็นแจ็คแมน

ยี้ฉันไม่ควรสงสัย ทางเลือกดูดีกว่าสำหรับฉันเมื่อฉันพบ _O-
Rinzwind

1

หากคุณผนวก "/ .." cd /path/to/file.end/..ชื่อไฟล์ที่จะนำคุณไปเช่นไดเรกทอรีที่ถูกต้อง มันใช้ได้กับ Cygwin อยู่ดี


4
ไม่ทำงานใน bash;) touch test && cd /home/test/test/..พูดว่าbash: cd: /home/test/test/..: No such file or directory
Rinzwind
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.