shell編程及小命令

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

(0)
458813466458813466
上一篇 2016-08-12 09:01
下一篇 2016-08-12 09:01

相關推薦

  • 基于heartbeat v1+ldirectord實現LVS集群高可用

    前言 高可用集群,High Availability Cluster,簡稱HA Cluster,是指以減少服務中斷時間為目的的服務器集群技術。通過上文可以看出,LVS集群本身并不能實現高可用,比如Director Server不能檢測Real Server的健康度,一旦其中一臺或全部Real Server宕機,Director Server還會繼續轉發請求,…

    Linux干貨 2015-06-08
  • CentOS6.7上編譯安裝Apache2.2和Apache2.4

    centos6.7上如何編譯安裝Apache2.2和Apache2.4

    Linux干貨 2016-05-29
  • Linux命令幫助文檔的使用及簡單命令使用-2016-7-25

    Linux命令幫助文檔的使用   相關命令 whatis    COMMAND –help    man and info 本地幫助文檔/usr/share/doc   在使用系統內建的幫助文檔之前,我們需要了解需要命令幫助是否是內部命令和外部命令…

    Linux干貨 2016-08-04
  • 馬哥教育網絡班21期+第13周課程練習

    1、建立samba共享,共享目錄為/data,要求:(描述完整的過程)   1)共享名為shared,工作組為magedu;   2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為用戶名;   3)添加s…

    Linux干貨 2016-08-24
  • iptables——linux下的防火墻

    iptables Firewall:隔離工具 Packets Filter Firewall;工作于主機或網絡的邊緣,對經由的報文根據預先定義的規則(匹配條件)進行檢測,對于能夠被規則匹配到的報文實行某預定義的處理機制的一套組件          硬件防火墻:在硬件級別實現部分功…

    Linux干貨 2016-10-22
  • N25-第8周博客作業

    第八周 1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態; 在線的主機使用綠色顯示; 不在線的主使用紅色顯示; #!/bin/bash # ip=172.16.250. for i in {1..254}; do if ping -w 1 -c 1 $ip$i &> /dev/n…

    Linux干貨 2017-03-10
欧美性久久久久