>[success] # shell -- 執行
~~~
1.將 Shell 腳本作為程序運行
2.將 Shell 腳本作為參數傳遞給 Bash 解釋器 、sh
3.將 Shell 腳本使用source 執行
4.將Shell 腳本放入$PATH 中執行
~~~
>[danger] ##### 執行前知道事
~~~
1.當執行node 程序的時候,我們一般在控制臺執行的命令是'node 文件名'
2.Shell 既是一種腳本編程語言,也是一個連接內核和用戶的軟件。常見的 Shell 有 sh、bash、
csh、tcsh、ash 等
3.我們使用的shell 版本為bash。因此也可以'bash shell腳本文件'
4.shell 文件結尾最好是'.sh'
~~~
>[danger] ##### 編寫一個shell 格式文件
~~~
#!/bin/bash
echo "Hello World !" #這是一條語句
~~~
~~~
1.第 1 行的'#!'是一個約定的標記,它告訴系統這個腳本需要什么解釋器來執行,即使用哪一種
Shell;后面的'/bin/bash'就是指明了解釋器的具體位置,如果寫成'/bin/node' 則是使用bin文件
下node 解釋器來解釋,后面當然也可以是python等一類的其他語言
2.第一行的#!/bin/bash一定要寫對,好讓系統查找到正確的解釋器
3.'#'及其后面的內容是注釋。Shell 腳本中所有以'#'開頭的都是注釋(當然以`#!`開頭的除外)
~~~
>[danger] ##### Shell 腳本作為程序運行
~~~
1.在沒做特殊設置的情況下一般創建的文件最高權限'644' 沒有可執行權限,也就是當我們創建
一個腳本文件,想要他可以直接執行需要'chmod +x 文件' 增加執行權限
2.當文件具有可執行權限的時候,執行腳本需要全路徑,舉個例子'/root/test.sh',如果現在非root
目錄下想執行需要'/root/test.sh',當如果在'root' 目錄下則需要'./test.sh'如果不寫`./`會到系統路徑
(由 PATH 環境變量指定)下查找 'test.sh',而系統路徑下顯然不存在這個腳本,所以會執行失敗
~~~
* 如圖

>[danger] ##### Shell 腳本作為參數傳遞給 Bash 解釋器、sh
~~~
1.如果當前文件沒有給予可執行權限,并且他是一個bash腳本,那么可以像運行node 程序那種
'bash 文件名' / 'sh 文件名'
~~~
* 如圖

>[danger] ##### Shell 腳本使用source 執行
~~~
1.source 是 Shell 內置命令的一種,它會讀取腳本文件中的代碼,并依次執行所有語句。
你也可以理解為,source 命令會強制執行腳本文件中的全部命令,而忽略腳本文件的權限,
并且他是一個bash腳本'source 文件名'
~~~
* 如圖

>[danger] ##### Shell 腳本放入$PATH 中執行
~~~
1.執行$PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
2.如果腳本文件在這些文件中并且'具備執行權限'就可以直接 '文件名調用'
3.簡單的說如果想把一個自定義的腳本直接可以執行,或者把這個文件拷貝到目標目錄下,
或者把腳本所在目錄添加到環境變量中的PATH路徑中
4.給$PATH 增加新的地址(關于export 可參考變量作用域章節)
export PATH="$PATH":/root/shells
~~~
* 如圖

>[info] ## 參考
[# 執行Shell腳本(多種方法)](http://www.beylze.cn/shell/698.html)
- 安裝-VMware 虛擬機
- 遠程連接
- Windows -- wsl
- Linux -- 認識 Linux 和操作系統
- Linux -- Linux 和 windows 對比
- Linux -- 命令提示符
- Linux -- 文件目錄
- Linux -- 文件類型
- Linux -- 絕對和相對路徑
- Linux -- 常用快捷鍵
- Linux -- 三種幫助命令
- 幫助命令 -- man
- 幫助命令 -- help
- 幫助命令 -- info
- Linux -- 指令
- alias -- 設置別名
- history -- 查看歷史命令
- cd -- 更改目錄(切換文件夾)
- pwd -- 打印目錄
- ls -- 列出文件內容
- mkdir -- 創建文件夾
- rmdir -- 刪除一個空的目錄
- touch -- 創建普通文件/修改時間
- cp -- 復制粘貼
- mv -- 移動和重名
- rm -- 刪除
- cat/tac -- 查看純文本文件
- more/less -- 分頁讀取信息
- head -- 從文本開頭查看
- tail -- 從文本結尾查看
- cut -- 提取片段
- sort -- 排序
- uniq -- 去重
- wc -- 統計文件的行數、單詞、字節數
- tr -- 替換、縮減或刪除字符
- find -- 文件查找
- grep -- 文件當中匹配字符
- 管道 -- |
- locate -- 第三方文件查找
- whereis -- 查找二進制/源代碼文件 路徑
- which -- 查找環境變量
- 壓縮和解壓
- ln -- 鏈接
- wget -- 下載指定的url資源
- 重定向 -- << /< />/> >
- 邏輯控制 -- &&
- echo -- 輸出指定內容
- date/cal -- 查看日期和日歷
- Linux -- 進程管理
- Linux-- ps 指令
- vi/vim - 文本編輯器
- 更多
- Linux-- 開關機命令
- Liunx -- 退出登錄
- Linux-- 查看登錄用戶信息
- Linux -- 環境變量
- Linux -- 用戶
- Linux -- 文件管理
- 文件權限設置 -- chmod
- 更改文件的擁有者 -- chown
- 默認權限 -- umask
- Linux -- 用戶
- 新建/刪除用戶 -- useradd/userdel
- 修改用戶屬性 -- usermod/chage
- 新建/刪除用戶組 -- groupadd/groupdel
- 用戶切換 -- su/sudo
- 用戶/用戶組的配置文件
- 用戶家目錄被刪除解決
- last、 lastlog命令查看用戶詳細的登錄信息
- Linux -- shell
- Linux -- 管道符號
- shell -- 執行
- shell -- 變量
- shell -- 字符串
- shell -- 數組
- Shell -- declare 設置變量屬性
- shell -- 數學計算
- shell -- 變量作用域
- shell -- 位置參數變量
- shell -- read
- shell - if 語句
- shell -- test
- shell -- case
- Linux -- 循環
- Linux -- 軟件包管理