ฉันสงสัยว่าจะสร้างไฟล์ที่มีชื่ออย่างไรเช่นหากฉันต้องการสร้างชื่อโฟลเดอร์-a
คำสั่งใดที่จะใช้เคล็ดลับ?
ฉันพยายามmkdir '-a'
, mkdir \-a
และการทำงานค่า ฉันใช้งาน Ubuntu
ฉันสงสัยว่าจะสร้างไฟล์ที่มีชื่ออย่างไรเช่นหากฉันต้องการสร้างชื่อโฟลเดอร์-a
คำสั่งใดที่จะใช้เคล็ดลับ?
ฉันพยายามmkdir '-a'
, mkdir \-a
และการทำงานค่า ฉันใช้งาน Ubuntu
คำตอบ:
เรียกคำสั่งดังนี้:
mkdir -- -a
--
หมายความว่าตัวเลือกจบหลังจากนั้นจึงได้รับการตีความตามตัวอักษรและไม่เป็นตัวเลือกให้กับ-a
mkdir
คุณจะพบกับรูปแบบนี้ไม่เพียง แต่ในmkdir
แต่ใด ๆ ยูทิลิตี้ POSIX สอดคล้องยกเว้นและecho
จากข้อกำหนด :test
อาร์กิวเมนต์ - ควรได้รับการยอมรับเป็นตัวคั่นที่ระบุถึงจุดสิ้นสุดของตัวเลือก อาร์กิวเมนต์ใด ๆ ต่อไปนี้ควรถือเป็นตัวถูกดำเนินการแม้ว่าจะเริ่มต้นด้วยอักขระ '-' อาร์กิวเมนต์ - ไม่ควรใช้เป็นตัวเลือกหรือเป็นตัวถูกดำเนินการ
--
ขอแนะนำให้ใช้การป้องกันเป็นอย่างดีสำหรับการกระทำใด ๆ ที่คุณจัดการกับชื่อไฟล์และต้องการให้แน่ใจว่าพวกเขาจะไม่ทำลายคำสั่งเช่นเมื่อย้ายไฟล์ในลูปคุณอาจต้องการเรียกสิ่งต่อไปนี้เพื่อให้ไฟล์ชื่อ-i
isn ' t (ใน) แยกวิเคราะห์อย่างถูกต้องเป็นตัวเลือก:
mv -- "$f" new-"$f"
cc -o -myfile -Wall -myfile.c
เป็นตัวอย่างที่วางแผนไว้เพียงเล็กน้อยเท่านั้น ตัวแก้ไขใด ๆ ที่มีค่าควรจะสามารถบันทึกลงในไฟล์ที่มีชื่อ-myfile.c
หากคุณถามถึงสิ่งนั้น แต่คอมไพเลอร์ C อาจจะไม่ทำสิ่งที่คุณต้องการเมื่อได้รับรายการตัวเลือกดังกล่าว
cc
คำสั่งที่ Michael ให้ไว้ข้างต้นซึ่งมี-o
ตัวเลือกเพื่อระบุไฟล์เอาต์พุต
for f in ./*; do...
แทนfor f in *; do...
วิธีที่ง่ายที่สุดที่ควรทำงานกับโปรแกรมที่เหมาะสมคือใช้ชื่อพา ธ สัมพัทธ์ด้านหน้า-
เช่นmkdir ./-a
จะสร้างไดเรกทอรีที่เรียกว่า-a
ในไดเรกทอรีทำงานปัจจุบัน
ตัวอย่างที่พบมากที่สุดของการใช้นี้ "เคล็ดลับ" rm ./-a
คือเมื่อคุณต้องการที่จะลบไฟล์ซึ่งเริ่มต้นด้วยเส้นประเพื่อให้คุณสามารถทำ
./
อยู่เสมอที่ดีความคิดจินตนาการที่คุณสร้างไฟล์ที่เรียกว่าและจากนั้นคุณเรียกว่า-rf
rm *
--
ไม่เข้าใจทุกคำสั่งเพียงไม่กี่)
--
มันเป็นเรื่องน่ากลัวดังนั้นมันควรจะใช้ได้กับทุกโปรแกรมใช่ไหม
เหตุผลmkdir '-a'
หรือmkdir \-a
ไม่ทำงานเป็นเพราะทั้งสองวิธี (ใช้เครื่องหมายคำพูดหรือแบ็กสแลช) ใช้เพื่อป้องกันเชลล์ของคุณ(น่าจะเป็นbash
) ให้ความหมายพิเศษใด ๆ แก่พวกเขา เนื่องจากไม่ได้อะไรเป็นพิเศษหมายถึงเปลือกแล้วเหล่านี้ไม่มีผลกระทบต่อวิธีการที่จะได้รับการส่งต่อไปยัง-a
mkdir
เท่าที่mkdir
เกี่ยวข้องจะได้รับรายการอาร์กิวเมนต์จากเชลล์และไม่สามารถบอกได้ว่าคุณใส่ไว้ในเครื่องหมายคำพูดหรือไม่หรือว่ามีเครื่องหมายแบ็กสแลช มันเห็นเพียงอาร์กิวเมนต์-a
เดียว นั่นเป็นเหตุผลที่คุณต้องการคำ--
อธิบายในคำตอบอื่น ๆ
นอกจากคำตอบจาก "slhck" ยังมีเคล็ดลับอื่นที่บางครั้งใช้งานได้:
ใส่ชื่อไฟล์ที่มีปัญหาภายใน 2 ชุด qoutes (แตกต่างกัน) เหมือนหรือ"'-a'"
'"-a"'
การทำงานนี้ขึ้นอยู่กับโปรแกรมหรือไม่ แต่เป็นทางเลือกสุดท้ายหากโปรแกรมไม่รองรับ--
คุณสมบัติPOSIX
วิธี POSIX เป็นที่ต้องการเสมอเนื่องจากมีความน่าเชื่อถือ 100%
--
เพื่อยุติการประมวลผลตัวเลือกยังถือว่าคุณไม่จำเป็นต้องใช้ตัวเลือกใด ๆ ในการติดตามชื่อไฟล์
'-a'
หรือ"-a"
อย่างน้อยในระบบแบบ BSD