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

แก้ไข 'cd:ข้อโต้แย้งมากเกินไป' ใน Bash และ Zsh - 5 แก้ไขง่าย ๆ

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

โปรดอย่ากังวลเลย บทความนี้จะอธิบายว่าทำไม cd:มีอาร์กิวเมนต์มากเกินไป และ วิธีแก้ไข zsh/bash cd:มีอาร์กิวเมนต์มากเกินไป พร้อมการแก้ไขที่มีประโยชน์ 5 รายการ

เหตุใด Zsh/Bash:cd:มีข้อผิดพลาดอาร์กิวเมนต์มากเกินไปจึงเกิดขึ้น

ตามปกติ เชลล์คำสั่งควรเปิดไดเร็กทอรีโดยตรงเมื่อคุณป้อนบรรทัดคำสั่ง cd ตามด้วยเส้นทางของไฟล์ ยอมรับชื่อไดเร็กทอรีเป็นอาร์กิวเมนต์และแทนที่ไดเร็กทอรีการทำงานของสภาพแวดล้อมเชลล์ปัจจุบันด้วยไดเร็กทอรีที่กำหนด

หากไม่มีการกำหนดอาร์กิวเมนต์ คำสั่ง cd จะทำงานเหมือนกับไดเร็กทอรีที่ระบุชื่อในตัวแปรสภาพแวดล้อม HOME ถูกระบุเป็นอาร์กิวเมนต์ แต่เมื่อคุณป้อน ไดเร็กทอรีที่มีชื่อมีการเว้นวรรคหรืออักขระพิเศษ ในเชลล์ Unix จะระบุว่าเป็นอาร์กิวเมนต์มากกว่าหนึ่งข้อ นั่นเป็นเหตุผลที่มันส่งรหัสข้อผิดพลาด cd:มีอาร์กิวเมนต์มากเกินไปในเชลล์คำสั่ง bash ของคุณ

 หมายเหตุ: หากคุณใช้เชลล์คำสั่ง zsh คุณอาจได้รับข้อผิดพลาด "cd:string not in pwd : " เมื่อคุณพยายาม cd ลงในเส้นทางที่มีช่องว่าง

แก้ไข  cd:ข้อโต้แย้งมากเกินไป  ใน Bash และ Zsh - 5 แก้ไขง่าย ๆ

บางคนสงสัยว่า Unix Shell สามารถไปยังไดเร็กทอรีเพิ่มเติมในแต่ละครั้งได้หรือไม่ คำตอบคือไม่อย่างแน่นอน หากคุณต้องการป้อนไดเร็กทอรีเพิ่มเติม คุณต้องรันคำสั่ง cd ทีละรายการ

หากโพสต์นี้คลายข้อสงสัยของคุณเกี่ยวกับสาเหตุที่เกิดการโต้แย้งมากเกินไป โปรดคลิกปุ่มแชร์ด้านล่างเพื่อช่วยเหลือผู้คนมากขึ้น!

วิธีแก้ไข bash:cd:อาร์กิวเมนต์มากเกินไปและ zsh:cd:string ไม่ได้อยู่ใน pwd:?

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

โซลูชันที่ 1:ล้อมชื่อของไดเร็กทอรีด้วยเครื่องหมายคำพูดคู่

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

ขั้นตอนที่ 1:เปิด Terminal บนคอมพิวเตอร์ของคุณ

ขั้นตอนที่ 2:พิมพ์ cd จากนั้นพิมพ์เครื่องหมายคำพูดคู่

ขั้นตอนที่ 3:ป้อนเส้นทางไฟล์ที่มีการเว้นวรรคหรืออักขระพิเศษในเครื่องหมายคำพูดคู่

cd "โฟลเดอร์ใหม่ของฉัน"

ขั้นตอนที่ 4:กดปุ่ม Enter/Return เพื่อรันบรรทัดคำสั่ง cd จากนั้นคุณจะเห็นว่าไดเร็กทอรีเปลี่ยนไปเป็นไดเร็กทอรีที่คุณป้อน ซึ่งคุณได้รับอนุญาตให้ดำเนินการใดๆ เพิ่มเติมในไดเร็กทอรีใหม่ได้

แก้ไข  cd:ข้อโต้แย้งมากเกินไป  ใน Bash และ Zsh - 5 แก้ไขง่าย ๆ

นอกจากนี้ คุณสามารถล้อมพาธทั้งหมดไปยังไดเร็กทอรีหรือล้อมเฉพาะส่วนประกอบพาธที่มีช่องว่างหรืออักขระพิเศษในเครื่องหมายคำพูดคู่

โซลูชันที่ 2:ใช้แบ็กสแลชเพื่อหลีกเลี่ยงช่องว่าง

หากมีช่องว่างในไดเร็กทอรี บรรทัดคำสั่ง cd ใน Unix Shell จะแบ่งช่องว่างออกเป็นสองอาร์กิวเมนต์ขึ้นไป ดังนั้น แบ็กสแลชจึงมาที่นี่เพื่อหลีกช่องว่าง ซึ่งทำให้เชลล์คำสั่งถือว่าช่องว่างเป็นอักขระช่องว่างตามตัวอักษร แต่ไม่ใช่ตัวคั่นระหว่างอาร์กิวเมนต์

ขั้นตอนที่ 1:เรียกใช้ Terminal บนเครื่องของคุณ

ขั้นตอนที่ 2:พิมพ์ cd และไปตามไดเร็กทอรีที่คุณวางแผนจะเปลี่ยน

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

ซีดีเดสก์ท็อป/ของฉัน\ ใหม่\ โฟลเดอร์

ขั้นตอนที่ 4:กด Return/Enter กุญแจสำคัญในการทำให้ซีดีนำคุณไปยังไดเร็กทอรีใหม่

แก้ไข  cd:ข้อโต้แย้งมากเกินไป  ใน Bash และ Zsh - 5 แก้ไขง่าย ๆ

โซลูชันที่ 3:ใช้ปุ่ม Tab เพื่อการเติมข้อความอัตโนมัติ

ในโปรแกรมบรรทัดคำสั่งของ Windows, Linux และ macOS คุณจะกรอกคำสั่งที่กำหนดได้โดยอัตโนมัติด้วยปุ่ม Tab ตัวอย่างเช่น ในพรอมต์คำสั่ง Unix นี่อาจเป็นวิธีที่ดีในการสลับไปยังไดเร็กทอรีอื่นได้รวดเร็วยิ่งขึ้น

ขั้นตอนที่ 1:เปิดเชลล์คำสั่งบนอุปกรณ์ของคุณ

ขั้นตอนที่ 2:เริ่มพิมพ์เส้นทางที่คุณต้องการไป

ขั้นตอนที่ 3:กด แท็บ บนแป้นพิมพ์ของคุณเพื่อใช้งานฟังก์ชันเติมข้อความอัตโนมัติได้อย่างตรงไปตรงมา

หากคุณมีหลายโฟลเดอร์ที่มีชื่อคล้ายกัน คุณจะต้องพิมพ์อักขระสองสามตัวแรกของชื่อเพื่อระบุโฟลเดอร์ที่คุณต้องการใส่ซีดี หากการเติมข้อมูลอัตโนมัติไม่ทำงาน แสดงว่าไม่มีเส้นทางที่ระบุ

โซลูชันที่ 4:เปิดเทอร์มินัลของคุณในไดเร็กทอรีปลายทาง

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

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

ขั้นตอนที่ 1:เปิดไดเร็กทอรีใน explorer

ขั้นตอนที่ 2:คลิกขวาและเลือก เปิดใน Terminal จากนั้นคุณสามารถกลับไปที่เชลล์คำสั่งเพื่อดำเนินการต่อได้

หากคุณใช้อุปกรณ์ macOS คุณสามารถทำตามขั้นตอนต่อไปนี้ซึ่งมีรายละเอียดดังนี้:

ขั้นตอนที่ 1:เปิดหน้าต่าง Finder แล้วไปที่โฟลเดอร์ หากคุณไม่เห็นแถบเส้นทางที่ด้านล่างของหน้าต่าง Finder ให้เลือกมุมมอง -> แสดงแถบเส้นทาง .

ขั้นตอนที่ 2:คลิกขวาที่ไดเร็กทอรีโฟลเดอร์ที่คุณต้องการป้อน และเลือก เทอร์มินัลใหม่ที่โฟลเดอร์ .

แก้ไข  cd:ข้อโต้แย้งมากเกินไป  ใน Bash และ Zsh - 5 แก้ไขง่าย ๆ

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

โซลูชันที่ 5:ลากโฟลเดอร์ไปที่หน้าต่างเทอร์มินัล

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

หากคุณได้แก้ไข bash:cd:too many arguments/zsh:cd:string not in pwd:Success ทำไมไม่แบ่งปันบทความนี้เพื่อช่วยเหลือผู้คนมากขึ้น

เคล็ดลับพิเศษ:จะใช้ซีดีให้เกิดประโยชน์สูงสุดได้อย่างไร

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

  • ซีดี :cd ด้วยตัวเองหรือ cd ~ จะใส่ผู้ใช้ไว้ในโฮมไดเร็กตอรี่เสมอ
  • ซีดี . :ซีดี. จะปล่อยให้ผู้ใช้อยู่ในไดเร็กทอรีเดียวกันกับที่พวกเขาอยู่ในปัจจุบัน (เช่น ไดเร็กทอรีปัจจุบันจะไม่เปลี่ยนแปลง) สิ่งนี้มีประโยชน์หากโค้ดภายในเชลล์ของผู้ใช้ไม่สามารถจัดการกับไดเร็กทอรีที่กำลังสร้างขึ้นใหม่ได้ วิ่งซีดี. จะวางเชลล์ไว้ในไดเร็กทอรีที่สร้างขึ้นใหม่
  • ซีดี ~ชื่อผู้ใช้ :cd ~ ชื่อผู้ใช้จะวางผู้ใช้ไว้ในโฮมไดเร็กตอรี่ของชื่อผู้ใช้
  • ซีดีไดร์ (ไม่มี /):cd dir จะทำให้ผู้ใช้อยู่ในไดเรกทอรีย่อย ตัวอย่างเช่น หากอยู่ใน /usr การพิมพ์ cd bin จะใส่ไว้ใน /usr/bin ในขณะที่ cd /bin จะใส่ไว้ใน /bin
  • ซีดี .. :cd.. จะย้ายผู้ใช้ขึ้นไปหนึ่งไดเรกทอรี ดังนั้นหากเป็น /usr/bin/tmp cd .. จะย้ายมันไปที่ /usr/bin ในขณะที่ cd ../.. จะย้ายมันไปที่ /usr (นั่นคือเพิ่มขึ้นสองระดับ) ผู้ใช้สามารถใช้ทางอ้อมนี้เพื่อเข้าถึงไดเรกทอรีย่อยได้เช่นกัน ดังนั้น จาก /usr/bin/tmp พวกเขาสามารถใช้ cd ../../local เพื่อไปที่ /usr/local
  • ซีดี - :cd - จะเปลี่ยนผู้ใช้ไปยังไดเร็กทอรีก่อนหน้า ตัวอย่างเช่น หากอยู่ใน /usr/bin/tmp และไปที่ /etc พวกเขาสามารถพิมพ์ cd - เพื่อกลับไปที่ /usr/bin/tmp ผู้ใช้สามารถใช้สิ่งนี้เพื่อสลับไปมาระหว่างสองไดเร็กทอรีโดยไม่ต้อง pushd และ popd

สรุป

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

แก้ไข  cd:ข้อโต้แย้งมากเกินไป  ใน Bash และ Zsh - 5 แก้ไขง่าย ๆ

อ่านเพื่อทราบว่าเหตุใด Mac ของคุณจึงได้รับสิทธิ์ Zsh ที่ถูกปฏิเสธ และวิธีแก้ไขข้อผิดพลาดการอนุญาตของ Mac ที่ถูกปฏิเสธ รวมถึงการเปลี่ยนแปลงสิทธิ์บน Mac