shell 基本知識

2021-09-05 11:00:24 字數 3415 閱讀 2160

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

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

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

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

也就是在shell指令碼裡內建了多條命令,語句,迴圈控制,然後將這些命令一次性執行完畢,這種通過檔案執行命令的方式稱為非互動式

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

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

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

三種方式:

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

root:x:0:0:root:/root:/bin/bash

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

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

[root@fuwu ~]# echo $shell

/bin/bash

乙個完整的shell指令碼需要有以下幾個部分:

指令碼名:最好以.sh結尾

第一行:#!/bin/bash

指定直譯器:由哪個程式來執行指令碼內容

#!:幻數

注意:#!/bin/bash必須寫在第一行,否則會被認為是注釋

有使用者判斷,否則任何使用者都可以執行這個指令碼

有流程控制,否則只是把簡單的命令進行順序操作,沒有成功與否的判斷

注釋:可以命令後,也可以自成一行

例:清空日誌

[root@fuwu test]# cat log.sh 

#!/bin/bash

#date:2018-12-26

#author:limin

#connect:[email protected]

#desc: this script is for ...

#version:1.0

log_dir=/var/log

root_uid=0

##判斷是否是超級使用者

if [ "$uid" -ne "$root_uid" ];then

echo "error:you should be root to run this script!"

exit 1

fi ##判斷能否進入目錄

cd $log_dir ||

> messages &&

[root@fuwu test]# sh log.sh

logs cleaned up ...

[root@fuwu test]# cat /var/log/messages

[root@fuwu test]#

bash script.sh或者 sh script.sh(當指令碼沒有執行許可權時)

path/script.sh或者 ./script.sh(絕對路徑,或當前目錄下,要給指令碼乙個執行許可權)

source script.sh 或者 . script.sh

(需要傳遞變數或函式時使用)

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

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

a:start 開啟httpd服務

b:stop 關閉httpd服務

c:restart 重啟httpd服務

d:status檢視httpd服務的狀態

請輸入你的選擇:

a:start 開啟httpd服務

b:stop 關閉httpd服務

c:restart 重啟httpd服務

d:status檢視httpd服務的狀態

請輸入你的選擇:

a:start 開啟httpd服務

b:stop 關閉httpd服務

c:restart 重啟httpd服務

d:status檢視httpd服務的狀態

請輸入你的選擇:

a:start 開啟httpd服務

b:stop 關閉httpd服務

c:restart 重啟httpd服務

d:status檢視httpd服務的狀態

請輸入你的選擇:

a:start 開啟httpd服務

b:stop 關閉httpd服務

c:restart 重啟httpd服務

d:status檢視httpd服務的狀態

請輸入你的選擇:q

a:start 開啟httpd服務

b:stop 關閉httpd服務

c:restart 重啟httpd服務

d:status檢視httpd服務的狀態

請輸入你的選擇:q

connection to 172.25.254.160 closed.

shell基本知識

shell型別 函式 主過程要呼叫才能執行 多行注釋 或 單行注釋 bin bash echo abcdefg.syshello syshello echo start.syshello echo exit.fi 結束標誌 grep ls l grep root awkls l awk ls l a...

shell 基本知識

什麼是shell shell是作業系統中的乙個軟體包 它包在liunx核心的外面,為使用者和核心之間的互動提供了乙個介面 系統中的命令用shell去解釋shell接受系統回應的輸出並顯示其到螢幕中 bash gnu boune again shell什麼是shell指令碼 指令碼是一種解釋型語言 用...

shell中的基本知識

指令碼是一種解釋型語言 用shell指令碼儲存執行動作 用指令碼判定命令的執行條件 用指令碼來實現動作的批量執行 vim etc vimrc 用vim編寫指令碼 bin bash 指令碼使用的直譯器,通常用幻數 指定 author 指令碼作者 date 指令碼創作時間 mali 指令碼作者 vers...