shell是一個命令解析器,是當前進程的父進程;
1、查看當前linux系統支持的shell類型:
cat /etc/shells
2、查看當前使用的shell
echo $SHELL
直接輸入sh
則從當前的bash進入到sh解析器裏了。
此時ls 查看發現與bash 中使用ls查看的區別是顏色不同;
此時輸入命令後,無法雙擊tab補齊命令。
小結:不同的shell類似於不同的瀏覽器,解析後,呈現略有不同。
bash相較sh,類似於vim相較vi,功能更強大一些。寫shell腳本二者的區別可以忽略。
3、腳本,我們一般會用後綴.sh 加以區分。
4、第一行是選擇使用哪種shell,即上述中的一種shell,,指定解析器。
#! /bin/sh-------------------->!後面有空格,sh和bash 不用刻意強調,二者區別不大。
4、# ---------------->用來註釋
5、echo "helloworld" ---------->打印字符串
6、echo ---------------->後面什麼不沒有,,打印一個空行,等價於 echo ""
7、執行ls命令
/bin/ls------>列出的文件沒有標註顏色;
ls--------->列出的文件會有顏色區分;
問題是 輸入 :alias會看到:ls 是有別名的;
8、vim file ------------>file默認都是沒有可執行權限的
chmod a+x file -------->以下三類都添加可執行權限
chmod u+x file -------->僅用戶添加可執行權限
chmod g+x file ------>用戶組添加可執行權限
chmod o+x file--------->其他組添加可執行權限
加號 換成減號,就是去掉對應的權限;
9、腳本程序的執行方法:
方法0)加 #! /bin/sh ---->chmod a+x --->./file.sh
方法1)不指定解析器,即不要這句 #! /bin/sh 也是可行的,會自動調用默認的解析器;(需要 chmod a+x)
方法2)/bin/bash file.sh ------>此時都不需要file.sh 有x 可執行權限;
也可以使用 /bin/sh file.sh --->效果同上;
方法3). file.sh ------------------->最簡單。。。。----------->不需要有可執行權限
方法4)source file.sh --------------------->不需要有可執行權限
10、命令分爲:
一種是常見的普通命令:如 ls, pwd,即如果export PATH= 將PATH置空,ls解析不到了。
另一種是內建命令:man bash-builtins 查看所有的內建命令---->內建命令不需要bash解析也能執行。
如 cd alias 等。
11、小括號的應用;
cd ..;ls -l 目錄變化
(cd ..;ls -l)工作目錄沒有變化