Shell學習筆記

2021-07-25 20:31:55 字數 3310 閱讀 1238

shell:

shell(外殼)是乙個命令直譯器(也是一種應用程式),處於kernel(核心)和使用者之間,負責把使用者的指令傳遞給核心並且把執行結果回顯給使用者,同時,shell也可以作為一門強大的指令碼語言。

終端:

接受shell命令的輸入輸出程式,ubuntu預設的終端應用是terminal。windows系統中時cmd命令視窗。

shell直譯器:

shell有多種直譯器實現,目前多數linux發行版本預設是bash。可以近似地認為linux shell=bash而windows=cmd,都是命令列直譯器,都是使用者與作業系統的互動介面。但是bash要比cmd強大很多

指令碼編寫工具:

gedit(ubuntu預裝)、vim

shell中的識別符號大小寫敏感,系統命令的引數大小寫也有不同的意義。

shell空格規則:=左右必須無空格,其他符號加空格準沒錯,如[ ] | 等。

shell是解釋型的指令碼語言,變數不區分資料型別,均以字串形式儲存,通過$符實現對變數的引用。因此,將變數列印輸出時最好均帶上雙引號,防止變數中的空格(如日期)截斷字元,導致輸出異常。如:printf "$username"

常規命令

命令解釋

reset

清除螢幕

clear

清屏(向後翻滾乙個螢幕,內容還在)

alias cls=』clear』

為命令clear起別名為cls

printf

列印,引數式(c語言)

echo

列印+自動換行,但不轉義

echo -e

列印+自動換行,轉義輸出,如\n換行

\enter

續行符,由反斜槓+enter鍵組成

date

系統命令,獲取當前日期時間

幫助命令

-命令 –help

命令解釋

man 命令

命令解釋,需安裝manpages-zh

系統資訊

-printenv shell

檢視shell的實際實現

hostname

主機名whoami

當前使用者

uname -a

作業系統資訊

ps -u

在普通使用者模式下以 root 許可權檢視程序

du –sh /home

顯示/home目錄下,磁碟使用情況的總和

chmod a+x

為所有使用者增加執行許可權

sleep

執行緒睡眠

檔案io-cd

進入目錄

~根目錄(/home/使用者名稱)

./當前目錄

../上級目錄

mkdir

make directory建立目錄

touch

建立檔案

cpcopy複製檔案或目錄

mvmove移動檔案或目錄,同目錄時相當於重新命名

rm -r

remove刪除檔案或目錄,需謹慎操作。引數-r表示遞迴刪除子目錄和檔案

ls -l

list列出當前目錄下的檔案與子目錄,引數-l表示以長列表形式顯示詳細記錄

catcatch獲得檔案內容並輸出

邏輯算術

--ne

not equals 不等

-gtgreat than 大於

-ltless than 小於

expr

類似運算函式,將之後的字串當做表示式處理,完成加減乘除冪模。用法num=`expr $num - 1`

+-*/%^

注意,運算子兩側均要有空格

指令碼命令

-vim

使用vim建立shell指令碼,進入編輯器

:wq儲存vim編寫的指令碼並退出編輯器。首先要按esc進入命令模式,然後輸入:wq

:set number

vim顯示行號

./指令碼.sh

執行shell指令碼,需./指定當前目錄

#!/bin/bash

指定shell直譯器

#單行注釋

:<

多行注釋內容

『』(單引號對)

表示文字,僅僅表示文字

「」(雙引號對)

表示文字,但遇到$(引數替換)與`(反引號,命令替換)會進行替換

=變數賦值,等號左右兩側均不能有空格,否則會把變數名當做命令處理,如num=1

$引數替換符,引用變數,表示某個字串是乙個變數如num2=$num

`命令`

命令替換符(反引號,tab上方),呼叫函式,並將函式返回值輸出給變數(理解為呼叫函式後再tostring())

$(命令)

命令替換符推薦用法,不推薦使用反引號

$#指令碼輸入的引數個數

$1 $2 $n

引用輸入的第1.2.n個引數

|管道符,將前乙個命令的輸出作為後乙個命令的輸入,將命令串起來

sed管道命令,按行為單位處理文字,替換字串等

awk管道命令,根據規則處理文字

grep

管道命令,在指定字串中查詢特定內容

gsub

字串匹配

tee管道命令,讀取標準輸入的資料,並將其內容輸出成檔案

exit

退出指令碼,0正常退出,1異常退出(windows下1正常退出,0異常退出)

export

設定/獲取環境變數

envvmstat

統計作業系統的相關資訊

trap除錯

流程控制語句

# [左右必須有空格,]左側有空格,右側可無

elif [ … ]; then

else

fi

#switch

case

$num

in"1")

;;"2")

;;*) # 別忘了預設

;;esac

#while

while [ $n –gt 0 ]; do

done

#for

for 變數 in 列表; do

done

shell 學習筆記

shell 是解釋型語言 移植性強課對應不同的直譯器 bin sh f 變數開頭以乙個字母或者下劃線,後接任意長度的字母 數字或者下劃線。命令 commod op 引數 輸入 輸出 重定向管道 echo printf 大口如小口出。特殊檔案 dev null bit bucket 刪除所有輸入的資料...

shell學習筆記

shell指令碼在linux下開發經常需要用到,shell的指令碼可以幫助使用者自動化地和作業系統進行互動,起到了提高效率的作用。學習一門語言,通常需要實戰演練編碼除錯,shell該如何除錯呢?使用bash x命令即可。vi demo.sh敲入 bin bash echo 1 echo date y...

shell學習筆記

1 shell檔案的第一行都必須是 bin sh 也可以有其他路徑,這裡我們只以這個為例 2 定義變數 a value 中間不能有空格 呼叫方法 echo a 3 shell常用的條件測試 備註 方括號兩側必須要有空格,f lt等兩側也必須要有空格 a f file 判斷 file是否是乙個檔案 b...