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

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

הודעה פורסם: 09/04/2021 - 08:35
נושא ההודעה: שימוש ב FD ב BASH

לפי ההסבר של HERE-STRING
https://www.gnu.org/software/bash/manual/bash.html#Here-Strings

ניתן לבחור את ה FD שאליו אני מעונין לנתב. מדוע הפקודה הבאה לא מציגה את את foo על המסך (stdout):
קוד:
1<<<foo


אני יודע שאפשר להשתמש ב cat, אבל מעונין להבין מדוע זה לא עובד כמצופה (ניסיתי גם לעשות redirect מ &0 ל &1, גם לא עבד).
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 09/04/2021 - 11:03
נושא ההודעה:

אולי מרכאות ?

איציק
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 09/04/2021 - 16:15
נושא ההודעה:

זהו קלט לפקודה. כלומר, לדוגמה:
קוד:

$ wc <<< whatever
      1       1       9
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 09/04/2021 - 16:40
נושא ההודעה:

אני מבין שזה קלט לפקודה, וגם יכול להשתמש בו כך:
קוד:
cat 7<<<foo <&7


או פשוט יותר
קוד:
cat <<<foo


ואני רואה גם מה HERE-STRINGS עושה עם FD &0 באמצעות

קוד:
ls /proc/self/fd/ -l <<<foo


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

המטרה - לבדוק האם ניתן לבצע כתיבה למסך או לקובץ באמצעות שימוש ב PIPE/FD בלבד (ללא בינארים, תוכניות ופקודות, רק BUILT-IN של BASH).
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
11111לא בפורום כעת ת.הצטרפות: 15/12/2005 · הודעות: 535 ·
 

הודעה פורסם: 11/04/2021 - 02:03
נושא ההודעה:

קוד:
echo hello >> /proc/$$/fd/1
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 11/04/2021 - 09:25
נושא ההודעה:

הערה קטנה: $$ הוא מספר התהליך של ה־SHELL הראשי ולא של התהליך הנוכחי:
קוד:

$ echo hi >/proc/$$/fd/1 | wc
hi
      0       0       0

$ echo hi >/proc/self/fd/1 | wc
      1       1       3
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/04/2021 - 10:42
נושא ההודעה:

11111 :
קוד:
echo hello >> /proc/$$/fd/1

א. עדיף להשתמש ב /proc/self במקום
ב. ביקשתי ללא שימוש ב echo/cat/etc
ג. תודה Wink

בינתיים הצלחתי עם שימוש ב cp, אבל זה לא מרשים אותי. המטרה היא ללא פקודות, רק שימוש ב PIPE/FD. בהצלחה Twisted Evil
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 11/04/2021 - 11:48
נושא ההודעה:

מה הבעיה שלך עם echo? ב־bash זוהי פקודה מובנית ולא הרצה של תהליך חיצוני. להבדיל, pipe מחייב יצירת תתי תהליכים.

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

הודעה פורסם: 11/04/2021 - 12:13
נושא ההודעה:

צפריר :
מה הבעיה שלך עם echo? ב־bash זוהי פקודה מובנית ולא הרצה של תהליך חיצוני. להבדיל, pipe מחייב יצירת תתי תהליכים.

בכל מקרה, לא ראיתי עדיין הסבר של מה שברצונך לעשות.

לא בעיה - אתגר. אני מעונין לבדוק מצבי קצה של BASH בשימוש של FD/PIPE וזו המטרה שהצבתי במחקר. בינתיים אני לומד המון על התהליכים שמתבצעים מאחורי הקלעים של BASH, וזה לכשעצמו מספק, אך האתגר עומד בעינו, גם אם הכשלון מובטח Cool

והערה: למרות ש echo הוא מובנה ב BASH, עדין קיים הבינארי. אבל זה לא קשור לאתגר.
קוד:

$ ls -l `which echo`
-rwxr-xr-x 1 root root 39256 Sep  5  2019 /bin/echo
$ echo --version
--version
$ /bin/echo --version
echo (GNU coreutils) 8.30
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Brian Fox and Chet Ramey.
$
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/04/2021 - 22:33
נושא ההודעה:

הנה דוגמה לאתגר דומה (שמח שאני לא המוזר היחיד): https://oops.cmdchallenge.com/
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 12/04/2021 - 08:54
נושא ההודעה:

קוד:

while read i ; do echo $i; done <~/.gitconfig
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 12/04/2021 - 09:01
נושא ההודעה:

תיקון קטן: אולי זה במקרה עובד ל־.gitconfig שלך, אבל במקרה הכללי:
קוד:

$ (a="1  2"; echo $a; echo "$a")
1 2
1  2
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 14/04/2021 - 13:51
14 נושא ההודעה:

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

תוכן הדיון

  1. אורח
  2. אורח
  3. אורח [צפריר]
  4. אורח
  5. 11111
  6. אורח [צפריר]
  7. אורח
  8. אורח [צפריר]
  9. אורח
  10. אורח
  11. אורח
  12. אורח [צפריר]
  13. אורח