Linux學習(七)——shell簡易編程

7.1、shell簡介

7.1.1、shell是什麼

shell也是一個應用程序,它連接了用戶和Linux內核,讓用戶能夠更高效、安全、低成本地使用Linux內核,這也是shell的本質

shell也是一種腳本編程語言

7.1.2、shell能做什麼

1、連接用戶和內核
2、還能連接其他程序
3、shell還支持編程

7.1.3、shell怎麼樣連接用戶和內核

shell是通過調用內核提供的接口函數,來實現用戶與內核之間的交互

7.2、shell的主要類型

​ 常見的shell有sh、bash、csh、ash、dash等

sh

​ sh是UNIX系統上標準的shell,sh是第一個流行的shell

csh

​ csh的語法有點類似C語言,成爲C shell

ash

​ 一個簡單的輕量級的shell,佔用的資源少

bash

​ bash由GNU組織開發,保持了對sh shell的兼容,也是各種Linux發行版默認的配置的shell

查看shell

​ 當前系統可用的shell都記錄在/etc/shells文件中

cat /etc/shells

​ 查看shell指向哪種解釋器:

ls /bin/sh -l

​ 如何切換sh的指向,指向到bash:

sudo dpkg-reconfigure dash

7.3、shell命令

7.3.1、進入shell的兩種方式

1、進入Linux控制檯

​ ctrl+Alt+Fn(1、2、3。。)

2、使用終端

7.3.2、shell命令的基本格式

​ 命令提示符:

linux@linux-VirtualBox:~$

​ 基本格式:

command [選項][參數]

​ 1、使用選項:ls -l

​ 2、使用參數:參數就是命令的操作對象 ls -l /bin/sh

​ 3、一起使用

7.3.3、shell命令的本質

一個外部的應用程序是如何變成一個shell命令的?

​ shell在啓動文件中增加了一個叫做PATH的環境變量,這個變量保存了shell對外部命令的查找路徑,如果找不到對應的文件名,則直接報錯

​ 查看PATH環境變量的值:

echo $PATH
shell的內置命令本質是一個自帶的函數
shell的外部命令本質是一個應用程序,執行外部命令就是啓動一個應用程序

7.4、shell的特殊字符

7.4.1、通配符

​ *:代表任意長度的字符串 ,例如:ls f *

​ ?:代表任意的單字符

​ []:代表指定的一個字符範圍 ls f[abcd] \ ls f[a-d]

*Text*
[ab-df]*
[ab-dm]?
??

7.4.2、引號

1、單引號

​ 由單引號括起來的字符都作爲普通字符出現,特殊字符被單引號括起來後,失去原有的意義。

echo '$PATH'
$PATH
2、雙引號

​ 雙引號屬於弱引用,雙引號內有命令、變量等,會先把變量、命令解析出來結果,然後輸出最終的結果

echo "$PWD"
/home/linux
3、註釋符
單行註釋:

​ 直接在行的最前端加#即可

多行註釋

​ 1、eof截止符

​ :<<eof 註釋代碼 eof

echo "test"
echo "test"
echo "test"
:<<eof
echo "hello"
echo "hello"
echo "hello"
eof

​ 2、感嘆號

​ :<<!註釋代碼 !

​ 3、逗號

​ : , 註釋代碼 ,

7.5、輸入和輸出

7.5.1、管道

​ 將兩個或者多個命令(程序、進程)連接在一起,把一個命令的輸出作爲下一個命令的輸入

​ Linux下使用 | 連接多個命令,也成爲管道符

command1 | command2 [|command3...]
find ~/ | grep "test"

7.5.2、重定向

改變默認的輸出方式,可以由打印到屏幕改爲寫入文件
ls > test.txt
在輸出重定向中,>表示覆蓋,>> 表示追加
管道和重定向的區別

​ 重定向必須是由文件來接收輸出,而管道可以由命令來接收輸出

​ 不能嘗試:

command1 > command2 [|command3...]

7.6、shell編程

7.6.1、shell基本語法

shell變量

​ 定義:

變量名=value
變量名='value'
變量名="value"
    賦值號周圍不能有空格

​ 使用變量:

​ 只要在變量前加入$即可

​ 刪除變量:

​ unset 變量名

7.6.2、shell程序的控制結構語句

if 條件1 then 如果條件1爲真,則執行
elif 條件2 then 2爲真,則執行
else	1、2、爲假則執行
for 變量名 in 列表
do
	命令
done
while 條件
do
	命令
done

7.6.3、運行shell程序的方式

​ 1、直接執行./test.sh

​ 需要給shell程序用戶的執行權限

chmod u+x test.sh
./test.sh

​ 2、使用 bash test.sh

​ 3、使用 . test.sh

執行方式 是否需要執行權限 是否以新進程運行腳本
./test.sh 需要
bash test.sh
. test.sh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章