1. ping 10.1.252.25d2 -c1 -w1 &> /dev/null && echo "The host is up" || echo "The host is down"
2. 在vim命令中, p或則P可以實現復制。
p: 復制到下一行
P: 復制到上一行
3. echo 如何不自動轉行?
echo -n "xxxxx"
echo -e"xxxxxxx\c"
4. echo -e 選項可以實現字體顏色。
5. uname -m // 硬件平臺架構
X86表示CPU指令集方式
64位表示64位操作系統
6. bash -n 腳本 // 可用來調試腳本,檢測腳本中的語法結構, 只是檢測語法結構, 具體命令不檢查。
bash -x 腳本 // 調試執行腳本
7. PATH的全局配置文件,/etc/profile中, 對所有用戶都生效。
每個用戶都有自己的配置文件~/.profile, 這種文件只對當前系統有效。
8. 在運行窗口或則是dos窗口下, 輸入calc可打開計算機功能。
9. Windows尋找命令的話,是先找當前目錄下, 有沒有這個命令, 再去path變量下找。
Linux下則不是這樣, 不會在當前目錄下找, 直接就在path變量下找。
10. 命令的優先級:
別名<內部命令<hash<外部命令
11. 在運行窗口或則是dos界面下, 輸入notepad可以打開記事本。
12. set 命令可以查看系統所有的變量, 包括你自己定義的變量。
unset 命令 可以撤銷變量。
echo $A 輸出一個沒有變量的話, 這樣系統會創建這個變量, 但是這個變量為空。
13. 編程語言不僅可分為面向對象和面向過程, 還可以分為強類型和弱類型
強類型:定義變量時必須指定類型、參與運算必須符合類型要求,調用未申明變量會產生錯誤。
弱類型: 無需指定類型, 默認均為字符型; 參與運算會自動進行隱式類型轉化,變量無需事先定義可直接使用。
14. 命名規則: 駝峰原則 小駝峰(首字母小寫) 大駝峰(首字母大寫)
15.在系統中如果自己定義的變量使用完之后, 盡量通過unset釋放這個變量。如果這個變量自己無法釋放的話,會占用內存空間。
理論上, 一個shell執行完之后, shell腳本中的變量空間會被釋放。 則bash中是無法使用的。
16. sleep # // 睡眠#秒
17. pstree tree 兩個命令都是以樹型結果顯示, pstree 以樹形結構顯示進程
tree 則以樹形結果顯示系統文件結構。
18. `命令` 和 $(命令) 效果是一樣的。
19. 引用變量的時候, 可以使用$變量名 $(變量名)
比如當$10 想要引用第10個參數的時候, 必須使用$(10)
$(10)
$10 == ($1)0
20. 內存 free cat /proc/meminfo
磁盤 cat /proc/partitions fdisk -l lsblk
cpu lscpu
21. grep 引用擴展正則表達式時需要使用-E參數, 而sed使用擴展正則表達式的話, 使用-r選項。
22. sort的使用, 當sort后面不加參數的話,表示以先按名字首字母ANSCII碼排序,首字母一樣的話,再按下一個字母的ANSCII碼排序。
-n 參數 // 將整個字符串看成整體, 以小到大排序。
23. uniq命令用來查看重復的記錄。
uniq -c // 用來查看所有的重復記錄
uniq -c與sort排序一起搭配使用:
sort | uniq -c
24. export 變量名
declare -x 變量名
// 不僅可以定義變量,還可以將原有的局部變量轉化為壞境變量。
25. export 和 env 都是可以查看壞境變量的。
26.cp命令:
cp 單文件 目錄
cp 多個文件 目錄
cp -r 目錄 文件 ERROR
cp -r 目錄 目錄 RIGHT // 這種方式是將整個目錄都拷貝到目錄下
cp -a 目錄 目錄 === cp -r 目錄/* 目錄 // 將目錄下的文件拷貝到目錄下,而不是將整個目錄拷貝過去
27. 在shell編程中, 常量又被稱為只讀變量。
如何定義常量、只讀變量:
readonly 變量名=變量值
declare -r 變量名=變量值
28. $* $@ 表示全部的參數。 而$*是將所有的參數都整合為一個字符串,而$@所有的參數任是獨立的個體
文件 test1.sh
#!/bin/bash
#
/root/shell/f1.sh "$*" // 必須用""雙引號括起來
echo "———————"
/root/shell/f1.sh "$@" // 必須用""括起來
文件f1.sh
#!/bin/bash
#
echo "1:$1"
echo "2:$2"
echo "3:$3"
echo "4:$#"
echo "5:$*"
echo "6:$@"
結果:
[root@centos6 shell]# ./test1.sh 1 2 3 4
1:1
2:2
3:3
4:4
5:1 2 3 4
6:1 2 3 4
———————
1:1
2:2
3:3
4:4
5:1 2 3 4
6:1 2 3 4
29. basename $0 會自動讀取可執行文件名
30. 使用sed編輯的文檔是不可以直接重定向到> >>本身編輯的文檔, 這樣操作的結果很嚴重, 文件馬上變空了。
31. shell 編程中, 運算的幾種方法:
1>. let 運算表達式
2>. 變量=$[運算表達式]
3>. ((運算表達式)) // 支持C語言的表達式
4>. expr 使用命令進行運算
expr 符號1 運算符 符號2
* 需要轉譯
5>. 申明變量為整形, declare -i 變量名
該變量在bash中可以直接運算。
6>. bc(計算器支持標準的輸入)
標準輸入 | bc 將結算結果賦給變量值
比如:
[root@centos6 shell]# echo `seq 1 100 | tr "\n" "+" | sed -r 's@(.*)\+$@\1@'` |bc
5050
32. 產生隨機數:
在Linux系統下面, 有一個RANDOM變量, 這個變量不是壞境變量, 是個局部變量。每輸出一次這個這個變量, 這個變量就會變一次。
echo $[$RANDOM%80] 對80求余,得到的是0–79
33. a++: 先引用再遞增
++a: 先遞增后引用
a=2 a++ 本身是2 ++a 則本身是3 這就是兩者的區別
34. 短路與&& 短路或||
實現條件判斷的方式: 1>. && ||
2>. if
3>. case
35. 聚集命令, 幾個命令用 ; (分號)隔開。
36.在每條執行的命令都有一個返回的結果, 0表示命令執行結果, 1-255表示執行失敗。
37. 在shell編程中, 可以自己定義返回的結果, 根據返回的不同結果做不同的操作。
38. 在linux系統,ping 命令一旦執行, 會一直執行下去。
—W timeout 延遲 等待時間, 一旦在指定時間內, 對方沒有回應, 表示ping 不同
-c count 表示我要ping的次數。
Windows系統系ping命令:
ping x.x.x.x -t 不停的ping
ping -n 10 x.x.x.x ping10次
39. $? 只會保留最后一次命令的執行結果。
40. 測試命令:
test …
[] 兩邊必須有空格
[[]] 兩邊必須有空格
41. true false 其實是bash中的指令, true返回1 , false返回0, 這兩個命令在死循環中非常有用。
42. grep -q === grep "xxx" file &> /dev/null
43.測試類型:
1>. 數字測試: // 注意這些前面必須是有-的。
-gt : 是否大于
-ge :
2>. 字符串測試:
3>. 文件測試
4>. 組合測試:
第一種方式: || && !
第二種方式: -a(并且) -o(或則) !
-a and -o or
44. 用 == != 兩邊盡量要用空格
45. 判斷一個字符串變量為空的話, [ -n $A ] 是不行的, 但是[[ -n $A ]]是可以的。
[[]] 更具有通用性。 []有時候是不能使用的。
46. test xxx 或則 [] 或則 [[ ]]表示的都是就是一個結果, 根據這個我們去做相對應的操作。
47. 當我們只是記得一些文件信息, 而忘了是哪個文件的時候, 我們可以使用grep正則表達式來尋找配置文件
比如: grep -R "^root.*" /etc/
50. 自己默認創建系統用戶的時候,默認是可以登錄的。 其實還是/etc/default/userdd文件
51. 只要在/etc/文件夾下創建nologin文件的話, 非root用戶是不可以登錄的。 通過su命令的話, 通過su到這些普通用戶的。
52. read 命令, 編寫腳本, 可以啟動和用戶更好的交互功能。
[root@centos6 ~]# read -p "please input your name:" name
please input your name:meng
[root@centos6 ~]# echo $name
meng
read 變量
read -p "提示信息" 變量
原創文章,作者:458813466,如若轉載,請注明出處:http://www.www58058.com/33406