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
下一篇 2016-08-12

相關推薦

  • 正則表達式

    1、用正則表達式表示IP地址 擴展正表達式表示的: (\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\> 2、用正則表達式表示手機號 "^1[3578…

    Linux干貨 2016-08-07
  • 文件通配符是啥?

    文件通配符     包含 ‘?’, ‘*’ 或 ‘[‘ 字符的字符串稱為通配符模板(wildcard  pattern).形成路徑名(globbing)指一種操作,把通配符模板展開為匹配該串的路徑名.匹配定義為:   …

    Linux干貨 2017-04-23
  • Linux程序包管理方式

    Linux程序包安裝和管理方式共計三種:          一、[yum|dnf],通過官網或者其他開源網站提供的文件服務器,本機鏡像源等途徑進行安裝。         二、rpm,通過官網或者其他開源網站通過…

    Linux干貨 2016-07-29
  • 記一次CentOS7內核kernel的刪除重裝

    人生在于折騰,學習Linux更要多多折騰。在一次折騰中吸取教訓,更易于記憶。 今天我們來折騰Linux的內核:刪除系統內核后,通過光盤進行kernel的重安裝。 友情提示:請在虛擬機環境進行,折騰前務必做好系統快照。慎重! 環境 本次系統環境是如下圖: 刪除 我們先到/boot目錄下,強制刪除kernel文件: 重啟PC,此時系統報錯找不到內核文件,無法登錄…

    Linux干貨 2016-08-24
  • 十七周

    1、搭建一套LVS-DR模型的高性能集群,并實現以下功能:    (1)、wordpress程序通過nfs共享給各個realserver;    (2)、后端realserver中的nginx和php分離 Centos7系統 地址 安裝程序 LVS主機 VIP:192.168.1.110 ipvsadm DIP:192…

    2017-08-17
  • linux任務管理與計劃

    linux系統作業控制的命令:     job(作業):一個作業通常包含多個命令(也有可能只包含一個),聯合起來由單個小程序組合,完成復雜任務,對Linux而言作業有兩種;前臺作業和后臺作業        前臺作業(forgroud):通過終端啟動,且啟動后會…

    Linux干貨 2016-09-13
欧美性久久久久