ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
SFאורח · ·
 

הודעה פורסם: 25/10/2015 - 12:24
נושא ההודעה: תווים מיוחדים בשם קובץ

החלטתי לעשות "ניסוי" מה קורה עם תווים מיוחדים בשם קובץ. קצת הסתבכתי עם bash, אז עברתי לפייתון, ויצרתי קובץ:

קוד:

file("Hello\rWorld\n","w")


הקובץ נוצר, ו-ls מציג אותו כך -
קוד:
Hello?World?


כשאני מנסה למחוק אותו, כתיבת H והשלמה עם tab משלימה ל-
קוד:
rm Hello^MWorld

מה שנותן הודעת שגיאה -
קוד:

rm: cannot remove ‘Hello\rWorld’: No such file or directory


כנ"ל:
קוד:

rm Hello\rWorld\n
rm: cannot remove ‘HellorWorldn’: No such file or directory


אז נגיד יש לי קובץ כזה או דומה, איך אני עובד איתו בטרמינל?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 25/10/2015 - 14:01
נושא ההודעה:

החלטתי לעשות ניסוי:
קוד:

# Using ctrl-v ctrl-j for the line feed in the file name:
$ touch 'hello
world'$ touch 'hello
world'

$ ls he*
hello?world

$ ls -N he*
hello?world

$ ls --show-control-chars he*
hello
world

$ rm 'hello
world'
# Worked. Tab completion was broken, though.
# I could have used 'rm he*'
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
borsoodלא בפורום כעת ת.הצטרפות: 05/01/2007 · הודעות: 306 ·
 

הודעה פורסם: 26/10/2015 - 20:28
נושא ההודעה:

אלא אם כן משהו השתנה בשנים האחרונות כל תו "אוקטט" חוקי בשם קובץ למעט / ו NUL
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
SFאורח · ·
 

הודעה פורסם: 26/10/2015 - 20:53
נושא ההודעה:

borsood :
אלא אם כן משהו השתנה בשנים האחרונות כל תו "אוקטט" חוקי בשם קובץ למעט / ו NUL


נכון, כפי שהדגמתי - אין עם זה בעיה.
הבעיה היא שהטרמינל (לפחות bash) לא ממש מתמודד עם זה.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 28/10/2015 - 05:27
נושא ההודעה:

כי כתבת את זה לא נכון. הפירוש של "\מ" בתוך מחרוזת ב־bash :
קוד:

$ echo hi\nthere
hinthere

$ echo "hi\nthere"
hi\nthere

$ echo -e "hi\nthere"
hi
there

# Ctrl-V-Ctrl-M (or Ctrl-V Enter) produces a carriage return (where is the 'hi'?)
$ echo hi^Mthere
there

# Ctrl-V Ctrl-J produces a line-feed. Why do I get an error here?
$ echo hi
there
hi
bash: there: command not found

ואלו אינם תווי הבקרה היחידים שאפשר להקיש בלחיצה על קונטרול ואות אנגלית. ככלל: קונטרול והאות שמספרה הוא n מפיק את תו הבקרה שקוד האסקי שלו הוא n.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 28/10/2015 - 05:56
נושא ההודעה:

קוד:

# Ctrl-V Ctrl-J produces a line-feed. Why do I get an error here?


בדיוק. אז אם זה רק \r זה אפשרי, אבל איך "מזייפים" \n?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
SFאורח · ·
 

הודעה פורסם: 28/10/2015 - 06:05
נושא ההודעה:

אוקיי, אחרי עוד קצת חיפושים מצאתי את התשובה -

קוד:

rm $'Hello\rWorld\n'



או, במילים אחרות, מה שמוקף ב- $'' מתנהג כמו מחרוזת בשפות כמו C,Python,Java וכיוב' (כל האסקייפינג עובד, וכיוב')
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 28/10/2015 - 07:41
נושא ההודעה:

אוי! ועד היום הייתי בטוח שמה שנמצא בתוך גרש בודד לא ישתנה.

בעניין ההשלמה: אכן פאשלה של באש. מבדיקה מהירה נראה של־busybox sh יש בעיה דומה אבל zsh ו־mksh שאצלי במערכת עובדות כאן יותר טוב.

פתחתי את https://bugs.debian.org/803220 . למרות שאני לא תולה בו תקוות.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. אורח [SF]
  2. אורח [צפריר]
  3. borsood
  4. אורח [SF]
  5. אורח [צפריר]
  6. אורח
  7. אורח [SF]
  8. אורח [צפריר]