Shel
l程序,通常爲/bin/bash
不一樣Shell的內部指令、運行環境等會有所區別mysql
[root@localhost ~]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin ......
vi
文本編輯器Linux
命令,按執行順序依次編寫[root@localhost ~]# vim first.sh cd /boot/ pwd ls -lh vml*
[root@localhost ~]# chmod +x first.sh
方法一:腳本文件路徑(絕對路徑與相對路徑)sql
[root@localhost ~]# ./first.sh //必須擁有x(執行)權限,執行文件,但不會改變所在路徑
方法二:sh腳本文件路徑shell
[root@localhost ~]# sh /first.sh //執行文件,但不會改變所在路徑
方法三:source腳本文件路徑vim
[root@localhost ~]# source /first.sh
方法四:. 腳本文件路徑bash
[root@localhost ~]# . /first.sh
[root@localhost ~]# vim /first.sh #!/bin/bash # This is my first Shell-Script. cd /boot echo "當前的目錄位於:」 //輸出友好提示信息 pwd echo "其中以vmI開頭的文件包括:" Is -Ih vml*
類型 | 設備文件 | 文件描述編號 | 默認設備 |
---|---|---|---|
標準輸入 | /dev/stdin |
0 |
鍵盤 |
標準輸出 | /dev/stdout |
1 |
顯示器 |
標準錯誤 | /dev/stderr |
2 |
顯示器 |
類型 | 操做符 | 用途 |
---|---|---|
重定向輸入 | < | 從指定的文件讀取數據,而不是從鍵盤輸入 |
重定向輸出 | > | 將輸出結果保存到指定的文件(覆蓋原有內容) |
>> | 將輸出結果追加到指定的文件 | |
標準錯誤輸出 | 2> | 將錯誤信息保存到指定的文件(覆蓋原有內容) |
2>> | 將錯誤信息追加到指定的文件中 | |
混合輸出 | &> | 將標準輸出、標準錯誤的內容保存到同一個文件中 |
「|」
將左側的命令輸出結果,做爲右側命令的處理對象運維
cmd1 | cmd2 [...| camdn]
[root@locadhost ~]# grep "bash$" /etc/passwd root:x:0:0:root:/root:/bin/bash Teacher:/home/teacher:/bin/bash [root@localhost ~]# grep「bash$」letc/passwd I awk -F: '{print $1,$7}' root /bin/bash teacher /bin/bash
爲靈活管理Linux
系統提供特定參數,有兩層意思編輯器
變量名:使用固定的名稱,由系統預設或用戶定義ide
Bash
中內置的一類變量,不能直接修改 變量名=變量值
echo $變量名
[root@locadhost ~]# Product=Python [root@locadhost ~]# Version=2.7.13 [root@locadhost ~]# ehco $Product Python [root@locadhost ~]# ehco $Product $Version Python 2.7.13
$
符號引用其餘變量值$
視爲普通字符read [-p "提示信息"] 變量名
格式1:export 變量名 ... 格式2:export 變量名=變量值 ...
[root@locadhost ~]# echo "$Producvt $Version" Python 2.7.13 [root@locadhost ~]# export Product Version [root@locadhost ~]# bash [root@locadhost ~]# echo "$Product $Version" Python 2.7.13
expr 變量1 運算符 變量2 [運算符 變量3]...
+
-
\*
/
%
[root@localhost ~]# vim demo02.sh #!/bin/bash read -p "請輸入一個整數:" a read -p "請輸入另外一個整數:" b c=`expr $a + $b` echo "兩個整數之和爲:$c" [root@localhost ~]# chmod +x demo02.sh [root@localhost ~]# ./demo02.sh 請輸入一個整數:12 請輸入另外一個整數:13 兩個整數之和爲:25
/etc/profile
、 ~/.bash_ profile
[root@localhost ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin:/root/bin [root@localhost ~]# PATH="$PATH:/root" [root@localhost ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin:/root/bin:/root
[root@localhost ~]# ./myprog.sh one two three four five six //$1,第1個位置參數爲one,$2,第2個位置參數爲two
[root@localhost ~]# vim mybak.sh #!/bin/bash TARFILE=beifen-'date +%s .tgz tar zcf $TARFILE $* &> /dev/null echo "已執行$0腳本,「 echo「共完成$#個對象的備份」 echo」具體內容包括: $*」 [root@localhost ~]# chmod +x mybak.sh [root@localhost ~]# ./mybak.sh /etc/passwd /etc/shadow 已執行./mybak.sh腳本, 共完成2個對象的備份 具體包括:/etc/passwd /etc/shadow