SHELL 基礎知識

2021-10-02 14:25:45 字數 2820 閱讀 5140

shell是linux的一外殼,它包在linux核心的外面,為使用者和核心之間的互動提供了乙個介面

當使用者下達指令給作業系統的時候,實際上是把指令告訴shell,經過shell解釋,處理後讓核心做出相應的動作

系統的回應和輸出的資訊也由shell處理,然後顯示在使用者的螢幕上

簡單的說,當命令或者程式不在命令列執行,而是通過乙個程式檔案來執行,這個程式就被稱為shell指令碼

也就是在shell指令碼裡內建了多條命令,語句,迴圈控制,然後將這些命令一次性執行完畢,這種通過檔案執行命令的方式稱為非互動式,乙個最簡單的指令碼其實就是將一連串系統命令儲存在乙個檔案中。最起碼,它能幫 你省下重複輸入這一連串命令的功夫。

適合處理作業系統底層的業務,有眾多系統命令為其做支撐(還有文字處理三兄弟grep,sed,awk)

適合處理純文字檔案,linux中許多服務配置檔案,啟動指令碼,都是純文字(httpd,nfs,mysql,nginx,lvs)

linux系統指令碼用shell開發更簡單

在開發階段使用shell指令碼建立應用原型是十分有用的

三種方式:

[root@localhost ~]# cat /etc/passwd | head -

1root:x:0:

0:root:

/root:

/bin/bash

[root@localhost ~]# grep root /etc/passwd

root:x:0:

0:root:

/root:

/bin/bash

operator:x:11:

0:operator:

/root:

/sbin/nologin

[root@localhost ~]# echo $shell

/bin/bash

vim 01.sh			#寫乙個指令碼(檔名必須以.sh結尾)

#!/bin/bash #指定shell程式的直譯器

echo

"hello shell!"

#這是一條輸出語句

沒有執行許可權時

[root@localhost ~]# sh log.sh 

logs cleaned up...

2.path/script.sh | ./script(要在指令碼的當前目錄下)   

絕對路徑,需要給指令碼新增執行許可權

[root@localhost ~]

# /root/log.sh

-bash: /root/log.sh: permission denied ##沒有執行許可權時,不可執行

[root@localhost ~]

# chmod +x log.sh

[root@localhost ~]

# /root/log.sh ##新增許可權後正常執行

logs cleaned up...

3.source script.sh | . script.sh

這種方式會使用source或.號來讀入指定shell檔案,並會把其他shell中的變數值或函式返回給父shell繼續使用

前兩種方式,在執行指令碼的時候,會預設開啟乙個新的shell,而新shell的變數值和函式不會返回給父shell

[root@localhost mnt]

# vim test.sh

#!/bin/bash

username=

`whoami

`[root@localhost mnt]

# sh test.sh

[root@localhost mnt]

# echo $username ##無返回值

[root@localhost mnt]

# source test.sh

[root@localhost mnt]

# echo $username ##有返回值

root

指令碼執行的方式豐富

which命令:查詢sh命令的完整路徑

具體功能:

which命令用於查詢並顯示給定命令的絕對路徑, 環境變數$path中儲存了查詢命令時需要遍歷的目錄。

which指令會在環境變數 $path設定的目錄裡查詢符合條件的檔案。 使用which命令,就可以看到某個系統命令是否存在,

以及執行的到底是哪乙個位置的命令。

read命令來從標準輸入中讀取使用者輸入的資料

$(佔位符)表示變數

#!/bin/bash

# 從終端讀取使用者輸入的資料 並賦值給preson變數

# read命令來從標準輸入中讀取使用者輸入的資料

SHELL 基礎知識

1 什麼是shell?shell的本意是 殼 的意思,其實已經很形象地說明了shell在linux系統中的作用。shell就是圍繞在linux核心之外的乙個 殼 程式,使用者在作業系統上完成的所有任務都是通過shell與linux系 統核心的互動來實現的。shell本身是乙個c語言編寫的程式,是使用...

shell 基礎知識

預設變數 傳入指令碼的命令列引數個數 所有命令列引數值,在各個引數值之間留有空格 0 命令本身 shell檔名 1 第乙個命令列引數 2 第二個命令列引數 區域性變數 在變數首次被賦值時加上local 關鍵字可以宣告乙個區域性變數,例s3 bin bash hello var1 echo hello...

shell 基礎知識

預設變數 傳入指令碼的命令列引數個數 所有命令列引數值,在各個引數值之間留有空格 0 命令本身 shell檔名 1 第乙個命令列引數 2 第二個命令列引數 區域性變數 在變數首次被賦值時加上local 關鍵字可以宣告乙個區域性變數,例s3 bin bash hello var1 echo hello...