Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Mac

แก้ไข 'cd: too many arguments' ใน Bash และ Zsh – 5 วิธีแก้ง่ายๆ

คุณต้องงงกับรหัสข้อผิดพลาด "bash: cd: too many arguments" หรือ "zsh: cd: too many arguments" ที่เกิดขึ้นใน command shell เมื่อคุณพิมพ์ cd เพื่อเข้าไปในไดเรกทอรีที่ต้องการ

ไม่ต้องกังวล บทความนี้จะอธิบายว่าทำไม cd: too many arguments ถึงเกิดขึ้น และ วิธีแก้ zsh/bash cd: too many arguments ด้วย 5 วิธีแก้ที่สะดวก

ทำไม Zsh/Bash: cd: too many arguments error ถึงเกิดขึ้น?

ตามปกติ command shell ควรเปิดไดเรกทอรีโดยตรงเมื่อคุณใส่คำสั่ง cd ตามด้วย file path มันยอมรับชื่อไดเรกทอรีเป็น argument และแทนที่ working directory ของ shell environment ปัจจุบันด้วยไดเรกทอรีที่กำหนด

หากไม่มี argument cd จะทำงานเหมือนกับที่ระบุไดเรกทอรีที่ชื่อในตัวแปรสภาพแวดล้อม HOME เป็น argument แต่เมื่อคุณใส่ ไดเรกทอรีที่ชื่อมีช่องว่างหรืออักขระพิเศษ ใน Unix shell มันจะระบุว่ามีมากกว่า 1 argument นั่นคือเหตุที่มันโยน error code cd: too many arguments ใน bash command shell ของคุณ

หมายเหตุ: หากคุณรัน zsh command shell คุณอาจได้ error "cd: string not in pwd:" เมื่อพยายาม cd เข้าไปใน path ที่มีช่องว่าง

แก้ไข  cd: too many arguments  ใน Bash และ Zsh – 5 วิธีแก้ง่ายๆ

บางคนสงสัยว่า Unix Shell ไปได้มากกว่า 1 ไดเรกทอรีในครั้งเดียวหรือไม่ คำตอบคือ ไม่ได้เลย หากต้องการเข้าไดเรกทอรีมากกว่า 1 ต้องรันคำสั่ง cd ทีละอัน

หากบทความนี้ช่วยคลี่คลายความสงสัยว่าทำไม too many arguments ถึงเกิดขึ้น โปรดกดปุ่ม Share ด้านล่างเพื่อช่วยผู้คนมากขึ้น!

วิธีแก้ bash: cd: too many arguments และ zsh: cd: string not in pwd:?

как обсуждалось выше Unix Shell รู้จักว่ามี argument มากกว่า 1 ในไดเรกทอรีของคุณที่มีอักขระพิเศษและช่องว่าง ดังนั้นจึงไม่สามารถสลับไปไดเรกทอรีได้ เผชิญหน้ากรณีแบบนี้ แนะนำให้อ่านต่อ บทความนี้จะนำเสนอ 4 วิธีแก้ง่ายๆ เพื่อให้คำสั่ง cd ทำงานได้อย่างถูกต้อง

วิธีที่ 1: ห่อชื่อไดเรกทอรีด้วย Double Quotes

วิธีแก้ง่ายๆ เพื่อให้คำสั่ง cd สลับไปไดเรกทอรีเฉพาะเจาะจงได้สำเร็จ คือ ห่อชื่อไดเรกทอรีด้วย double quotes

  1. เปิด Terminal บนคอมพิวเตอร์
  2. พิมพ์ cd แล้วพิมพ์สัญลักษณ์ double quotes
  3. ใส่ file path ที่มีช่องว่างหรืออักขระพิเศษใน double quotes
    cd "my new folder"
  4. กด Enter/Return เพื่อรันคำสั่ง cd แล้วคุณจะเห็นว่าไดเรกทอรีเปลี่ยนไปยังที่คุณใส่ ซึ่งคุณได้รับอนุญาตให้ทำการกระทำต่อไปในไดเรกทอรีใหม่

แก้ไข  cd: too many arguments  ใน Bash และ Zsh – 5 วิธีแก้ง่ายๆ

นอกจากนี้ คุณสามารถห่อ path ทั้งหมดไปยังไดเรกทอรี หรือห่อเฉพาะส่วนของ path ที่มีช่องว่างหรืออักขระพิเศษใน double quotes ได้

วิธีที่ 2: ใช้ Backslash เพื่อหลีกเลี่ยงช่องว่าง

หากมีช่องว่างในไดเรกทอรี คำสั่ง cd ใน Unix Shell จะแบ่งมันเป็น 2 หรือมากกว่า arguments ดังนั้น backslash จึงเข้ามาช่วย escape ช่องว่าง ทำให้ command shell จัดการช่องว่างเป็นตัวอักษร space แทนที่จะเป็น separator ระหว่าง arguments

  1. รัน Terminal บนเครื่อง
  2. พิมพ์ cd ตามด้วยไดเรกทอรีที่วางแผนจะสลับ
  3. เพิ่ม backslash ในช่องว่างของชื่อไดเรกทอรี โปรดทราบว่า forward slash ทำงานเป็น separator ระหว่างส่วนของ path ส่วน backslash ทำหน้าที่ escape space
    cd desktop/my\ new\ folder
  4. กด Return/Enter เพื่อให้ cd นำคุณไปไดเรกทอรีใหม่

แก้ไข  cd: too many arguments  ใน Bash และ Zsh – 5 วิธีแก้ง่ายๆ

วิธีที่ 3: ใช้ปุ่ม Tab สำหรับ Auto-completion

ในโปรแกรม command line ของ Windows, Linux และ macOS คุณสามารถ auto-complete คำสั่งที่กำหนดด้วยปุ่ม Tab ได้ เช่นใน Unix command prompt นี่อาจเป็นวิธีที่ดีในการสลับไปไดเรกทอรีอื่นอย่างรวดเร็ว

  1. เปิด command shell บนอุปกรณ์
  2. เริ่มพิมพ์ path ที่ต้องการไป
  3. กดปุ่ม Tab บนคีย์บอร์ดเพื่อใช้ฟังก์ชัน auto-completion โดยตรง

หากคุณมีโฟลเดอร์หลายโฟลเดอร์ที่ชื่อคล้ายกัน คุณต้องพิมพ์ตัวอักษรแรกๆ ของชื่อเพื่อระบุโฟลเดอร์ที่ต้องการ cd เข้าไป หาก auto-completion ไม่ทำงาน แสดงว่า path ที่ระบุไม่มีอยู่

วิธีที่ 4: เปิด Terminal ในไดเรกทอรีปลายทางโดยตรง

เนื่องจากคุณมุ่งเปิดไดเรกทอรีใน command shell เพื่อธุระต่อไป อย่าค้างอยู่ที่การพิมพ์ cd การเปิด terminal ในไดเรกทอรีปลายทางก็มีผลเท่ากัน

หากคุณรัน Linux อ่านคำแนะนำขั้นตอนด้านล่าง:

  1. เปิดไดเรกทอรีใน File Explorer
  2. คลิกขวา เลือก Open in Terminal แล้วกลับไป command shell เพื่อดำเนินการต่อ

หากคุณใช้ macOS ทำตามขั้นตอนด้านล่าง:

  1. เปิดหน้าต่าง Finder ไปที่โฟลเดอร์ หากไม่เห็น path bar ที่ด้านล่างของหน้าต่าง Finder เลือก View -> Show Path Bar
  2. คลิกขวาโฟลเดอร์ไดเรกทอรีที่ต้องการเข้า เลือก New Terminal at Folder

แก้ไข  cd: too many arguments  ใน Bash และ Zsh – 5 วิธีแก้ง่ายๆ

จากนั้นคุณจะเห็นว่า Terminal สลับไปไดเรกทอรีที่คุณกำลังทำงานอยู่

วิธีที่ 5: ลากโฟลเดอร์ไปที่หน้าต่าง Terminal

หากวิธีที่กล่าวมาข้างต้นทั้งหมดไม่เป็นที่ชอบของคุณ วิธีแก้สุดท้ายที่คุ้มค่าลอง คือ เพียงลากไดเรกทอรีโฟลเดอร์ไปที่หน้าต่าง terminal ของคุณ เพียงเปิด terminal แล้ว left-click และลากไดเรกทอรีโฟลเดอร์ไปที่หน้าต่าง แล้วคุณจะอยู่ใน path ไดเรกทอรีใหม่

หากคุณแก้ bash: cd: too many arguments / zsh: cd: string not in pwd: สำเร็จแล้ว ไม่อยากแชร์บทความนี้ช่วยผู้คนมากขึ้นไหม?

เคล็ดลับเพิ่มเติม: วิธีใช้ cd ให้เกิดประโยชน์สูงสุด

หากคุณเป็นมือใหม่ command shell หรือคนที่มีความหลงใหลและอยากรู้เกี่ยวกับ terminal ต่างๆ คำสั่ง cd ที่อภิปรายในบทความนี้ต้องช่วยได้ แค่ดูชั่วคราวที่นี่:

  • cd: cd เพียงอย่างเดียว หรือ cd ~ จะวางผู้ใช้ใน home directory ของพวกเขาตลอดเวลา
  • cd .: cd . จะทิ้งผู้ใช้ในไดเรกทอรีเดียวกับที่อยู่ (current directory ไม่เปลี่ยน) 有用如果用户的 shell 內部代碼無法處理他們所在的目錄被重新創建的情況 運行 cd . 將他們的 shell 放在重新創建的目錄中
  • cd ~username: cd ~ username จะวางผู้ใช้ใน home directory ของ username นั้น
  • cd dir (โดยไม่มี /): cd dir จะวางผู้ใช้ใน subdirectory เช่น ถ้าอยู่ใน /usr พิมพ์ cd bin จะไป /usr/bin ในขณะที่ cd /bin จะไป /bin
  • cd ..: cd.. จะย้ายผู้ใช้ขึ้น 1 ไดเรกทอรี ดังนั้น ถ้าอยู่ /usr/bin/tmp cd .. จะไป /usr/bin ในขณะที่ cd ../.. จะไป /usr (ขึ้น 2 ระดับ) ผู้ใช้สามารถใช้การอ้อมนี้เข้าถึง subdirectories ได้ เช่น จาก /usr/bin/tmp ใช้ cd ../../local ไป /usr/local
  • cd -: cd - จะสลับผู้ใช้ไปยังไดเรกทอรีก่อนหน้า เช่น อยู่ /usr/bin/tmp ไป /etc พิมพ์ cd - กลับไป /usr/bin/tmp ผู้ใช้สามารถใช้ toggle ระหว่าง 2 ไดเรกทอรีโดยไม่ต้อง pushd และ popd

สรุป

Error cd: too many arguments ไม่น่ากลัวอย่างที่คุณคิด เนื่องจากบทความนี้เสนอ 5 วิธีแก้ง่ายๆ ทำให้มันหายไป คุณลอง 1 หรือมากกว่าตามที่ชอบ เพื่อเข้าไดเรกทอรีที่เกี่ยวข้องด้วย cd นอกจากนี้ คุณจะพบบริบทที่ยอดเยี่ยมสอนวิธีใช้คำสั่ง cd ให้ดีขึ้นในบทความนี้

แก้ไข  cd: too many arguments  ใน Bash และ Zsh – 5 วิธีแก้ง่ายๆ

อ่านเพื่อรู้ว่าทำไม Mac ได้ Zsh permission denied และวิธีแก้ Mac permission denied error รวมถึงการเปลี่ยน permissions บน Mac