ฉันสงสัยว่าจะสร้างไฟล์ที่มีชื่ออย่างไรเช่นหากฉันต้องการสร้างชื่อโฟลเดอร์-aคำสั่งใดที่จะใช้เคล็ดลับ?
ฉันพยายามmkdir '-a', mkdir \-aและการทำงานค่า ฉันใช้งาน Ubuntu
ฉันสงสัยว่าจะสร้างไฟล์ที่มีชื่ออย่างไรเช่นหากฉันต้องการสร้างชื่อโฟลเดอร์-aคำสั่งใดที่จะใช้เคล็ดลับ?
ฉันพยายามmkdir '-a', mkdir \-aและการทำงานค่า ฉันใช้งาน Ubuntu
คำตอบ:
เรียกคำสั่งดังนี้:
mkdir -- -a
--หมายความว่าตัวเลือกจบหลังจากนั้นจึงได้รับการตีความตามตัวอักษรและไม่เป็นตัวเลือกให้กับ-a mkdirคุณจะพบกับรูปแบบนี้ไม่เพียง แต่ในmkdirแต่ใด ๆ ยูทิลิตี้ POSIX สอดคล้องยกเว้นและecho จากข้อกำหนด :test
อาร์กิวเมนต์ - ควรได้รับการยอมรับเป็นตัวคั่นที่ระบุถึงจุดสิ้นสุดของตัวเลือก อาร์กิวเมนต์ใด ๆ ต่อไปนี้ควรถือเป็นตัวถูกดำเนินการแม้ว่าจะเริ่มต้นด้วยอักขระ '-' อาร์กิวเมนต์ - ไม่ควรใช้เป็นตัวเลือกหรือเป็นตัวถูกดำเนินการ
--ขอแนะนำให้ใช้การป้องกันเป็นอย่างดีสำหรับการกระทำใด ๆ ที่คุณจัดการกับชื่อไฟล์และต้องการให้แน่ใจว่าพวกเขาจะไม่ทำลายคำสั่งเช่นเมื่อย้ายไฟล์ในลูปคุณอาจต้องการเรียกสิ่งต่อไปนี้เพื่อให้ไฟล์ชื่อ-iisn ' 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) ให้ความหมายพิเศษใด ๆ แก่พวกเขา เนื่องจากไม่ได้อะไรเป็นพิเศษหมายถึงเปลือกแล้วเหล่านี้ไม่มีผลกระทบต่อวิธีการที่จะได้รับการส่งต่อไปยัง-amkdir
เท่าที่mkdirเกี่ยวข้องจะได้รับรายการอาร์กิวเมนต์จากเชลล์และไม่สามารถบอกได้ว่าคุณใส่ไว้ในเครื่องหมายคำพูดหรือไม่หรือว่ามีเครื่องหมายแบ็กสแลช มันเห็นเพียงอาร์กิวเมนต์-aเดียว นั่นเป็นเหตุผลที่คุณต้องการคำ--อธิบายในคำตอบอื่น ๆ
นอกจากคำตอบจาก "slhck" ยังมีเคล็ดลับอื่นที่บางครั้งใช้งานได้:
ใส่ชื่อไฟล์ที่มีปัญหาภายใน 2 ชุด qoutes (แตกต่างกัน) เหมือนหรือ"'-a'"'"-a"'
การทำงานนี้ขึ้นอยู่กับโปรแกรมหรือไม่ แต่เป็นทางเลือกสุดท้ายหากโปรแกรมไม่รองรับ--คุณสมบัติPOSIX
วิธี POSIX เป็นที่ต้องการเสมอเนื่องจากมีความน่าเชื่อถือ 100%
--เพื่อยุติการประมวลผลตัวเลือกยังถือว่าคุณไม่จำเป็นต้องใช้ตัวเลือกใด ๆ ในการติดตามชื่อไฟล์
'-a'หรือ"-a"อย่างน้อยในระบบแบบ BSD