天天看點

linux核心 執行shell指令,Linux學習筆記3-Shell學習

1、Shell概述

1.1、Shell是一個指令解釋器,解釋使用者輸入的指令,讓Linux核心了解并執行使用者指令,同時将Linux核心執行的結果進行翻譯顯示通知給使用者。

linux核心 執行shell指令,Linux學習筆記3-Shell學習

作業系統體系結構.jpg

1.2、Shell分類

1、Bourne Shell,1979(sh,ksh,Bash,psh,zsh)

2、C Shell,Unix中使用的Shell(csh,tcsh)

3、查詢目前使用的Shell版本,通過查詢變量獲得

echo $SHELL

4、檢視支援的Shell版本

cat /etc/shells

5、Shell版本切換,直接輸入:版本名+enter 進入,輸入:exit 退回

2、腳本執行方式

2.1、echo輸出指令

echo [選項] [輸出内容]

選項:

-e 識别輸出内容中的轉義字元\b \t \x \e。。。。

2.2、hello word腳本,其中可以調用系統指令

vim hello.sh

#!/bin/bash

#The first program

echo -e "\e[1;34m hello word \e[0m"

執行方式

1、chmod 755 hello.sh (修改權限)+ ./hello.sh或者/home/hello.sh (執行)

2、bash hello.sh (直接執行)

3、Bash的基本功能

3.1、指令的別名

1、檢視已有別名 alias

2、定義別名

臨時生效:alias ls='ls --color=never'

永久生效:在用戶家目錄內的.bashrc檔案中添加別名定義語句

3、刪除別名 unalias 別名

3.2、指令生效順序

1、執行絕對路徑和相對路徑執行指令

2、執行別名

3、執行bash的內部指令

4、執行按照$PATH環境變量定義的目錄查找順序找到的第一個指令

3.3、快捷鍵

ctrl+c 強制終止

ctrl+l 清屏 clear

ctrl+u 删除光标位置到行首

ctrl+a 到行首

ctrl+e 到行尾

ctrl+z 将指令放到背景

ctrl+r 在曆史指令中搜尋

3.4、曆史指令

1、history [選項] [曆史指令儲存檔案,在家目錄下的.bash_history]

選項:

-c 清空曆史指令

-w 把緩沖中指令寫入儲存檔案\

2、預設保留1000條,可以通過/etc/profile中設定

3、!n重複執行第n條指令

4、!!重複執行上一條指令

5、!字元 重複執行上一次以字元開頭的指令

6、上下鍵傳回

3.5、輸出重定向

1、标準輸入輸出

|裝置~|裝置檔案名~ |檔案描述符|

|鍵盤~|/dev/stdin |0|

|顯示器|/dev/stdout|1|

|顯示器|/dev/stderr|2|

2、格式

指令>檔案 (以覆寫形式)

指令>>檔案 (以追加形式)

3、儲存報錯資訊

指令 2>檔案 (以覆寫形式)

指令 2>>檔案 (以追加形式)

4、正确輸出和錯誤輸出同時儲存

指令>檔案 2>&1

指令>>檔案 2>&1(***)

指令 &>檔案

指令 &>>檔案(*****)

指令>>檔案1 2>>檔案2(****)

3.6、輸入重定向

1、wc [選項] [檔案名] //統計輸入内容

選項:

-c 統計位元組數

-w 統計單詞數

-l 統計行

2、wc < 檔案名 ,統計檔案内容

3、wc<

3.7、管道符

1、多指令順序執行

cmd1;cmd2 順序執行,無論是否出錯

cmd1&&cmd2

cmd1||cmd2

指令1 && 指令2 || 指令3——ls && echo yes || echo no

2、管道符,多指令順序執行

指令1 | 指令2 //指令1的輸出結果作為指令2的操作對象

netstat -an | grep ESTABLISHED | wc -l

3.8、通配符,主要用于比對檔案名或者目錄,檔案内容一般采用正規表達式

?比對任意一個字元

*比對任意一個或多個字元

[]比對中括号内的任意一個字元

[-]比對中括号内的任意一個字元,-代表範圍[0-9]

[^]比對中括号内的任意一個字元,^代表邏輯非

linux核心 執行shell指令,Linux學習筆記3-Shell學習

bash中其他的特殊符号.jpg

3、reference