คำสั่ง mv สร้างความสับสนให้กับชื่อไดเรกทอรีด้วยตัวเลือกคำสั่ง


12

ฉันมีไดเรกทอรีที่เรียกว่าซึ่งผมต้องย้ายไป--pycache-- __pycache__ใช้mvคำสั่งด้วยวิธีต่อไปนี้ให้ผลลัพธ์ที่แสดง ฉันจะใช้CLIเพื่อทำสิ่งที่ฉันต้องการได้อย่างไร

$ mv --pycache-- __pycache__
/bin/mv: unrecognized option '--pycache--/'

คำตอบ:


22

นี่เป็นปัญหามาตรฐานของชื่อไฟล์ / ไดเรกทอรีที่เริ่มต้นด้วยสัญลักษณ์ธรรมดาน้อยกว่า ปัญหาของคุณคือ mv กำลังรักษา --pycache - เป็นชื่อตัวเลือกที่ยาว (ตั้งแต่เริ่มต้นด้วย - นอกจากนี้ยังมีตัวเลือกสั้น ๆ พวกเขาเริ่มต้นด้วย -) โปรดดู manpage สำหรับgetoptสำหรับรายละเอียดเกี่ยวกับตัวเลือกแบบยาวและแบบสั้น

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

ดังนั้นคำสั่งของคุณจะกลายเป็น:

$ mv -- --pycache--/ __pycache__

และจะไม่ล้มเหลว


8
คำตอบที่ดี แต่ฉันคิดว่าคุณหมายถึง-บอกให้คำสั่งหยุดการปฏิบัติสิ่งต่อไปนี้เป็นตัวเลือกและถือเป็นข้อโต้แย้งไม่ใช่วิธีอื่น ๆ
RoundTower

1
ฉันคิดว่ามันเป็นแบบพกพามากขึ้นในการย่อหน้า:./ mv ./--pycache-- __pycache__
เควิน

3
@Kevin ใช้งานได้เฉพาะถ้าอาร์กิวเมนต์เป็นชื่อไฟล์
starblue

16

อักขระตัวแรกของคุณ-นั้นคลุมเครือสำหรับmvคำสั่ง (หรือมากกว่านั้นอย่างชัดเจนนั่นหมายความว่าชื่อตัวเลือกจะตามมา)

ลองใช้สิ่งนี้แทน:

mv ./--ppycache-- __pycache__

ที่มา: linux.about.com


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