『壹』 在linux C語言下,可執行的Shell腳本文件與編譯之後的C可執行文件的區別有哪些
二進制文件是機器碼,可直接執行,而shell腳本是文本,需依賴sh來解析並執行,shell腳本的第一行一般類似這樣:
#!/bin/sh
有了這行,且有執行權時,就可以支持 ./ 方式執行,如果沒有這行,或沒有執行權時,則只支持 sh xxx 這種方式
簡單的識別方法:
用 file 命令識別:
XXX: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=, stripped
XXX.sh: POSIX shell script, ASCII text executable
『貳』 Linux裡面基本的shell腳本編寫有哪些
shell腳本就是一些命令的集合。
舉個例子,我想實現這樣的操作:
1)進入到/tmp/目錄;
2)列出當前目錄中所有的文件名;
3)把所有當前的文件拷貝到/root/目錄下;
4)刪除當前目錄下所有的文件。
簡單的4步在shell窗口中需要你敲4次命令,按4次回車。這樣是不是很麻煩?當然這4步操作非常簡單,如果是更加復雜的命令設置需要幾十次操作呢?那樣的話一次一次敲鍵盤會很麻煩。所以不妨把所有的操作都記錄到一個文檔中,然後去調用文檔中的命令,這樣一步操作就可以完成。其實這個文檔呢就是shell腳本了,只是這個shell腳本有它特殊的格式。《linux 就該這么學》
Shell腳本通常都是以.sh 為後綴名的,這個並不是說不帶.sh這個腳本就不能執行,只是大家的一個習慣而已。所以,以後你發現了.sh為後綴的文件那麼它一定會是一個shell腳本了。test.sh中第一行一定是 「#! /bin/bash」 它代表的意思是,該文件使用的是bash語法。如果不設置該行,那麼你的shell腳本就不能被執行。』#』表示注釋,在前面講過的。後面跟一些該腳本的相關注釋內容以及作者和創建日期或者版本等等。當然這些注釋並非必須的,如果你懶的很,可以省略掉,但是筆者不建議省略。因為隨著你工作時間的增加,你寫的shell腳本也會越來越多,如果有一天你回頭查看你寫的某個腳本時,很有可能忘記該腳本是用來干什麼的以及什麼時候寫的。所以寫上注釋是有必要的。另外系統管理員並非你一個,如果是其他管理員查看你的腳本,他看不懂豈不是很郁悶。該腳本再往下面則為要運行的命令了。
『叄』 Linux下面如何運行 SH文件
本文介紹Linux下面用命令如何運行.sh文件的方法,有兩種方法:
一、直接./加上文件名.sh,如運行hello.sh為./hello.sh【hello.sh必須有x許可權】
二、直接sh 加上文件名.sh,如運行hello.sh為sh hello.sh【hello.sh可以沒有x許可權】
工具/原料
windows、linux
xshell
方法一:當前目錄執行.sh文件
1
【步驟一】cd到.sh文件所在目錄
比如以hello.sh文件為例,如下圖
注意事項
用「./」加文件名.sh執行時,必須給.sh文件加x執行許可權
如果對您有幫助,幫忙點「有得」,有助於您是我們進步的最大動力!
如果您喜歡,請點「投票」,您的參與是我們進步的最大動力!
如果您有疑問,請提交疑問,與您的互動是我們進步的最大動力!
僅供參考
『肆』 Linux下怎麼通過shell批量修改文件名後綴
比如修改一下目錄下的所有文件的後綴
ls -l|awk '{print $9}'|xargs -I{} mv {} {}.bak
[root@ test]# touch a b c
[root@ test]# ls -l
total 0
-rw-r--r-- 1 root root 0 Apr 27 21:50 a
-rw-r--r-- 1 root root 0 Apr 27 21:50 b
-rw-r--r-- 1 root root 0 Apr 27 21:50 c
[root@ test]# ls -l|awk '{print $9}'|xargs -I{} mv {} {}.bak
[root@ test]# ls -l
total 0
-rw-r--r-- 1 root root 0 Apr 27 21:50 a.bak
-rw-r--r-- 1 root root 0 Apr 27 21:50 b.bak
-rw-r--r-- 1 root root 0 Apr 27 21:50 c.bak
『伍』 linux shell問題 判斷文件後綴
root@Bizbox:~# filename="test.tar.gz"
root@Bizbox:~# echo ${filename##*.}
gz
root@Bizbox:~# if [ "${filename##*.}" = "gz" ]; then
> tar -zxf ${filename}
> elif [ "${filename##*.}" = "bz2" ]; then
> tar -jxf ${filename}
> fi
不知道是不是你想要的!