Shell語法例子詳細介紹使用01篇

一、Shell簡介(瞭解)

1、什麼是Shell

概念:Shell 既是一種命令語言,也是一個用 C 語言編寫的程序 (命令解釋器->“翻譯官”) 作用:主要提供一個接口使用戶與內核交互操作。 流程:接收用戶輸入的命令並且進行解釋(轉換爲計算機可以理解的機械碼),然 後將命令送入內核去執行 -> 最後將結果返回給用戶。

  • Shell的種類
    含義:不同的命令解析器(程序不斷升級)
    區別:提示符不同、語法不同、展示效果不同等
    常用:sh、csh、ksh、bash等
    sh (Bourne Shell) AT&T Bell實驗室的Steve Bourne開發 最早的
    csh (C Shell) 加州伯克利大學的Bill Joy 更強
    ksh (Korn Shell) AT&T Bell實驗室的David Korn開發 升級
    bash(Bourne Again Shell) 自由軟件基金會(GNU)開發的一個Shell 統一

驗證:不同命令解析器的區別
查看系統支持的shell類型:cat /etc/shells
查看當前使用的shell類型:echo $SHELL

用戶管理命令

#用戶添加(user add) :useradd   [參數]  用戶名(g-指定用戶組,c-備註,s-登錄執行的命令,d-家目錄)
#用戶編輯(user mod):usermod  參數    用戶名(以上四個 + l-改名)
#用戶刪除(user del) :userdel  用戶名

Linux其他發行版本(不同種類的shell效果)
switch user
查看系統支持shell類型

查看當前使用的shell類型

創建test1用戶 -> 查看默認沒有shell -> 設置密碼 -> 登錄測試

解決:讓test1用戶變強(sudo usermod -s /bin/bash test1)

bash功能(內部命令和外部命令)

注意點:
環境變量名詞,效果執行一個命令會去“環境變量”設置的目錄中挨個找該命令的可執行
程序(1-找到了直接執行,2-找不到則報錯)

二、Shell腳本

說明:除了挨個執行命令外,還一個創建一個腳本文件批量處理
創建腳本語法
#!/bin/bash
代碼
執行腳本語法
權 限:chmod a+x 路徑及文件名.sh
方法1: sh 路徑及文件名.sh(推薦)
方法2:/bin/bash 路徑及文件名.sh
方法3: source 路徑及文件名.sh
方法4: . 路徑及文件名.sh
初體驗:創建test腳本輸出hello
#步驟1:創建.sh結尾的文件(ps. 一般都是sh結尾文件,沒有後綴也行)
#步驟2:通過vi命令打開該文件,並在文件頭輸入固定格式【#!/bin/bash】
#步驟3:另一個一樣輸入任意liunx命令即可
#步驟4:保存並退出,然後通過命令運行【sh 文件名.sh

複習

更改擁有者(change own)  : chown -R 擁有者 待更改的文件
更改所屬組(change group): chgrp -R 所屬組 待更改的文件

語法1:chmod -R ABC<用數字表示> 待更改的文件
解釋1:
ABC分別代表(擁有者、所屬組、其他組)
數字表示(1-執行,2-可寫,3-可寫可執行,4-可讀,5-可讀可執行,6-可讀可寫,7可讀可寫可執行)

語法2:chmod -R <±=>,…,<±=> 待更改的文件
解釋2:
augo分別代表(所有用戶,擁有者、所屬組用戶、其他組用戶)
權限範圍:+ 追加、- 移除、= 修改

目錄或文件授權rwx作用

準備:創建測試賬號z並設置密碼
驗證:文件含義
準備:用root賬號創建/test/qx1.php文件並查看其他組用戶權限(藍色)

準備:用root移除其他組所有權限

驗證:文件有r就可以用cat命令,沒有就不行

驗證:文件有w就可以用vi命令,沒有就不行

驗證:目錄含義
a. 準備:用root賬號創建/test/qx2目錄並查看其他組用戶權限(藍色)

b.準備:用root移除其他組所有權限

c.驗證:目錄有x就可以用cd命令,沒有就不行

d.驗證:目錄有r就可以用ls命令,沒有就不行

f.驗證:目錄有w就可以用touch命令,沒有就不行

三、Shell變量

  • 1、分類
    本地變量
    環境變量
    局部變量
    位置變量
    特殊變量
  • 本地變量
    概念:只對當前shell進程有效(ps. 對當前進程的子進程和其它shell進程無效)
    語法
    設置:變量名=變量值(等號不能有空格)
    刪除:unset 變量名
    輸出:echo $變量名
    練習:創建VAR_T1=itcast -> 輸出 -> 刪除 -> 輸出
  • 環境變量(☆)
    概念:對當前shell進程和子進程有效,其他shell進程無效
    語法
    設置:export 變量名=變量值
    其他:對所有shell進程都生效
vi /etc/profile
source /etc/profile   #讓新建立的環境變量立刻生效無需重新啓動系統

練習:創建VAR_T2=itcast2 -> 輸出測試

  • 局部變量
    概念:函數調用時創建、調用完畢時銷燬
    語法:local 變量名=變量值
    練習:創建a方法輸出局部變量VARTEST=123
  • 位置變量
    概念:指程序運行時動態傳入參數
    語法
    傳參1:sh 路徑及文件名.sh 參數1 … 參數n
    輸出1:echo $1 / … / echo $n
  • 特殊變量
$0           當前腳本的文件名
$n           傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是$1,第二個參數是$2。
$#          傳遞給腳本或函數的參數個數。
$*          傳遞給腳本或函數的所有參數。
$@          傳遞給腳本或函數的所有參數。被雙引號(" ")包含時,與 $* 稍有不同,下面將會講到。
$?         上個命令的退出狀態,或函數的返回值。
$$         當前Shell進程ID。對於 Shell 腳本,就是這些腳本所在的進程ID。

應用場景
$n 根據傳遞的參數安裝指定軟件
$$ 腳本執行時輸出進程編號便於卡死時結束進程(注:sleep 秒數)

今天我們暫時就講到這裏,下一篇再見

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