導航:首頁 > 程序命令 > linuxsh命令詳解

linuxsh命令詳解

發布時間:2022-07-15 02:48:32

1. linux里sh命令是做什麼的詳解!

sh或是執行腳本,或是切換到sh這個bash里,默認的shell是bash,你可以試試tcsh啊,csh啊,ksh,zsh什麼的,看看別的shell是什麼樣子的。當然,linux中sh是鏈接到bash上的,所以sh與bash在功能上是沒有區別的。
還有就是在執行腳本的時候是用sh
+
腳本名的方式來執行,其實,大部分的時候,簡單腳本只要許可權設置正確,可以直接執行,不需要sh命令的

2. 請問linux系統下,sh命令是做什麼工作的

sh或是執行腳本,或是切換到sh這個bash里,默認的shell是bash,你可以試試tcsh啊,csh啊,ksh,zsh什麼的,看看別的shell是什麼樣子的。當然,linux中sh是鏈接到bash上的,所以sh與bash在功能上是沒有區別的。
還有就是在執行腳本的時候是用sh
+
腳本名的方式來執行,其實,大部分的時候,簡單腳本只要許可權設置正確,可以直接執行,不需要sh命令的

3. Linux下面如何運行 SH文件

本文介紹Linux下面用命令如何運行.sh文件的方法,有兩種方法:

一、直接./加上文件名.sh,如運行hello.sh為./hello.sh【hello.sh必須有x許可權】

二、直接sh 加上文件名.sh,如運行hello.sh為sh hello.sh【hello.sh可以沒有x許可權】

工具/原料

4. Linux下面如何運行SH文件

1、打開電腦,在電腦的左下角選擇終端,這里是kde桌面,需要右鍵點擊才能出現終端選項;

5. linux 終端sh命令什麼意思

Bourne
shell
(sh)
可以說是一個平台.
直接通向內核的.你輸入SH等於改變了你的shell
linux默認的shell
是bash
你改成了,bourne
shell
你輸了bash
就改回來啦.
$符代表普通用戶.

6. Linux 腳本 sh 和 ./ 的區別

區別只有一點:

sh表示腳本默認使用sh腳本解釋器。

未指定腳本解釋器默認為 ./。

具體解釋:

使用「./」執行腳本,對應的xxx.sh腳本必須要有執行許可權。

使用「sh」 執行腳本,對應的xxx.sh沒有執行許可權,亦可執行。

當腳本開頭使用#!設置使用的shell類型時,使用「./」執行腳本時,則使用「#!」標志的shell執行腳本;若無使用「#!」標記,則使用系統設置的默認shell執行腳本。

(6)linuxsh命令詳解擴展閱讀:

舉例:

登錄用戶root查看許可權:

-rwx—— 1 root root

執行這個shell腳本 :

./test 成功。

sh test 成功。

去掉執行許可權x:

-rw——- 1 root root 17 2011-09-22 23:33 test

執行這個shell腳本。

./test 失敗 (-bash: ./test: Permission denied)。

sh test 成功。

7. 能把這個linux shell命令的每個參數給解釋一下么

問題描述:在linux shell中如何處理tail -n 10 access.log這樣的命令行選項?
在bash中,可以用以下三種方式來處理命令行參數,每種方式都有自己的應用場景。
1,直接處理,依次對$1,$2,...,$n進行解析,分別手工處理;
2,getopts來處理,單個字元選項的情況(如:-n 10 -f file.txt等選項);
3,getopt,可以處理單個字元選項,也可以處理長選項long-option(如:--prefix=/home等)。
總結:小腳本手工處理即可,getopts能處理絕大多數的情況,getopt較復雜、功能也更強大。
1,直接手工處理位置參數
必須要要知道幾個變數,

復制代碼代碼如下:

* $0 :即命令本身,相當於c/c++中的argv[0]
* $1 :第一個參數.
* $2, $3, $4 ... :第2、3、4個參數,依次類推。
* $# 參數的個數,不包括命令本身
* $@ :參數本身的列表,也不包括命令本身
* $* :和$@相同,但"$*" 和 "$@"(加引號)並不同,"$*"將所有的參數解釋成一個字元串,而"$@"是一個參數數組。

手工處理方式能滿足多數的簡單需求,配合shift使用也能構造出強大的功能,但處理復雜選項時建議用下面的兩種方法。
例子,(getargs.sh):

復制代碼代碼如下:

#!/bin/bash
if [ $# -lt 1 ]; then
echo "error.. need args"
exit 1
fi
echo "commond is $0"
echo "args are:"
for arg in "$@"
do
echo $arg
done

運行命令:

復制代碼代碼如下:

./getargs.sh 11 22 cc
commond is ./getargs.sh
args are:
11
22
cc

2,getopts (shell內置命令)
處理命令行參數是一個相似而又復雜的事情,為此,c提供了getopt/getopt_long等函數,c++的boost提供了options庫,在shell中,處理此事的是getopts和getopt。
getopts/getopt的區別,getopt是個外部binary文件,而getopts是shell builtin。

復制代碼代碼如下:

[root@jbxue ~]$ type getopt
getopt is /usr/bin/getopt
[root@jbxue ~]$ type getopts
getopts is a shell builtin

getopts不能直接處理長的選項(如:--prefix=/home等)
關於getopts的使用方法,可以man bash 搜索getopts
getopts有兩個參數,第一個參數是一個字元串,包括字元和「:」,每一個字元都是一個有效的選項,如果字元後面帶有「:」,表示這個字元有自己的參數。getopts從命令中獲取這些參數,並且刪去了「-」,並將其賦值在第二個參數中,如果帶有自己參數,這個參數賦值在「optarg」中。提供getopts的shell內置了optarg這個變變,getopts修改了這個變數。
這里變數$optarg存儲相應選項的參數,而$optind總是存儲原始$*中下一個要處理的元素位置。
while getopts ":a:bc" opt #第一個冒號表示忽略錯誤;字元後面的冒號表示該選項必須有自己的參數
例子,(getopts.sh):

復制代碼代碼如下:

echo $*
while getopts ":a:bc" opt
do
case $opt in
a ) echo $optarg
echo $optind;;
b ) echo "b $optind";;
c ) echo "c $optind";;
? ) echo "error"
exit 1;;
esac
done
echo $optind
shift $(($optind - 1))
#通過shift $(($optind - 1))的處理,$*中就只保留了除去選項內容的參數,可以在其後進行正常的shell編程處理了。
echo $0
echo $*

執行命令:

復制代碼代碼如下:

./getopts.sh -a 11 -b -c
-a 11 -b -c
11
3
b 4
c 5
5
./getopts.sh

3,getopt(一個外部工具)
具體用用法可以 man getopt
#-o表示短選項,兩個冒號表示該選項有一個可選參數,可選參數必須緊貼選項,如-carg 而不能是-c arg
#--long表示長選項
例子,(getopt.sh):

復制代碼代碼如下:

#!/bin/bash
# a small example program for using the new getopt(1) program.
# this program will only work with bash(1)
# an similar program using the tcsh(1) script. language can be found
# as parse.tcsh
# example input and output (from the bash prompt):
# ./parse.bash -a par1 'another arg' --c-long 'wow!*\?' -cmore -b " very long "
# option a
# option c, no argument
# option c, argument `more'
# option b, argument ` very long '
# remaining arguments:
# --> `par1'
# --> `another arg'
# --> `wow!*\?'
# note that we use `"$@"' to let each command-line parameter expand to a
# separate word. the quotes around `$@' are essential!
# we need temp as the `eval set --' would nuke the return value of getopt.
#-o表示短選項,兩個冒號表示該選項有一個可選參數,可選參數必須緊貼選項
#如-carg 而不能是-c arg
#--long表示長選項
#"$@"在上面解釋過
# -n:出錯時的信息
# -- :舉一個例子比較好理解:
#我們要創建一個名字為 "-f"的目錄你會怎麼辦?
# mkdir -f #不成功,因為-f會被mkdir當作選項來解析,這時就可以使用
# mkdir -- -f 這樣-f就不會被作為選項。
temp=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
-n 'example.bash' -- "$@"`
if [ $? != 0 ] ; then echo "terminating..." >&2 ; exit 1 ; fi
# note the quotes around `$temp': they are essential!
#set 會重新排列參數的順序,也就是改變$1,$2...$n的值,這些值在getopt中重新排列過了
eval set -- "$temp"
#經過getopt的處理,下面處理具體選項。
while true ; do
case "$1" in
-a|--a-long) echo "option a" ; shift ;;
-b|--b-long) echo "option b, argument \`$2'" ; shift 2 ;;
-c|--c-long)
# c has an optional argument. as we are in quoted mode,
# an empty parameter will be generated if its optional
# argument is not found.
case "$2" in
"") echo "option c, no argument"; shift 2 ;;
*) echo "option c, argument \`$2'" ; shift 2 ;;
esac ;;
--) shift ; break ;;
*) echo "internal error!" ; exit 1 ;;
esac
done
echo "remaining arguments:"
for arg do
echo '--> '"\`$arg'" ;
done

運行命令:

復制代碼代碼如下:

./getopt.sh --b-long abc -a -c33 remain
option b, argument `abc'
option a
option c, argument `33'
remaining arguments:
--> `remain'

以上提供參考學習,謝謝!

8. linux shell 重啟命令

linux shell 重啟命令有五個,分別如下:

1、shutdown。

2、poweroff。

3、init。

4、reboot。

5、halt。

Linux,全稱GNU/Linux,是一種免費使用和自由傳播的類UNIX操作系統,其內核由林納斯·本納第克特·托瓦茲於1991年10月5日首次發布,它主要受到Minix和Unix思想的啟發,是一個基於POSIX的多用戶、多任務、支持多線程和多CPU的操作系統。

相關簡介

Linux不僅系統性能穩定,而且是開源軟體。其核心防火牆組件性能高效、配置簡單,保證了系統的安全。在很多企業網路中,為了追求速度和安全,Linux不僅僅是被網路運維人員當作伺服器使用,甚至當作網路防火牆,這是Linux的一大亮點。

Linux具有開放源碼、沒有版權、技術社區用戶多等特點,開放源碼使得用戶可以自由裁剪,靈活性高,功能強大,成本低。尤其系統中內嵌網路協議棧,經過適當的配置就可實現路由器的功能。這些特點使得Linux成為開發路由交換設備的理想開發平台。

9. linux ./a.sh 命令 與sh a.sh的區別是什麼

linux ./a.sh 命令 與sh a.sh的區別為:可執行屬性不同、執行方式不同、兼容性不同。

一、可執行屬性不同

1、./a.sh 命令:./a.sh 命令的文件必須具有可執行屬性。

2、sh a.sh命令:sh a.sh命令的文件不必具有可執行屬性。

二、執行方式不同

1、./a.sh 命令:./a.sh 命令使用腳本中第一行所指定的命令來解釋和執行文件。

2、sh a.sh命令:sh a.sh命令使用shell工具的SH腳本直接解釋和執行文件。

三、兼容性不同

1、./a.sh 命令:./a.sh 命令的兼容性比sh a.sh命令更好,不受限於shell工具。

2、sh a.sh命令:sh a.sh命令的兼容性比./a.sh 命令更差,受限於shell工具。

10. linux執行sh腳本的指令有哪些

bash shell 腳本的方法有多種,現在作個小結。假設我們編寫好的shell腳本的文件名為hello.sh,文件位置在/data/shell目錄中並已有執行許可權。
方法一:切換到shell腳本所在的目錄(此時,稱為工作目錄)執行shell腳本:

復制代碼代碼如下:

cd /data/shell

./hello.sh

./的意思是說在當前的工作目錄下執行hello.sh。如果不加上./,bash可能會響應找到不到hello.sh的錯誤信息。因為目前的工作目錄(/data/shell)可能不在執行程序默認的搜索路徑之列,也就是說,不在環境變數PASH的內容之中。查看PATH的內容可用 echo $PASH 命令。現在的/data/shell就不在環境變數PASH中的,所以必須加上./才可執行。

方法二:以絕對路徑的方式去執行bash shell腳本:

復制代碼代碼如下:

/data/shell/hello.sh

方法三:直接使用bash 或sh 來執行bash shell腳本:

復制代碼代碼如下:

cd /data/shell

bash hello.sh



復制代碼代碼如下:

cd /data/shell

sh hello.sh

注意,若是以方法三的方式來執行,那麼,可以不必事先設定shell的執行許可權,甚至都不用寫shell文件中的第一行(指定bash路徑)。因為方法三是將hello.sh作為參數傳給sh(bash)命令來執行的。這時不是hello.sh自己來執行,而是被人家調用執行,所以不要執行許可權。那麼不用指定bash路徑自然也好理解了啊,呵呵……。

方法四:在當前的shell環境中執行bash shell腳本:

復制代碼代碼如下:

cd /data/shell

. hello.sh



復制代碼代碼如下:

cd /data/shell

source hello.sh

前三種方法執行shell腳本時都是在當前shell(稱為父shell)開啟一個子shell環境,此shell腳本就在這個子shell環境中執行。shell腳本執行完後子shell環境隨即關閉,然後又回到父shell中。而方法四則是在當前shell中執行的。

閱讀全文

與linuxsh命令詳解相關的資料

熱點內容
自己購買雲主伺服器推薦 瀏覽:422
個人所得稅java 瀏覽:761
多餘的伺服器滑道還有什麼用 瀏覽:192
pdf劈開合並 瀏覽:28
不能修改的pdf 瀏覽:752
同城公眾源碼 瀏覽:489
一個伺服器2個埠怎麼映射 瀏覽:298
java字元串ascii碼 瀏覽:79
台灣雲伺服器怎麼租伺服器 瀏覽:475
旅遊手機網站源碼 瀏覽:332
android關聯表 瀏覽:945
安卓導航無聲音怎麼維修 瀏覽:333
app怎麼裝視頻 瀏覽:431
安卓系統下的軟體怎麼移到桌面 瀏覽:96
windows拷貝到linux 瀏覽:772
mdr軟體解壓和別人不一樣 瀏覽:904
單片機串列通信有什麼好處 瀏覽:340
游戲開發程序員書籍 瀏覽:860
pdf中圖片修改 瀏覽:288
匯編編譯後 瀏覽:491