הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   תחזוק שרתים ושירותי רשת נוספים (https://hosts.co.il/forums/forumdisplay.php?f=29)
-   -   עוד שאלה דחופה בשפת BASH (https://hosts.co.il/forums/showthread.php?t=75646)

InetKey.Net 16-06-09 22:25

עוד שאלה דחופה בשפת BASH
 
שלום , יש לי שאלה חשובה.

נגיד יש לי קובץ הרצה ובסוף כמובן רשום exit , כלומר שהקובץ יסגר לאחר סיום ההרצה.

אני רוצה שזה יעביר אותי אוטומתית לתיקיה אחרת , כלומר בקובץ אני רושם לרשום cd folder
וכשזה ייצא מהקובץ ההרצה ויחזור לSHELL שאני כבר יהיה בתיקיה בתוך folder

איך אפשר לעשות את זה? שמעתי משהו על ALIAS וSOURCE אבל אני לא מצליח , אשמח לעזרה!


תודה רבה!

sheeze 17-06-09 00:27

מאד תלוי איך כתבת את הסקיפט שלך.
הוא מתחיל ב- #!/usr/bash?
אם כן, כל פעם שאתה מריץ את הסקריפט הוא יוצר shell חדש.
אני לא זוכר כבר בדיוק ואין לי פה יוניקס לבדוק את זה אבל אם אתה כותב בסינטקס של BASH וגם עובד ב-BASH אתה לא חייב לכתוב את החלק העליון (#!/usr/bash). זה אמור לפתור את הבעיה.

alias לא קשור לעסק בכלל. זה לתת שמות שונים לפקודות קיימות.
הרצת סקריפט עם source מייבאת את משתני הסביבה ל-shell החדש שנוצר. אם אני לא טועה זה עובד גם רק עם csh למיניו.

yonatan 17-06-09 02:52

ציטוט:

נכתב במקור על ידי InetKey.Net (פרסם 721995)
שלום , יש לי שאלה חשובה.

נגיד יש לי קובץ הרצה ובסוף כמובן רשום exit , כלומר שהקובץ יסגר לאחר סיום ההרצה.

אני רוצה שזה יעביר אותי אוטומתית לתיקיה אחרת , כלומר בקובץ אני רושם לרשום cd folder
וכשזה ייצא מהקובץ ההרצה ויחזור לSHELL שאני כבר יהיה בתיקיה בתוך folder

איך אפשר לעשות את זה? שמעתי משהו על ALIAS וSOURCE אבל אני לא מצליח , אשמח לעזרה!


תודה רבה!

שמעת נכון.. עושים את זה עם סורס.

קוד:

admin@server securehost ~/cdback.sh $ . mycd.sh
hello im a cd /tmp command
/home/admin/cdback.sh
moveing...
/tmp
we are now in /tmp
admin@server securehost /tmp $


הנה הקוד
admin@server securehost ~/cdback.sh $ cat mycd.sh
#!/bin/bash
echo hello im a cd /tmp command
pwd
echo moveing...
cd /tmp
pwd
echo we are now in /tmp
admin@server securehost ~/cdback.sh $

פשוט אה?

סתם לידע כללי.. מה אתה בונה לנו? :-)

InetKey.Net 17-06-09 05:10

ציטוט:

נכתב במקור על ידי yonatan (פרסם 722033)
שמעת נכון.. עושים את זה עם סורס.

קוד:

admin@server securehost ~/cdback.sh $ . mycd.sh
hello im a cd /tmp command
/home/admin/cdback.sh
moveing...
/tmp
we are now in /tmp
admin@server securehost /tmp $


הנה הקוד
admin@server securehost ~/cdback.sh $ cat mycd.sh
#!/bin/bash
echo hello im a cd /tmp command
pwd
echo moveing...
cd /tmp
pwd
echo we are now in /tmp
admin@server securehost ~/cdback.sh $

פשוט אה?

סתם לידע כללי.. מה אתה בונה לנו? :-)

משום מה הקוד שהבאת לי לא עובד..

yonatan 17-06-09 05:54

ציטוט:

נכתב במקור על ידי InetKey.Net (פרסם 722035)
משום מה הקוד שהבאת לי לא עובד..

זו השיטה היחידה בלי להכנס לסקריפטינג מתוסבך יותר.
cd היא פקודה מובנית - לא קובץ בינארי.

זו גירסאת הבאש אצלי :

echo $BASH_VERSION
3.2.25(1)-release

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

InetKey.Net 17-06-09 13:09

אתה יכול לרשום לי את הקוד יותר מסודר שאני יכניס אותו? יש רשמת לי פעמיים משהו יכול להיות שצריך 2 קבצים? אני לא ממש הבנתי.
תרשום לי בבקשה את הקוד איך שהוא אמור להראות אני רק יעשה העתק הדבק .

תודה רבה!

yonatan 17-06-09 17:05

ציטוט:

נכתב במקור על ידי InetKey.Net (פרסם 722087)
אתה יכול לרשום לי את הקוד יותר מסודר שאני יכניס אותו? יש רשמת לי פעמיים משהו יכול להיות שצריך 2 קבצים? אני לא ממש הבנתי.
תרשום לי בבקשה את הקוד איך שהוא אמור להראות אני רק יעשה העתק הדבק .

תודה רבה!

צריך 2 קבצים תעתיק ותדביק,

שם קובץ 1 cdd.sh
תוכן
קוד:

#!/bin/bash
ORIGPWD=$PWD
echo $ORIGPWD
declare -x PWD=/tmp
echo $PWD
cd $PWD

שם קובץ 2

go.sh
קוד:

#!/bin/bash
. cdd.sh
cd $PWD
pwd

/bin/bash

ומריצים
sh go.sh

InetKey.Net 18-06-09 09:20

זה עובד , תודה רבה לך!


כל הזמנים הם GMT +2. הזמן כעת הוא 16:34.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ