טיפ יוניקס - מחיקת תיקיה עם מינוס בשם שלה
לריילס יש כלי שורת פקודה מעולה שמאפשר ליצור פרויקטים וקבצים חדשים דרך שורת הפקודה (כן אני יודע שהיום לכולם כבר יש כזה. עדיין ריילס היו שם קודם). בכל מקרה בשביל ליצור יישום ריילס חדש אנחנו פשוט רושמים משורת הפקודה:
rails new hello-world
וזה ייצור יישום חדש בשם HelloWorld. אבל אנחנו לא עוצרים כאן: לריילס יש המון מתגים איתם אנחנו בוחרים איזה יישום בדיוק ייווצר ומה יהיו היכולות שלו. בשביל לראות את כולם נקליד:
rails new --help
וכאן מתחילות הבעיות.
באחת ההפעלות במקום לכתוב את השורה מלמעלה טעיתי בסדר האותיות ויצאה לי הפקודה:
rails new --hlep
התוצאה? ריילס יצר אפליקציה חדשה עם השם המופלא --hlep
, וכן שני המינוסים בהתחלה היו חלק משם התיקיה. ברשימת התיקיות זה נראה כך:
$ ls -l
drwxrwxr-x 2 ynon ynon 4096 Aug 31 20:57 --hlep
אין בעיה חשבתי אני יודע rm פשוט אמחק את התיקיה ואנסה שוב. אבל יוניקס חשב אחרת:
$ rm -rf --hlep
rm: unrecognized option '--hlep'
Try 'rm ./--hlep' to remove the file '--hlep'.
Try 'rm --help' for more information.
הבעיה שהפקודה rm (כמו גם הרבה פקודות יוניקס אחרות) היתה בטוחה ש --hlep
הוא בעצם אחד המתגים ולא שם הקובץ ולא הבינה מה אני רוצה ממנה.
הפיתרון כמו תמיד הוא פשוט כשמכירים: המתג המיוחד --
מסמן לכל פקודה יוניקס את "הסוף" של רשימת המתגים, כך שכל מה שמגיע אחריו יהיה שם הקובץ עליו צריך לעבוד. ומחיקת התיקיה? זה היה בסך הכל:
$ rm -rf -- --hlep