查看完整版本 : shell script應用問題

go2074 2012-10-8 11:42 PM

shell script應用問題

我知道shell script除左可以寫小程式唔使complile,仲有可以一次運行多個命令的用法,問題我想知邊d命令係很常用,咁我可以寫定一d script,咁我每次就行個script唔使打咁多命令,另外我想問shell script 個PATH係點定,唔寫得唔得:smile_41:

chess360 2012-10-9 07:45 AM

樓主是不是問 PATH?

系統的 $PATH 在 /etc/profile
每個用戶的 $PATH 在 ~/.profile

打開檔案,找到PATH的想關部份修改即可。

如果指自訂的路徑,可以在 .profile 加入
d=/very/long/directory/name
以後 cd $d 即可。

常用的command恐怕只有自己才知。
shell script 適用於簡單的 command 組合。
如果只是每次打相同的選項或參數等,應考慮用alias(可在~/.bashrc 永久設定)。例如設定 alias ll='ls -l'。
復雜的應用可考慮 perl 或 python scripts。

[[i] 本帖最後由 chess360 於 2012-10-9 07:46 AM 編輯 [/i]]

go2074 2012-10-9 05:16 PM

回覆 2# 的帖子

謝謝,你講得好岩,每個指令都可以係常用指令,我而家下一個目標係將鳥哥每個章節教既野應用係我既linux生活中,我尋日睇返13章,先諗到shell script既妙用:smile_40:
另外shell script 適用於簡單的 command 組合係咩意思?不可寫一個script一次run好了多命令?

chess360 2012-10-9 08:05 PM

回覆 3# 的帖子

可能表達得不好,應該是工作本身的復雜程度。

例如 /etc/profile 本身就是一個 shell script,內容雖多,但性質簡單。即使行100個指令都無問題。

但有的工作比較復雜,用高階程式語言反而方便,例如涉及regular expression的。

實際例子: rename 指令可以利用 regular expression 改多個檔案名,但 rename 指令本身是一個 perl script,用文本篇輯器打開 (應該是 /usr/bin/rename ,或用 whereis 找找)一看更知,如果用 shell script 或者 C 寫反而復雜。

go2074 2012-10-9 08:32 PM

回覆 4# 的帖子

點解我vi /usr/bin/rename見到一片空白?仲有perlscript係唔係只可run program,唔可以run command?

chess360 2012-10-9 09:00 PM

回覆 5# 的帖子

樓主用fedora?fedora是沒有 rename 的,但可以下戴使用。

rename 是 perl 的創造者 larry wall 親自寫的,google 一下很易找到源碼。

這個連結有用法和源碼下載:
[url]http://www.cyberciti.biz/tips/renaming-multiple-files-at-a-shell-prompt.html[/url]

如用 fedora,存為 rename.pl,放在合適的 path (例如 /usr/local/bin 或 ~/bin之下),chmod +x 之後應可用。如要跟上頁例子,在fedora 下要打 rename.pl 代替 rename。

perl 亦可 run shell command。

生日會旁邊鴨 2012-10-12 10:13 PM

*** 作者被禁止或刪除 內容自動屏蔽 ***

生日會旁邊鴨 2012-10-12 10:16 PM

*** 作者被禁止或刪除 內容自動屏蔽 ***

生日會旁邊鴨 2012-10-13 06:36 PM

*** 作者被禁止或刪除 內容自動屏蔽 ***

go2074 2012-10-13 07:59 PM

回覆 9# 的帖子

唔用rename用咩改命?唔好同我講圖形介面改...

生日會旁邊鴨 2012-10-13 08:25 PM

*** 作者被禁止或刪除 內容自動屏蔽 ***

chess360 2012-10-14 03:45 PM

[quote]原帖由 [i]生日會旁邊鴨[/i] 於 2012-10-13 08:25 PM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=344824231&ptid=20957588][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
用MOVE :loveliness: [/quote]
move? 係咪 mv? ncurses 入面個move?定係真係有個 (改名,移動) command 叫 “move”? :smile_41:

我講緊用regular expression改名喎,我google吾到,請問邊到有資料。

go2074 2012-10-14 04:01 PM

回覆 12# 的帖子

改文件名都同R.E有關:smile_41:

chess360 2012-10-14 04:27 PM

[quote]原帖由 [i]go2074[/i] 於 2012-10-14 04:01 PM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=344886340&ptid=20957588][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
改文件名都同R.E有關:smile_41: [/quote]
呢個thread討論shell script呀媽,用改名做例姐。

不過又吾好話無需要,只要google下“linux bulk rename",好多論壇有人問,有人討論。例如:
[url=http://unix.stackexchange.com/questions/1136/batch-renaming-files]http://unix.stackexchange.com/questions/1136/batch-renaming-files[/url]

有人答 mv ,有人答 rename ,亦有人答mmv等等等等。

如果係我的話,我會用emacs嘅dired mode解決。

[[i] 本帖最後由 chess360 於 2012-10-14 04:30 PM 編輯 [/i]]

go2074 2012-10-14 05:44 PM

回覆 14# 的帖子

雖然玩linux要成日睇英文,但我都係去開中文既論壇,不過都多謝你的分享

生日會旁邊鴨 2012-10-15 05:20 PM

*** 作者被禁止或刪除 內容自動屏蔽 ***

go2074 2012-10-15 08:09 PM

回覆 14# 的帖子

係唔係小型program適合用shell script,perl script,大型程式多數用C,C++,java個d:smile_41:

生日會旁邊鴨 2012-10-15 09:50 PM

*** 作者被禁止或刪除 內容自動屏蔽 ***

mathfeel 2012-10-16 12:37 PM

[quote]原帖由 [i]go2074[/i] 於 2012-10-15 04:09 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=344978941&ptid=20957588][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
係唔係小型program適合用shell script,perl script,大型程式多數用C,C++,java個d:smile_41: [/quote]唔係。Shell script係指用shell語言寫嘅script。

shell係指OS嘅指令翻譯器。Linux下有最基本嘅sh,最常見嘅bash和zsh、csh等功能稍有不同嘅shell語言。shell可以說是由一系列OS暴露給用戶指令組成嘅語言。

script是指把一連串指令寫在一起一次性執行嘅檔案。如果你用Python和Perl寫小程式,它們一般不會被稱為Shell script。

go2074 2012-10-16 04:07 PM

回覆 19# 的帖子

但係script好似都可以寫程式,有loop,有function都仲唔係程式:smile_41:

生日會旁邊鴨 2012-10-16 06:07 PM

*** 作者被禁止或刪除 內容自動屏蔽 ***

go2074 2012-10-16 06:32 PM

回覆 21# 的帖子

script唔係可以係程式可以係命令咩:smile_41:

生日會旁邊鴨 2012-10-16 06:46 PM

*** 作者被禁止或刪除 內容自動屏蔽 ***

mathfeel 2012-10-20 11:22 AM

[quote]原帖由 [i]go2074[/i] 於 2012-10-16 00:07 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=345039150&ptid=20957588][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
但係script好似都可以寫程式,有loop,有function都仲唔係程式:smile_41: [/quote]
任何Turning complete嘅語言都可以係程式。包括[url=http://www.muppetlabs.com/~breadbox/bf/]brainfuck[/url]或[url=http://code.google.com/p/grass-mud-horse/]草泥馬[/url]。
頁: [1]
查看完整版本: shell script應用問題