文件操做java
更改當前目錄 cd
shell
獲取當前目錄 pwd
數據庫
刪除文件/目錄 rm -f
or rm -rf
or rmdir
express
建立文件 touch
or cat > xxx
vim
建立臨時文件 mktemp testing.XXXXXX
, 文件名末尾加6個X數組
建立臨時目錄 mktemp -d dir.XXXXXX
, 目錄名末尾加6個Xbash
建立目錄 mkdir
服務器
移動文件/文件重命名 mv
網絡
複製 cp
app
硬連接/軟連接 ln
or ln -s
顯示文件列表 ls
實際搜索硬盤查詢文件名稱 find
別名 alias
查看文件所在路徑 dirname
查看文件名(過濾路徑) basename
查看可執行文件的位置 which
查看文件的位置 whereis
配合數據庫查看文件位置 locate
文件查看
文件內容查看 cat
按頁查看文件內容 more
or less
查看文件前幾行 head
查看文件後幾行 tail
查看文件統計信息 stat
查看文件類型 file
文本編輯
字符流編輯器 sed
模式匹配的程序設計語言 awk
and gawk
行編輯器 ed
排序 sort
編輯工具 vim
or emacs
查詢/統計
統計文件中數量 wc -c
or wc -l
or wc -w
計算行號 nl
搜索數據 grep
文件權限
系統用戶 cat /etc/passwd
or cat /etc/shadow
添加用戶 useradd
刪除用戶 userdel
修改用戶 usermod
or chsh
or chfn
or chage
修改密碼 passwd
or chpasswd
系統用戶組 cat /etc/group
添加用戶組 groupadd
刪除用戶組 groupdel
添加用戶到用戶組 usermod
修改用戶組 groupmod
設置建立文件默認權限 umask
修改權限 chmod
修改所屬關係 chown
or chgrp
執行root命令 sudo
顯示用戶id和所屬組信息 id
壓縮/歸檔
歸檔 tar
zip壓縮 zip
or unzip
or zipcloak
or zipnote
or zipsplit
bzip2壓縮 bzip2
or bunzip2
or bzcat
gzip壓縮 gzip
or gunzip
or gzcat
# 僅打包,不壓縮 tar -cvf /usr/local/test.tar /usr/local/test # 解包 tar –xvf test.tar # 打包後,用bzip2壓縮 tar -jcvf /usr/local/test.tar.bz2 /usr/local/test # 解壓bzip2包 tar -jxvf /usr/local/test.tar.bz2 # 打包後,用gzip壓縮 tar -zcvf /usr/local/test.tar.gz /usr/local/test # 解壓gzip包 tar -zxvf /usr/local/test.tar.gz
程序安裝
Debian & Ubuntu apt-get
Redhat & CentOS yum
or rpm
查詢rpm包是否安裝 rpm -q xxx
列出全部被安裝的rpm包 rpm -qa
安裝RPM包 rpm -ivh xxx
查看yum安裝後,機器裏都裝了哪些東西 rpm -ql xxx
手動安裝 ./configure
then make -j & make install
系統服務 chkconfig
# 列出全部服務 chkconfig --list # 增長httpd服務 chkconfig --add httpd # 刪除httpd服務 chkconfig --del httpd
建立、刪除、修復、軟鏈接,還能顯示出已存在軟鏈接的信息 update-alternatives
# 列出系統中全部安裝java程序的路徑,並選擇默認程序 update-alternatives --config java
後臺運行
控制檯下後臺模式運行腳本 command &
非控制檯下後臺模式運行腳本 nohup command &
查看shell當前處理的做業 jobs
重啓中止的做業 bg
計劃執行做業 at [-f filename] time
列出等待的做業 atq
刪除做業 atrm
調整命令的調度優先級 nice
and renice
計劃按期執行腳本 cron min hour dayofmonth month dayofweek command
列出當前用戶全部cron時間表 crontab -l
列出cron目錄 ls /etc/cron.*ly
運行服務器問題錯過的的計劃 anacron
後臺新窗口 screen
建立新shell後臺執行,完成後退出 sh -c "cd /home; ls"
系統監控
虛擬內存 cat /proc/meminfo
共享內存 ipcs -m
系統進程 ps aux
or ps -ef
實時監測進程 top
結束進程 kill
or killall
掛載媒體 mount
or umount
查看磁盤使用狀況 df
or du
查看登陸用戶 who
查看全部進程和登錄用戶 lsof
捕捉信息 trap
打印確切的系統信息 uname -a
打印操做系統信息 cat /etc/redhat-release
日期/時間
當前時間 date
休息暫停 sleep
打印出一條命令或一個程序的執行時間 time
打印/輸出
打印 printf
or echo
輸出重定向(覆蓋) >
輸出重定向(底部追加) >>
輸入重定向 <
內聯輸入重定向 <<
管道 |
標準鍵盤輸入 read
退出狀態碼 echo $?
shell腳本結束設置退出狀態碼 exit return_number
命令行參數數量 echo $#
命令行最後一個參數 echo ${!#}
命令行全部參數 $*
or $@
命令行參數位移 shift
# ./testing -a -b test1 -d # Found the -a option # Found the -b option. with parameter value test1 # -d is not an option # extracting command line options and values while [ -n "$1" ] do case "$1" in -a) echo "Found the -a option";; -b) param="$2" echo "Found the -b option, with parameter value $param" shirt 2;; -c) echo "Found the -c option";; --) shift break; *) echo "$1 is not an option";; esac shift done count=1 for param in "$@" do echo "Parameter #$count: $param" count=$[ $count + 1 ] done
命令行參數分析 getopt
結果輸出到和標準錯誤同樣 command >&2
重定向錯誤和數據 return_number>
, 重定向全部輸出 &>
# 文件或路徑不存在的返回碼是2 ls -al badfile 2> testfile cat testfile # ls: cannot access badfile: No such file or directory ls -al test test2 test3 badtest 2> testfile 1> testfile2 cat testfile # ls: cannot access test: No such file or directory # ls: cannot access badtest: No such file or directory cat testfile2 # -rw-rw-r--. 1 rich rich 158 2010-10-16 11:32 test2 # -rw-rw-r--. 1 rich rich 0 2010-10-16 11:33 test3
永久重定向 exec return_number>
or exec return_number<
阻止命令輸出 command > /dev/null
清空文件 cat /dev/null > filename
記錄消息到日誌文件 tee filename
date | tee testfile # Sun Oct 17 18:56:21 EDT 2010
清屏 clear
建立腳本菜單 select
# smenu1 PS3="Enter option: " select option in "Display disk space" "Display logged on users" "Display memory usage" "Exit program" do case $option in "Exit program") break ;; "Display disk space") df -k ;; "Display logged on users") who ;; "Display memory usage") cat /proc/meminfo ;; *) clear echo "Sorry, wrong selection" ;; esac done clear # ./smenu1 # 1) Display disk space 3) Display memory usage # 2) Display logged on users 4) Exit program # Enter option:
數學運算
數學表達式 expr xxx
方括號數學表達式 $[ xxx ]
bash計算器 bc
# 2個變量相除,結果爲4位小數 var1=100 var2=45 var3=`echo "scale=4; $var1 / $var2" | bc` echo The answer for this is $var3 # The answer for this is 2.2222
運算符
測試條件並返回退出狀態碼(經常使用在if裏) test condition
or [ condition ]
雙尖括號(針對數學表達式, 經常使用在if裏) (( expression ))
雙方括號(針對字符串比較, 經常使用在if裏) [[ expression ]]
數組 ( )
# 數組遍歷 array_name=(value0 value1 value2 value3 value4) for value in ${array_name[@]}; do echo value done
網絡通訊
輸出郵件發送 mail
輸出網絡接口配置 ifconfig
or ip addr
顯示網絡接口信息 netstat
or ss
文件下載 wget
http請求 curl
, 此命令也包含文件下載功能
驗證服務器是否連通 ping
跟蹤網絡訪問路由 tracepath
or traceroute
結合ping
和tracepath
功能的工具 mtr
DNS查詢 host
查詢指定站點的whois記錄 whois
網線是否插到在網絡接口上 ifplugstatus
網卡禁用和開啓 ifdown
and ifup
釋放IP地址並從DHCP服務器上得到一個新的 dhclient -r
## 經常使用ss命令 ss -l #顯示本地打開的全部端口 ss -pl #顯示每一個進程具體打開的socket ss -t -a #顯示全部tcp socket ss -u -a #顯示全部的UDP Socekt ss -o state established '( dport = :smtp or sport = :smtp )' #顯示全部已創建的SMTP鏈接 ss -o state established '( dport = :http or sport = :http )' #顯示全部已創建的HTTP鏈接 ss -x src /tmp/.X11-unix/* #找出全部鏈接X服務器的進程 ss -s #列出當前socket詳細信息
結構化命令
條件判斷 if-then-else
if command1 then commands elif command2 then more commands else more commands fi # or if command1; then commands elif command2; then more commands else more commands fi
條件分支 case
case variable in pattern1 | pattern2) commands1;; pattern3) commands2;; *) default commands;; esac
循環 for
for var in list do commands done # or for var in list; do commands done # or for (( variable assignment ; condition ; iteration process )); do commands done
循環 while
while test command do commands done # or while test command; do commands done # or 讀取文件 while read line; do echo "$line" done
循環 until
與while
條件判斷恰好相反,command返回非0才執行commands
until test command do commands done # or until test command; do commands done
控制循環 break
and continue
函數
基本腳本函數
function name { commands } # or name() { commands }
退出函數並返回退出狀態碼 return
,範圍0~255
函數返回真實數據
function db1 { read -p "Enter a value: " value echo $[ $value * 2 ] } result=`db1` echo "The new value is $result"
函數參數 func value1 value2
函數內局部變量 local
腳本中調用另外一個腳本 . ./myfuncs
環境變量
顯示全局環境變量 printenv
顯示環境變量(局部+全局) set
設置全局環境變量 export xxx
刪除環境變量 unset xxx
附錄:默認shell環境變量
變量 | 描述 |
---|---|
CDPATH | 冒號分隔的目錄列表,做爲cd命令的搜索路徑 |
HOME | 當前用戶的主目錄 |
IFS | shell用來分隔文本字符串的一列字符 |
當前用戶收件箱的文件名;bash shell會檢查這個文件來看有沒有新郵件 | |
MAILPATH | 冒號分隔的當前用戶收件箱的文件名列表;bash shell會檢查列表中的每一個文件來看有沒有新郵件 |
OPTARG | getopts命令處理的最後一個選項參數值 |
OPTIND | getopts命令處理的最後一個選項參數的索引號 |
PATH | 冒號分隔的shell查找命令的目錄列表 |
PS1 | shell命令行界面的主提示符 |
PS2 | shell命令行界面的次提示符 |
附錄:Linux本地開機文件位置
發行版 | 文件位置 |
---|---|
debian | /etc/init.d/rc.local |
Fedora | /etc/rc.d/rc.local |
Mandriva | /etc/rc.local |
openSuse | /etc/init.d/boot.local |
Ubuntu | /etc/rc.local |
附錄:登陸shell文件處理順序
編號 | 交互式login shell | 交互式non-login shell |
---|---|---|
1) 系統全局環境變量 | /etc/profile | /etc/bashrc |
2) 私有環境變量 | $HOME/.bash_profile | - |
3) 私有環境變量 | $HOME/.bash_login | - |
4) 私有環境變量 | $HOME/.profile | $HOME/.bashrc |
附錄:expr命令操做符
操做符 | 描述 |
---|---|
ARG1 | ARG2 | 若是沒有參數是null或零值,返回ARG1;不然返回ARG2 |
ARG1 & ARG2 | 若是沒有參數是null或零值,返回ARG1;不然返回0 |
ARG1 < ARG2 | 若是ARG1小於ARG2,返回1;不然返回0 |
ARG1 <= ARG2 | 若是ARG1小於或等於ARG2,返回1;不然返回0 |
ARG1 = ARG2 | 若是ARG1等於ARG2,返回1;不然返回0 |
ARG1 != ARG2 | 若是ARG1不等於ARG2,返回1;不然返回0 |
ARG1 >= ARG2 | 若是ARG1大於或等於ARG2,返回1;不然返回0 |
ARG1 > ARG2 | 若是ARG1大於ARG2,返回1;不然返回0 |
ARG1 + ARG2 | 返回ARG1和ARG2的算術運算和 |
ARG1 - ARG2 | 返回ARG1和ARG2的算術運算差 |
ARG1 * ARG2 | 返回ARG1和ARG2的算術運算乘積 |
ARG1 / ARG2 | 返回ARG1被ARG2除的運算商 |
ARG1 % ARG2 | 返回ARG1被ARG2除的算術餘數 |
STRING : REGEXP | 若是REGEXP匹配到了STRING中的某個模式,返回該模式匹配 |
match STRING REGEXP | 若是REGEXP匹配到了STRING中的某個模式,返回該模式匹配 |
substr STRING POS LENGTH | 返回起始位置爲POS(從1開始計數)、長度爲LENGTH個字符的子字符串 |
index STRING CHARS | 返回在STRING中找到CHARS字符串的位置;不然,返回0 |
length STRING | 返回字符串STRING的數值長度 |
+ TOKEN | 將TOKEN解釋成字符串,即便是個關鍵字 |
(EXPRESSION)) | 返回EXPRESSION的值 |
附錄:Linux退出狀態碼
狀態碼 | 描述 |
---|---|
0 | 命令成功結束 |
1 | 通用未知錯誤 |
2 | 誤用shell命令 |
126 | 命令不可執行 |
127 | 沒找到命令 |
128 | 無效退出參數 |
128+x | Linux信號x的嚴重錯誤 |
130 | 命令經過Ctrl+C終止 |
255 | 退出狀態碼越界 |
附錄:test命令的數值比較功能
比較 | 描述 |
---|---|
n1 -eq n2 | 檢查n1是否與n2相等 |
n1 -ge n2 | 檢查n1是否大於或等於n2 |
n1 -gt n2 | 檢查n1是否大於n2 |
n1 -le n2 | 檢查n1是否小於或等於n2 |
n1 -lt n2 | 檢查n1是否小於n2 |
n1 -ne n2 | 檢查n1是否不等於n2 |
附錄:test命令的字符串比較功能
比較 | 描述 |
---|---|
str1 = str2 | 檢查str1是否和str2相同 |
str1 != str2 | 檢查str1是否和str2不一樣 |
str1 < str2 | 檢查str1是否比str2小 |
str1 > str2 | 檢查str1是否比str2大 |
-n str1 | 檢查str1的長度是否非0 |
-z str1 | 檢查str1的長度是否爲0 |
附錄:test命令的文件比較功能
比較 | 描述 |
---|---|
-d file | 檢查file是否存在並是一個目錄 |
-e file | 檢查file是否存在 |
-f file | 檢查file是否存在並是一個文件 |
-r file | 檢查file是否存在並可讀 |
-s file | 檢查file是否存在並不是空 |
-w file | 檢查file是否存在並可寫 |
-x file | 檢查file是否存在並可執行 |
-O file | 檢查file是否存在並並屬當前用戶全部 |
-G file | 檢查file是否存在而且默認組與當前用戶相同 |
file1 -nt file2 | 檢查file1是否比file2新 |
file1 -ot file2 | 檢查file1是否比file2舊 |
附錄:通用的Linux命令選項
選項 | 描述 |
---|---|
-a | 顯示全部對象 |
-c | 生成一個計數 |
-d | 指定一個目錄 |
-e | 擴展一個對象 |
-f | 指定讀入數據的文件 |
-h | 顯示命令的幫助信息 |
-i | 忽略文本大小寫 |
-l | 產生輸出的長格式版本 |
-n | 使用非交互模式(批量) |
-o | 指定將全部輸出重定向到輸出文件 |
-q | 以安靜模式運行 |
-r | 遞歸地處理目錄和文件 |
-s | 以安靜模式運行 |
-v | 生成詳細輸出 |
-x | 排除某個對象 |
-y | 對全部問題回答yes |
附錄:Linux信號
信號 | 值 | 描述 |
---|---|---|
1 | SIGHUP | 掛起進程 |
2 | SIGINT | 終止進程 |
3 | SIGQUIT | 中止進程 |
9 | SIGKILL | 無條件終止進程 |
15 | SIGTERM | 可能的話終止進程 |
17 | SIGSTOP | 無條件中止進程,但不是終止進程 |
18 | SIGTSTP | 中止或者暫停進程,但不終止進程 |
19 | SIGCONT | 繼續運行中止的進程 |