linux 經常使用命令大全

一 實時日誌跟蹤  主動刷新,確保看到最新的檔案內容。
    格式: tail -f 文件名全稱    默認狀況下它顯示文件的最後十行。
    如:
    cd/app/log/passage
    tail -f passage.log 實時日誌跟蹤 
    tail -f  -n 100 catalina.out  從最後的100行開始顯示

二。vim 文件編輯器
    vim  test.txt 
    解釋:若是沒有該文件 則創建該文件 並進入命令模式
    若是有的話直接進入命令模式
    按下 i 鍵 進入編輯輸入模式   輸入內容
    按下ESC鍵 返回到命令模式
    輸入 :wq 文件保存並退出 ,若是不保存 則 :q 便可
    強制保存退出 :wq!

    vim 三種操做狀態,分別是命令模式、插入模式和底線命令模式

三。文件刪除
    文件刪除 格式 : rm  文件名

四。刪除目錄及其下全部文件、文件夾
    rm -rf命令 
    -r 就是向下遞歸,無論有多少級目錄,一併刪除
    -f 就是直接強行刪除,不做任何提示的意思

    如: rm -rf /var/log/httpd/access/    將會刪除access目錄及其下全部文件、文件夾
    如: rm -f /var/log/httpd/access.log  將會強制刪除 access.log這個文件
    rm -rf *
    
    #刪除當前目錄下全部文件,排除 delete.bat
    rm  -rf  `ls *.|egrep -v delete.bat`
    rm -rf  *.log
    rm -rf session/Fixco*

五。刪除空的目錄
    rmdir dir1 刪除一個叫作 'dir1' 的目錄

    建立目錄 : mkdir 文件名稱
    建立不存在的多及目錄 : mkdir -p t/t/t/tt/
    
六。文本文件查看和鏈接工具。
    cat 
    cat 是一個文本文件查看和鏈接工具。查看一個文件的內容,用cat比較簡單,就是cat 
    後面直接接文件名。   
    好比: cat passage.properties 

    另外一種方式
    格式  more 
    例子: more 'NollPointerException' datashift.log  >  temp.log
    more會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,
    按 b 鍵就會往回(back)一頁顯示,並且還有搜尋字串的功能 。more命令從前向後讀取文件,所以在
    例子  輸入 :200  就能夠滾動必定的頁數   或者 :100
    啓動時就加載整個文件。
    如 :more  config.ada.php | grep 'kong@chinascopefinancial.com'
    查看config.ada.php全部內容,並顯示kong@chinascopefinancial.com的地方
    grep 'data/000592.csv:2016-01-27' 1.txt 
    或: cat config.ada.php | grep 'kong@chinascopefinancial.com'

七. 定向輸出到文件
    格式  >
    more datashift.log |grep '開始導入: 基金投資前十名股票' > temp.log
    > 是定向輸出到文件,若是文件不存在,就建立文件;若是文件存在,就將其清空;
    如:ping 192.168.120.204 > test.log 
    在後臺ping遠程主機。並輸出文件到test.log;
    這種作法也使用於一個以上的檔案監視。用Ctrl+c來終止。 

    輸出內容追加到目標文件中
    格式  >>
    如: echo '測試隱患' >>  test.log 
    會在 test.log文件最後最佳 測試隱患這句話 

八。查看進程狀態 
    格式 ps  
    ps命令用來列出系統中當前運行的那些進程。ps命令列出的是當前那些進程的快照,
    就是執行ps命令的那個時刻的那些進程,若是想要動態的顯示進程信息,就可使
    用top命令。 
    如: ps -ef|grep passage
    或: ps aux | grep passage
    查看passage包的進程情況 

    例子:
       ps aux | grep csf-webai
       ps aux | grep 4775

九. 殺死進程  kill  XXX
     如: kill -9 324    

十. 上傳本地文件到linux
    格式 : rz -be 
    此時會打開對話框 ,選好以後,會自動上傳到所在的目錄
   
    從Linux 下載文件到本地目錄
    格式: sz filename    

    #下載一個文件
    sz filename
    #下載多個文件
    sz filename1 filename2
    #下載dir目錄下的全部文件,不包含dir下的文件夾
    sz dir


十一. 文件移動
    格式 :  mv    
    如: mv test.log   ../addr  
    如: mv mongodb-linux-i686-2.0.7 /usr/local/mongodb
    把 test.log  移動到 上級目錄addr下

十二. 修更名字
    如: 把deploy_csf_weui.sh 修改爲 deploy_csf_webai.sh
    mv deploy_csf_weui.sh  deploy_csf_webai.sh

十三. 搜索文件中匹配符 
     格式  grep 'bytes' *log
     格式  more 'bytes' *log
     在當前目錄下,在全部以log結尾的文件中查找有bytes的地方

     從根目錄開始查找webaideploy.sh的文件。
     find / -name webaideploy.sh
     想要在當前目錄及子目錄中查找全部的‘ *.log‘文件,能夠用: 
     find . -name "*.log" -print  

十四. zip 壓縮和解壓
     1.如: unzip mongodb-win32-i386-2.6.5.zip 
     把mongodb-win32-i386-2.6.5.zip  解壓到當前目錄下

     2.如: zip -r xiaoma.zip mongodb-win32-i386-2.6.5 
     把mongodb-win32-i386-2.6.5 文件壓縮成爲 xiaoma.zip
     或: zip -r abc123.zip abc 123.txt
     把目錄下面的abc文件夾和123.txt壓縮成爲abc123.zip
     
     tar 解壓
     1 如:tar -zxvf server-user-service-1.0.0.0.dist.tar.gz
     把 server-user-service-1.0.0.0.dist.tar.gz 解壓到當前目錄 

    解壓war包
    jar -xvf game.war 解壓到當前目錄

十五. 複製指定目錄下的所有文件到另外一個目錄中
     格式: cp -r  源文件或目錄 目標文件或目錄 

     將目錄/usr/men下的全部文件及其子目錄複製到目錄/usr/zh中 
     > cp -r /usr/men /usr/zh

     
十六. 賦予權限

    創建sh 文件
    touch test.sh

    賦予文件權限
    chmod u+x test.sh    

    給你一個目錄下的全部文件賦予權限

    chmod 777 -R  名稱

    如: 給 apache-tomcat-8.0.32 下全部文件賦予權限
    chmod 777 -R apache-tomcat-8.0.32
    
十七. telnet 
     例子: telnet 192.168.1.108  3306
     
十八.文件太大處理辦法
       
     查找 vi  data_w.log
     查看日誌(上下鍵)       
     摁下 / 的鍵 
     輸入 關鍵字 進行查找
     Ctrl+b  返回上一屏;
     Ctrl+f  向下滾動一屏;
     
    文件的尾部
    less  data_w.log
    查看日誌(上下鍵)       
    shift+G 鍵  直接滾到尾部

十九. 腳本啓動與中止
     例子 腳本 名字 deploy.sh
     啓動 ./deploy.sh  或者 sh deploy.sh 
     若是後臺運行的話,能夠加個& 如 ./deploy.sh & 或者 sh deploy.sh &
     中止 sh cloud.sh stop 
      &表明在後臺運行
      nohup 意思是不掛斷運行命令,當帳戶退出或終端關閉時,程序仍然運行  
      例如:nohup java -jar sam-service-mongo-0.0.1.jar > ./run.log 2>&1 &
      // 此爲spring-boot啓動方法

     註釋:
        bash -x  webaideploy.sh  csf 
        bash -x start.sh 
        debug 模式運行 能看到具體的報錯信息
     
二十.搜索進程中包含invest的
     ps aux | grep invest
     
二十一.查看端口是否被佔用
    netstat -anoptl | grep 端口號
 
      演示
      查看8120端口是否被佔用
      [root@localhost invest]# netstat -anoptl | grep 8120
      tcp    0    0 0.0.0.0:8120    0.0.0.0:*    LISTEN    20430/java    off (0.00/0/0)

      查看具體端口8120 是被那個應用程序使用
      ps aux | grep 20430      

二十二. 查看當前目錄總用多大空間
      du -sh 

二十三. 查看磁盤使用狀況      
      df -h

二十四. linux下自動下載工具 
     wget是一個從網絡上自動下載文件的自由工具。它支持HTTP,HTTPS和FTP協議,可使用HTTP代理.
     如:  wegt http://download.oracle.com/otn-pub/java/jdk/


二十五.【主機名】
    一.查看linux的主機名
        hostname

    二.修改linux的主機名 
        hostname 修改後的名稱
        如:hostname localhost   

        這樣修改有個問題 每次重啓的時候還會還原

        若是永久修改的話就要配置文件
        vim /etc/sysconfig/network
        修改以下
        HOSTNAME = localhost
        
        而後重啓一下
        reboot -h now    刪除全部的進程,而不是平穩地終止它們
    
    備註: shutdown -r now是當即中止而後從新啓動,
            安全地關閉或重啓Linux系統,它在系統關閉以前給系統上的全部登陸用戶提示一條警告信息。
        
    三.主機名跟ip進行綁定
        vim /etc/hosts
        在文件中增長一行
        192.168.0.130  localhost

二十六.【防火牆 】
    一.查看防火牆是否關閉:    
        service iptables status
    二.關閉防火牆 
        service iptables stop

    三.查看防火牆是不是自動運行
       chkconfig --list
    
    備註:
    [root@localhost maven]# chkconfig --list | grep iptables
    iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
    若是有一個爲on 說明是自動啓動的,沒有off說明沒有自動啓動
    
    四.關閉防火牆自動運行
        chkconfig iptables off
        驗證 chkconfig --list | grep iptables
        
二十七.【 linux使用yum命令】       
    1.列出全部已安裝的軟件包 
    命令:yum list installed 

    2.列出全部已安裝的有關docker的安裝包
    命令:yum list installed | grep docker
    結果 docker-engine.x86_64                 17.03.0.ce-1.el7.centos         @dockerrepo

    3.卸載(刪除安裝的軟件包)
    命令:yum -y remove docker-engine.x86_64


    4.獲取指定軟件包信息 
    命令:yum info  軟件包
    例如: yum info docker.x86_64   獲取docker.x86_64的軟件包信息    

二十八.【使用sz命令下載文件時,超過4G下載不了,解決方案】
      1.分拆爲多個文件的命令:
        764_xb_18_4_9.iso  待下載的文件

        將764_xb_18_4_9.iso文件才分爲2G的多個小文件
        cat 764_xb_18_4_9.iso | split -b 2G - 764_xb_18_4_9.iso.
        備註:764_xb_18_4_9.iso.是拆分後文件的前綴,默認分拆後文件名稱爲764_xb_18_4_9.iso.aa,ab,ac...類推
          例如:764_xb_18_4_9.iso     待下載的文件
                764_xb_18_4_9.iso.aa  拆分的第一個小文件
                764_xb_18_4_9.iso.ab  拆分的第二個小文件
                764_xb_18_4_9.iso.ac  拆分的第三個小文件
      2.下載多個小文件
        sz 764_xb_18_4_9.iso.a*          
      3.合併下載的文件
        cat 764_xb_18_4_9.iso.a* > 764_xb_18_4_9.iso

      備註:拆分合並命令window,linux均可以進行  


腳本調用  sh ./webai/bin/stop.sh

文件搜索
find / -name file1 從 '/' 開始進入根文件系統搜索文件和目錄 

【系統管理命令】
    who         顯示在線登錄用戶
    clear       清屏
    hostname    顯示主機名
    top         動態顯示當前耗費資源最多進程信息
    df          查看磁盤大小 df -h 帶有單位顯示磁盤信息
    ifconfig    查看網絡狀況
    ping        測試網絡連通
    netstat     顯示網絡狀態信息
    kill        殺死進程,能夠先用ps 或 top命令查看進程的id,而後再用kill命令殺死進程。
    history     查看輸入的歷史命令
          

vi filename :打開或新建文件,並將光標置於第一行首 
vi filename....filename :打開多個文件,依次進行編輯 

Linux查看文件夾大小

du -sh 查看當前文件夾大小
du -sh * | sort -n 統計當前文件夾(目錄)大小,並按文件大小排序

查看目錄下有多少個文件及文件夾需在終端輸入
ls | wc -w


Linux經常使用命令大全
date 顯示系統日期 
cal 2007 顯示2007年的日曆表 
date 041217002007.00 設置日期和時間 - 月日時分年.秒 
clock -w 將時間修改保存到 BIOS 



關機 (系統的關機、重啓以及登出 ) 
shutdown -h now 關閉系統(1) 
init 0 關閉系統(2) 
telinit 0 關閉系統(3) 
shutdown -h hours:minutes & 按預約時間關閉系統 
shutdown -c 取消按預約時間關閉系統 
shutdown -r now 重啓(1) 
reboot 重啓(2) 
logout 註銷 
top 查看cpu消耗



【文件和目錄 】
cd /home 進入 '/ home' 目錄
cd .. 返回上一級目錄 
cd ../.. 返回上兩級目錄 
cd 進入我的的主目錄 
cd ~user1 進入我的的主目錄 
cd - 返回上次所在的目錄 
pwd 顯示工做路徑 
ls 查看目錄中的文件 
ls -F 查看目錄中的文件 
ls -l 顯示文件和目錄的詳細資料 
ls -a 顯示隱藏文件 
ls *[0-9]* 顯示包含數字的文件名和目錄名 
tree 顯示文件和目錄由根目錄開始的樹形結構(1) 
lstree 顯示文件和目錄由根目錄開始的樹形結構(2) 
mkdir dir1 建立一個叫作 'dir1' 的目錄
mkdir dir1 dir2 同時建立兩個目錄 
mkdir -p /tmp/dir1/dir2 建立一個目錄樹 
rm -rf dir1 刪除一個叫作 'dir1' 的目錄並同時刪除其內容 
rm -rf dir1 dir2 同時刪除兩個目錄及它們的內容 
mv dir1 new_dir 重命名/移動 一個目錄 
cp file1 file2 複製一個文件 
cp -a /tmp/dir1 . 複製一個目錄到當前工做目錄 
cp -a dir1 dir2 複製一個目錄 
ln -s file1 lnk1 建立一個指向文件或目錄的軟連接 
ln file1 lnk1 建立一個指向文件或目錄的物理連接 
touch -t 0712250000 file1 修改一個文件或目錄的時間戳 - (YYMMDDhhmm) 
file file1 outputs the mime type of the file as text 
iconv -l 列出已知的編碼 
iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding. 
find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick) 



【文件搜索 】
find / -name file1 從 '/' 開始進入根文件系統搜索文件和目錄 
find / -user user1 搜索屬於用戶 'user1' 的文件和目錄 
find /home/user1 -name \*.bin 在目錄 '/ home/user1' 中搜索帶有'.bin' 結尾的文件 
find /usr/bin -type f -atime +100 搜索在過去100天內未被使用過的執行文件 
find /usr/bin -type f -mtime -10 搜索在10天內被建立或者修改過的文件 
find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 結尾的文件並定義其權限 
find / -xdev -name \*.rpm 搜索以 '.rpm' 結尾的文件,忽略光驅、捷盤等可移動設備 
locate \*.ps 尋找以 '.ps' 結尾的文件 - 先運行 'updatedb' 命令 
whereis halt 顯示一個二進制文件、源碼或man的位置 
which halt 顯示一個二進制文件或可執行文件的完整路徑 



【打包和壓縮文件 】
bunzip2 file1.bz2 解壓一個叫作 'file1.bz2'的文件 
bzip2 file1 壓縮一個叫作 'file1' 的文件 
gunzip file1.gz 解壓一個叫作 'file1.gz'的文件 
gzip file1 壓縮一個叫作 'file1'的文件 
gzip -9 file1 最大程度壓縮 
rar a file1.rar test_file 建立一個叫作 'file1.rar' 的包 
rar a file1.rar file1 file2 dir1 同時壓縮 'file1', 'file2' 以及目錄 'dir1' 
rar x file1.rar 解壓rar包 
unrar x file1.rar 解壓rar包 
tar -cvf archive.tar file1 建立一個非壓縮的 tarball 
tar -cvf archive.tar file1 file2 dir1 建立一個包含了 'file1', 'file2' 以及 'dir1'的檔案文件 
tar -tf archive.tar 顯示一個包中的內容 
tar -xvf archive.tar 釋放一個包 
tar -xvf archive.tar -C /tmp 將壓縮包釋放到 /tmp目錄下 
tar -cvfj archive.tar.bz2 dir1 建立一個bzip2格式的壓縮包 
tar -xvfj archive.tar.bz2 解壓一個bzip2格式的壓縮包 
tar -cvfz archive.tar.gz dir1 建立一個gzip格式的壓縮包 
tar -xvfz archive.tar.gz 解壓一個gzip格式的壓縮包 
zip file1.zip file1 建立一個zip格式的壓縮包 
zip -r file1.zip file1 file2 dir1 將幾個文件和目錄同時壓縮成一個zip格式的壓縮包 
unzip file1.zip 解壓一個zip格式壓縮包 




查看文件內容 
cat file1 從第一個字節開始正向查看文件的內容 
tac file1 從最後一行開始反向查看一個文件的內容 
more file1 查看一個長文件的內容 
less file1 相似於 'more' 命令,可是它容許在文件中和正向操做同樣的反向操做 
head -2 file1 查看一個文件的前兩行 
tail -2 file1 查看一個文件的最後兩行 
tail -f /var/log/messages 實時查看被添加到一個文件中的內容 

返回頂部索引 ^

文本處理 
cat file1 file2 ... | command <> file1_in.txt_or_file1_out.txt general syntax for text manipulation using PIPE, STDIN and STDOUT 
cat file1 | command( sed, grep, awk, grep, etc...) > result.txt 合併一個文件的詳細說明文本,並將簡介寫入一個新文件中 
cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt 合併一個文件的詳細說明文本,並將簡介寫入一個已有的文件中 
grep Aug /var/log/messages 在文件 '/var/log/messages'中查找關鍵詞"Aug" 
grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"開始的詞彙 
grep [0-9] /var/log/messages 選擇 '/var/log/messages' 文件中全部包含數字的行 
sed 's/stringa1/stringa2/g' example.txt 將example.txt文件中的 "string1" 替換成 "string2" 
sed '/^$/d' example.txt 從example.txt文件中刪除全部空白行 
sed '/ *#/d; /^$/d' example.txt 從example.txt文件中刪除全部註釋和空白行 
echo 'esempio' | tr '[:lower:]' '[:upper:]' 合併上下單元格內容 
sed -e '1d' result.txt 從文件example.txt 中排除第一行 
sed -n '/stringa1/p' 查看只包含詞彙 "string1"的行 
sed -e 's/ *$//' example.txt 刪除每一行最後的空白字符 
sed -e 's/stringa1//g' example.txt 從文檔中只刪除詞彙 "string1" 並保留剩餘所有 
sed -n '1,5p;5q' example.txt 查看從第一行到第5行內容 
sed -n '5p;5q' example.txt 查看第5行 
sed -e 's/00*/0/g' example.txt 用單個零替換多個零 
cat -n file1 標示文件的行數 
cat example.txt | awk 'NR%2==1' 刪除example.txt文件中的全部偶數行 
echo a b c | awk '{print $1}' 查看一行第一欄 
echo a b c | awk '{print $1,$3}' 查看一行的第一和第三欄 
paste file1 file2 合併兩個文件或兩欄的內容 
paste -d '+' file1 file2 合併兩個文件或兩欄的內容,中間用"+"區分 
sort file1 file2 排序兩個文件的內容 
sort file1 file2 | uniq 取出兩個文件的並集(重複的行只保留一份) 
sort file1 file2 | uniq -u 刪除交集,留下其餘的行 
sort file1 file2 | uniq -d 取出兩個文件的交集(只留下同時存在於兩個文件中的文件) 
comm -1 file1 file2 比較兩個文件的內容只刪除 'file1' 所包含的內容 
comm -2 file1 file2 比較兩個文件的內容只刪除 'file2' 所包含的內容 
comm -3 file1 file2 比較兩個文件的內容只刪除兩個文件共有的部分 





*********************************************************************************************************
經常使用指令

ls          顯示文件或目錄
     -l           列出文件詳細信息l(list)
     -a          列出當前目錄下全部文件及目錄,包括隱藏的a(all)
mkdir         建立目錄
     -p           建立目錄,若無父目錄,則建立p(parent)
cd             切換目錄
touch          建立空文件
echo           打印內容
cat            查看文件內容
cp             拷貝
mv             移動或重命名
rm             刪除文件
     -r            遞歸刪除,可刪除子目錄及文件
     -f            強制刪除
find           在文件系統中搜索某文件
grep           在文本文件中查找某個字符串
rmdir          刪除空目錄
tree           樹形結構顯示目錄,須要安裝tree包
pwd            顯示當前目錄
ln             建立連接文件
more、less  分頁顯示文本文件內容
head、tail    顯示文件頭、尾內容
ctrl+alt+F1  命令行全屏模式



關機/重啓機器

shutdown
     -r             關機重啓
     -h             關機不重啓
     now          馬上關機
halt               關機
reboot          重啓

vim使用
vim三種模式:命令模式、插入模式、編輯模式。使用ESC或i或:來切換模式。
命令模式下:

:q                      退出
:q!                     強制退出
:wq                   保存並退出
:set number     顯示行號
:set nonumber  隱藏行號




文件權限管理
三種基本權限
R           讀         數值表示爲4
W          寫         數值表示爲2
X           可執行  數值表示爲1



http://blog.sina.com.cn/s/blog_64e166580100vwk2.html



$# 是傳給腳本的參數個數
$0 是腳本自己的名字
$1 是傳遞給該shell腳本的第一個參數
$2 是傳遞給該shell腳本的第二個參數
$@ 是傳給腳本的全部參數的列表
$0 
Shell自己的文件名 
$1~$n 
添加到Shell的各參數值。$1是第1參數、$2是第2參數…。 

如新建一個test.sh 簡單的腳本 touch test.sh

#!/bin/sh
echo "shell自己的文件名 --->$0"
echo "第1個參數 $1"
echo "第2個參數 $2"

賦予腳本執行權限
# chmod +x test.sh

執行腳本
# ./test.sh aa bb

這裏aa就是傳遞的第一個參數 bb就是傳遞的第二個參數

顯示結果
shell自己的文件名 --->./test.sh
第1個參數 aa
第2個參數 bb

首行中的符號#!告訴系統其後路徑所指定的程序便是解釋此腳本文件的Shell程 序。
若是首行沒有這句話,在執行腳本文件的時候,將會出現錯誤。後續的部分就是主程序


#-z 是爲空的意思   參數1爲空的時候會進入
if [ -z $1 ]; then
    echo "參數是空的"
else
    echo "參數打印 -> $1"
fi

#########################################################################################

#!/bin/sh

DEPLOY_TYPE="svn"

#-a 和 -o 表示邏輯與和邏輯或

if [ -z $1 ]; then
    echo "參數數空的"
elif [ $1 = "svn" -o $1 = "war"  ];then
    echo "參數打印 --> $1"
else
    echo "什麼都沒有"
fi

echo $DEPLOY_TYPE
echo "這裏開始調用腳本"
sh /xiaolei/test.sh

SERVICE=$1
case $SERVICE in
        "csf") echo "當前參數是 $SERVICE"  ;;
        "nlp") echo "當前參數是 $SERVICE"  ;;
        *) echo  "參數必須是 csf nlp"  ;;
esac

#-邏輯非 !    參數爲空進入
if [ ! -n "$1" ];then
    echo "空的"
fi

# 若是目錄不存在則建立 (多級目錄)
link_workdir = /usr/local/test
if [ ! -d  $link_workdir ]; then
     mkdir -p $link_workdir
fi

#########################################################################################
[ -f "$file" ] 判斷$file是不是一個文件

[ $a -lt 3 ] 判斷$a的值是否小於3,一樣-gt和-le分別表示大於或小於等於

[ -x "$file" ] 判斷$file是否存在且有可執行權限,一樣-r測試文件可讀性

[ -n "$a" ] 判斷變量$a是否有值,測試空串用-z

[ "$a" = "$b" ] 判斷$a和$b的取值是否相等

[ cond1 -a cond2 ] 判斷cond1和cond2是否同時成立,-o表示cond1和cond2有一成立

#########################################################################################

文件表達式
if [ -f  file ]    若是文件存在
if [ -d ...   ]    若是目錄存在
if [ -s file  ]    若是文件存在且非空 
if [ -r file  ]    若是文件存在且可讀
if [ -w file  ]    若是文件存在且可寫
if [ -x file  ]    若是文件存在且可執行   

整數變量表達式
if [ int1 -eq int2 ]    若是int1等於int2   
if [ int1 -ne int2 ]    若是不等於    
if [ int1 -ge int2 ]       若是>=
if [ int1 -gt int2 ]       若是>
if [ int1 -le int2 ]       若是<=
if [ int1 -lt int2 ]       若是<

-eq  -ne  -lt  -nt只能用於整數,不適用於字符串
   

   字符串變量表達式
If  [ $a = $b ]                 若是string1等於string2
                                字符串容許使用賦值號作等號
if  [ $string1 !=  $string2 ]   若是string1不等於string2       
if  [ -n $string  ]             若是string 非空(非0),返回0(true)  
if  [ -z $string  ]             若是string 爲空
if  [ $sting ]                  若是string 非空,返回0 (和-n相似)    


    條件表達式引用變量要帶$

if [ $a = $b ] ;then       
echo equal
else
echo no equal
fi

if [ -z "$JHHOME" -a -d $HOME/$num ]   若是變量$JHHOME爲空,且$HOME/$num目錄存在
then
JHHOME=$HOME/$num                      則賦值
fi

#!/bin/sh

#########################################################################################
#!/bin/sh

for((i = 1; i<5; i++))
do
        echo "$i"
done

echo "執行完畢"

顯示結果
1
2
3
4
執行完畢

#########################################################################################

echo "------------------"

for key in num  parm  a  b 
do
        echo $key
done

echo "-----------------"

顯示結果

------------------
num
parm
a
b
-----------------

#########################################################################################

echo "argume:$@"
for key in $@
do
    echo $key
done
相關文章
相關標籤/搜索