Linux 常用命令
ls -F:目錄會顯示/
[root@milab ~]# ls -iFl總用量 12 69199780 -rw-------. 1 root root 1496 6月 8 2016 anaconda-ks.cfg 77471938 drwxr-xr-x. 2 root root 6 9月 18 21:49 svntest/ 74325841 -rw-r--r--. 1 root root 7 5月 31 20:03 wer 1455733 drwxr-xr-x. 2 root root 6 6月 8 2016 公用/103304633 drwxr-xr-x. 2 root root 6 6月 8 2016 模板/ 1455734 drwxr-xr-x. 2 root root 6 6月 8 2016 視頻/103304634 drwxr-xr-x. 2 root root 4096 9月 30 2016 圖片/ 35680426 drwxr-xr-x. 2 root root 6 6月 8 2016 文檔/ 71066179 drwxr-xr-x. 2 root root 6 6月 8 2016 下載/ 71066180 drwxr-xr-x. 2 root root 6 6月 8 2016 音樂/ 35680425 drwxr-xr-x. 2 root root 41 9月 1 2016 案頭/
[root@milab ~]# cat test.sh #/bin/bashecho "input a:"read a echo "input b:"read b result=$[ $a + $b ]echo "result:"$result
逐行查看
set | more
shell 中單引號 列印所有字元,雙引號 可列印變數
[root@milab ~]# set |grep HISTHISTCONTROL=ignoredupsHISTFILE=/root/.bash_historyHISTFILESIZE=1000HISTSIZE=1000
PS1 定製命令提示字元的樣式
PS1=[root@milab ~ 21:23:12]# PS1='[\u@\h \w \t]\$ 'PS1=[root@milab ~ 21:23:23]# cd /PS1=[root@milab / 21:23:28]# cd /usr/src/PS1=[root@milab /usr/src 21:23:38]#
自訂變數只能在目前使用者的當前shell中生效 想升級當前shell生效需要 export ,永久生效需修改profile
echo "PS1='[\u@\h \t \w]\$ '">>/etc/profilesource /etc/profile
[root@milab 22:03:20 /]# ls -l /dev/std*lrwxrwxrwx. 1 root root 15 10月 21 20:46 /dev/stderr -> /proc/self/fd/2 //2> 錯誤輸出lrwxrwxrwx. 1 root root 15 10月 21 20:46 /dev/stdin -> /proc/self/fd/0//1> 正確輸出lrwxrwxrwx. 1 root root 15 10月 21 20:46 /dev/stdout -> /proc/self/fd/1
[root@milab 22:08:22 ~]# ccc 2>err //[root@milab 22:08:38 ~]# cat err bash: ccc: 未找到命令...相似命令是: 'cc'[root@milab 22:08:42 ~]# bbb 2>>err[root@milab 22:08:54 ~]# cat errbash: ccc: 未找到命令...相似命令是: 'cc'bash: bbb: 未找到命令...
[root@milab 22:10:49 ~]# ls test.sh 1>suc[root@milab 22:10:54 ~]# cat suc test.sh
[root@milab 22:14:41 /usr/src]# find /usr/src/ 123 1>suc 2>err[root@milab 22:15:08 /usr/src]# cat suc/usr/src//usr/src/debug/usr/src/kernels/usr/src/suc/usr/src/err[root@milab 22:15:11 /usr/src]# cat err find: ‘123’: 沒有那個檔案或目錄[root@milab 22:15:17 /usr/src]# find /usr/src/ 123 >all 2>&1[root@milab 22:15:47 /usr/src]# cat all /usr/src//usr/src/debug/usr/src/kernels/usr/src/suc/usr/src/err/usr/src/allfind: ‘123’: 沒有那個檔案或目錄[root@milab 22:15:50 /usr/src]# find /usr/src/ 123 &>all1[root@milab 22:16:42 /usr/src]# cat all1/usr/src//usr/src/debug/usr/src/kernels/usr/src/suc/usr/src/err/usr/src/all/usr/src/all1find: ‘123’: 沒有那個檔案或目錄
[root@milab 22:34:20 /bin]# expr length "12345678"8
字串匹配
[root@milab 22:37:51 /bin]# str="abcdefffff"[root@milab 22:40:36 /bin]# echo $sr [root@milab 22:40:44 /bin]# echo $strabcdefffff[root@milab 22:40:47 /bin]# expr substr "$str" deexpr: 語法錯誤[root@milab 22:41:07 /bin]# expr substr "$str" 3expr: 語法錯誤[root@milab 22:41:25 /bin]# expr substr "$str" 3 5cdeff[root@milab 22:41:36 /bin]# str="abcdefffff"[root@milab 22:41:42 /bin]# expr substr "$str" 3 5cdeff[root@milab 22:41:44 /bin]# expr $str: cdeffexpr: 語法錯誤[root@milab 22:43:09 /bin]# expr $str :cdeffexpr: 語法錯誤[root@milab 22:43:18 /bin]# expr $str : cdeff0[root@milab 22:43:20 /bin]# expr $str : '.*'// 單引號中Regex10
[root@milab 22:47:23 /bin]# n1=10[root@milab 22:49:19 /bin]# n2=11[root@milab 22:49:24 /bin]# n3=10[root@milab 22:49:27 /bin]# expr $n1 < $n2bash: 11: 沒有那個檔案或目錄[root@milab 22:49:43 /bin]# expr $n1 \< $n21[root@milab 22:49:48 /bin]# expr $n1 \= $n20[root@milab 22:49:53 /bin]# expr $n1 \= $n31[root@milab 22:49:56 /bin]# expr $n1 == $n31[root@milab 22:50:00 /bin]# expr $n1 == 101[root@milab 22:50:47 /bin]# re=$[ $n1 == 10][root@milab 22:51:21 /bin]# echo $re1[root@milab 22:51:27 /bin]# re=$[ $n1 = 10]bash: 10 = 10: 嘗試給非變數賦值 (錯誤符號是 "= 10")[root@milab 22:51:37 /bin]#
bc命令(實現浮點數計算)
[root@milab 22:52:59 /bin]# bcbc 1.06.95Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.This is free software with ABSOLUTELY NO WARRANTY.For details type `warranty'. 1*221.1*5.555556.11110 100/333scale=5100/333.33333quit
[root@milab 23:03:03 /bin]# resule=`bc<<EOFscale=4a1 = $v1 * $v2b1 = $v3 * $v1a1+b1EOF`[root@milab 23:03:27 /bin]# echo $bc [root@milab 23:03:38 /bin]# echo $resule6.16
函數使用
function fun1(){ echo "function1" }fun2(){ echo "function2"}fun1fun2
函數傳回值
echo "$?" 0 為正確執行,否則出錯
函數退出狀態代碼
[root@milab 23:15:32 ~]# cat test.sh #/bin/bashfunction fun1{ echo "function1" return 10}fun2(){ echo "function2" return 20}fun1echo "$?" fun2echo "$?"value=`fun2`echo $value #輸出fun2的文本 function2[root@milab 23:15:41 ~]# ./test.sh function110function220function2
函數參數的處理: $# 參數個數; $1 第一個參數 $2 第二個參數
[root@milab 23:23:07 ~]# cat test2.sh #!/bin/bash add(){ if [ $# -eq 2 ];then result=$[ $1 + $2] echo $result else echo "please input 2 parame" return 1 fi} value=`add $1 $2`if [ $? -eq 0 ];then echo $valueelse echo "ERR:$value"fi[root@milab 23:23:23 ~]# ./test2.sh 1ERR:please input 2 parame[root@milab 23:23:29 ~]# ./test2.sh 1 23[root@milab 23:23:31 ~]#
引用函數庫
source 檔案路徑 或者 . 檔案路徑 或者在指令碼中加入。
shell 的風格,用倒序的字母單詞和 正序的單詞配對。
比如 if 語句, 結束時用 fi 來配對
esac是和case配對的,是多路分支的語句