คุณต้องงงกับรหัสข้อผิดพลาด "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 ที่มีช่องว่าง

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

นอกจากนี้ คุณสามารถห่อ path ทั้งหมดไปยังไดเรกทอรี หรือห่อเฉพาะส่วนของ path ที่มีช่องว่างหรืออักขระพิเศษใน double quotes ได้
วิธีที่ 2: ใช้ Backslash เพื่อหลีกเลี่ยงช่องว่าง
หากมีช่องว่างในไดเรกทอรี คำสั่ง cd ใน Unix Shell จะแบ่งมันเป็น 2 หรือมากกว่า arguments ดังนั้น backslash จึงเข้ามาช่วย escape ช่องว่าง ทำให้ command shell จัดการช่องว่างเป็นตัวอักษร space แทนที่จะเป็น separator ระหว่าง arguments
- รัน Terminal บนเครื่อง
- พิมพ์ cd ตามด้วยไดเรกทอรีที่วางแผนจะสลับ
- เพิ่ม backslash ในช่องว่างของชื่อไดเรกทอรี โปรดทราบว่า forward slash ทำงานเป็น separator ระหว่างส่วนของ path ส่วน backslash ทำหน้าที่ escape space
cd desktop/my\ new\ folder - กด Return/Enter เพื่อให้ cd นำคุณไปไดเรกทอรีใหม่

วิธีที่ 3: ใช้ปุ่ม Tab สำหรับ Auto-completion
ในโปรแกรม command line ของ Windows, Linux และ macOS คุณสามารถ auto-complete คำสั่งที่กำหนดด้วยปุ่ม Tab ได้ เช่นใน Unix command prompt นี่อาจเป็นวิธีที่ดีในการสลับไปไดเรกทอรีอื่นอย่างรวดเร็ว
- เปิด command shell บนอุปกรณ์
- เริ่มพิมพ์ path ที่ต้องการไป
- กดปุ่ม Tab บนคีย์บอร์ดเพื่อใช้ฟังก์ชัน auto-completion โดยตรง
หากคุณมีโฟลเดอร์หลายโฟลเดอร์ที่ชื่อคล้ายกัน คุณต้องพิมพ์ตัวอักษรแรกๆ ของชื่อเพื่อระบุโฟลเดอร์ที่ต้องการ cd เข้าไป หาก auto-completion ไม่ทำงาน แสดงว่า path ที่ระบุไม่มีอยู่
วิธีที่ 4: เปิด Terminal ในไดเรกทอรีปลายทางโดยตรง
เนื่องจากคุณมุ่งเปิดไดเรกทอรีใน command shell เพื่อธุระต่อไป อย่าค้างอยู่ที่การพิมพ์ cd การเปิด terminal ในไดเรกทอรีปลายทางก็มีผลเท่ากัน
หากคุณรัน Linux อ่านคำแนะนำขั้นตอนด้านล่าง:
- เปิดไดเรกทอรีใน File Explorer
- คลิกขวา เลือก Open in Terminal แล้วกลับไป command shell เพื่อดำเนินการต่อ
หากคุณใช้ macOS ทำตามขั้นตอนด้านล่าง:
- เปิดหน้าต่าง Finder ไปที่โฟลเดอร์ หากไม่เห็น path bar ที่ด้านล่างของหน้าต่าง Finder เลือก View -> Show Path Bar
- คลิกขวาโฟลเดอร์ไดเรกทอรีที่ต้องการเข้า เลือก New Terminal at Folder

จากนั้นคุณจะเห็นว่า 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 ให้ดีขึ้นในบทความนี้

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