linux常用命令【原創】
查看文件內容-while:
cat 1.txt|while read line;do echo $line;done
while read line; do echo $line; done <./1.txt
從日誌當中測試連接統計情況
while :; do tail -n 100 /app/nginx/web.log |cut -d -f 8|sort|uniq -c;sleep 5;done
統計文件代碼行數:
find . -type f -name "*.sh" | xargs wc -l
統計sh文件中含有lst字符串並降序排列
find . -type f -iname "*.sh"| xargs grep -c lst | grep -v ":0$" | sort -t : -k 2 -nr
找到當前文件夾下非jpg和JPG文件內容中的ab替換為cd
find . -type f -print |grep -v ".*\.\(jpg\|JPG\)" | xargs sed -i "s/ab/cd/g"
if/else:
exist=1;ip=192.168.0.1;port=3306;if [ ${exist} -eq 1 ]; then echo ${ip}:${port};fi
for:
for ip in 192.168.1.{1..255} ;do ping ${ip} -w 1 &> /dev/null && echo ${ip} is Alive;done
for ip in `cat iplist`;do scp config/${ip}.conf $ip:/home/shell/;done
for x in `cat 1.txt`; do echo $x;mkdir dir{0..2}{0..2}_$x; done
for i in `cat iplistr.ip`; do echo $i; ssh $i "supervisorctl start nginx";done
mysql相關:
socket=`ps -ef|grep mysql|grep -v grep|grep sock|awk ‘BEGIN{FS = "--"}{for (f=1; f <= NF; f+=1) {if ($f ~ /sock/) {print $f}}}‘|awk -F‘=‘ ‘{print $2}‘|grep 3306`;echo $socket
while :; do sleep 1;netstat -lanp|grep 3306|grep ESTABLISHED|awk ‘{print $5}‘|awk -F ‘:‘ ‘{print $1}‘|sort|uniq|wc -l|awk ‘BEGIN{a="‘$(date +%H:%M:%S)‘";}{printf "%s,%d\n",a,$1}‘ >> access_num.log;done
查看系統資源
取進程占用 cpu 最高的前10個進程
ps aux|head -1;ps aux|grep -v PID|sort -rn
-k +3|head
取進程占用內存(MEM)最高的前10個進程
ps aux|head -1;ps aux|grep -v PID|sort -rn
-k +4|head
查找系統占用磁盤最大的前十個文件
du -sk /*|sort -rn|head
排名前5的文件大小
find . -type f -exec ls -l -h {} \; | sort -nr -k 5 | head -n 5
查看CPU及硬盤大小
# 查看CPU型號
grep ‘model name‘ /proc/cpuinfo | head -1 | awk -F":" ‘{print $2}‘
# 查看物理CPU個數
grep ‘physical id‘ /proc/cpuinfo | sort -u | wc -l
# 查看邏輯CPU的個數
grep ‘processor‘ /proc/cpuinfo | sort -u | wc -l
# 查看磁盤大小
fdisk -l | grep ‘Disk /dev/xvd‘ | awk ‘{print $3}‘ | awk ‘{sum+=$1} END {print sum}‘
解釋
SUM += $1
sum默認初值為0。awk逐行處理,$1為每行的第一個字段,就是計算每行第一個字段的累加和。
END部分是處理完所有行後執行的。
print SUM 即打印最終的累加和
1.CPU
# 查看物理CPU個數
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每個物理CPU中core的個數(即核數)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看邏輯CPU的個數
cat /proc/cpuinfo| grep "processor"| wc -l
# 查看CPU信息(型號)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
# 總核數 = 物理CPU個數 X 每顆物理CPU的核數
# 總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超線程數
2、disk
查看磁盤大小
fdisk -l | grep ‘Disk /dev/xvd‘ | awk ‘{print $3}‘ | awk ‘{sum+=$1} END {print sum}‘
3、free -m
查看系統信息
date;uname -ar;
more /etc/redhat-release;
top -n 1|grep -E ‘Tasks|Mem|Swap‘;
df -kh;
free -m;
netstat -nltp;
cat /proc/net/sockstat;
cat /proc/cpuinfo|grep ‘physical id‘|sort -n|uniq -c;
cat /proc/cpuinfo|grep -E ‘vendor_id|model name|cpu MHz|cache size‘|sort -n|uniq -c;
getconf LONG_BIT;
/sbin/ifconfig|grep HWaddr|awk ‘{print $0,$4,$5}‘;
/sbin/ifconfig|grep inet|grep -v inet6|grep -v 127.0.0.1;
dmidecode |grep Product
date;uname -ar;more /etc/redhat-release;top -n 1|grep -E ‘Tasks|Mem|Swap‘;df -kh;free -m;netstat -nltp;cat /proc/net/sockstat;cat /proc/cpuinfo|grep ‘physical id‘|sort -n|uniq -c;cat /proc/cpuinfo|grep -E ‘vendor_id|model name|cpu MHz|cache size‘|sort -n|uniq -c;getconf LONG_BIT;/sbin/ifconfig|grep HWaddr|awk ‘{print $0,$4,$5}‘;/sbin/ifconfig|grep inet|grep -v inet6|grep -v 127.0.0.1;dmidecode |grep Product
iostat查看IO
iostat 3 3
iostat -d -x -k 1 10
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 1.56 28.31 7.84 31.50 43.65 3.16 21.82 1.58 1.19 0.03 0.80 2.61 10.29
sda 1.98 24.75 419.80 6.93 13465.35 253.47 6732.67 126.73 32.15 2.00 4.70 2.00 85.25
sda 3.06 41.84 444.90 54.08 14204.08 2048.98 7102.04 1024.49 32.57 2.10 4.21 1.85 92.24
可以看到磁盤的平均響應時間<5ms,磁盤使用率>80。磁盤響應正常,但是已經很繁忙了。
iostat
iostat -d -k 1 10 #查看TPS和吞吐量信息
iostat -d -x -k 1 10 #查看設備使用率(%util)、響應時間(await)應該低於5ms,如果大於10ms就比較大了。
iostat -c 1 10 #查看cpu狀態
Linux iostat監測IO狀態 - 翼動動空 的個人空間 - 開源中國社區
http://my.oschina.net/u/2294938/blog/673925
sed
替換
sed -i ‘s/SELINUX=enforcing/SELINUX=permissive/‘ /etc/selinux/config
文件5-10行的前面加#號
sed -i "5,10s/^/#/" host_slow.log
查找 00:10:34至00:10:38的日誌內容
cat server.out.20160114 |sed -n ‘/2016-01-13 00:10:34/,/2016-01-13 00:10:38/p‘
查看指定時間的日誌
sed -n ‘/2016-01-13 00:10:34/,/2016-01-13 00:10:38/p‘ server.out.20160114
sed用法,把空格和tab開頭的去除掉
sed ‘s/^[ t]*//g‘ 等於 sed ‘s/^[ \t]*//g
例子:grep ‘cpu cores‘ /proc/cpuinfo |uniq |awk -F : ‘{print $2}‘ |sed ‘s/^[ \t]*//g‘
find
刪除或移動文件
find . -type f -name *.log | xargs rm
find . -type f -name "*.sh" | xargs -i mv {} /home/shell
xargs與find經常結合來進行文件操作,平時刪日誌的時候只是習慣的去刪除,比如
# find . -type f -name "*.log" | xargs rm -rf *
就將以log結尾的文件刪除了,如果我想去移動或者復制就需要使用參數來代替了。
find . -type f -name "*.txt" | xargs -i cp {} /tmp/k/
請不要用此方法移動文件夾,會直接刪除文件夾
ls -ld phpframe-* -exec mv {} /backup \;
或
ls -ld phpframe-*|xargs mv /backup/
用xargs查詢,註意要有|,另此命令是分批處理之前查詢的結果
find . -perm 777|xargs ls -l
如果系統磁盤突然沒空間了,查找最近五天內更過的文件
find / -mtime -5
查看更改時間在5天前的文件
find / -mtime +5
根據文件內容來查找相關文件所在位置
find ./ -type f| xargs grep -i ‘dataSource‘
根據文件修改時間、名字復制到制定目錄
find ./ -mtime +120 -name "mysql-bin*"|xargs -n1 -i cp -a {} /home/mysqlbinlog-bak/mysql3306-binlog/
根據文件名後綴,刪除文件。例如刪除phd的文件
-rw-r--r--. 1 root root 662M Jun 14 10:29 heapdump.20160614.102831.29419.0004.phd
-rw-r--r--. 1 root root 662M Jun 14 10:29 heapdump.20160614.102831.29419.0006.phd
-rw-r--r--. 1 root root 662M Jun 14 10:29 heapdump.20160614.102831.29419.0007.phd
-rw-r--r--. 1 root root 662M Jun 14 10:30 heapdump.20160614.102831.29419.0008.phd
find ./ -iregex ".*\.phd"|xargs rm -rf
grep
查詢並輸出成功或失敗
grep ‘SELINUX=enforcing‘ /etc/selinux/config 2>&1 >/dev/null && print_PASS || print_FAIL
截取TYPE列的信息
blkid /dev/sda1 | awk -F"=" ‘{print $2}‘|awk ‘{print $2}‘
blkid /dev/sda1 | awk -F"=" ‘{print $2}‘|awk ‘{print $1}‘|cut -d"\"" -f2
bb0954a8-3507-4613-b4ee-5c5961c43a36
判斷磁盤大小
lsblk | grep sda1 | grep -qs ‘2.1G‘ && print_PASS || print_FAIL
變量賦值為一個命令運行的結果
mode=`ls -lh /root/foo.sh | awk ‘{print $1}‘`
查詢防火墻服務是否加入防火墻
firewall-cmd --list-all | grep services | grep -qsE ssh && print_PASS || print_FAIL
firewall-cmd --list-all | grep -qsE "rule family=\"ipv4\" source address=\"172.17.10.0/24\" service name=\"ssh\" reject" && print_PASS || print_FAIL
判斷服務是否起來
systemctl status httpd &>/dev/null && echo PASS || echo FAIL
查進程並殺掉
ps -ef|grep "/opt/openoffice4/program/soffice"|grep -v grep|grep -v grep|awk ‘{print $2}‘ | xargs kill
awk
查找document的selinux標簽
documentroot=`grep "DocumentRoot" /etc/httpd/conf.d/vhost-server0.conf | awk ‘{print $2}‘ | awk -F\" ‘{print $2}‘`
context=`ls -lZd $documentroot | awk -F: ‘{print $3}‘
查看文件權限
ls -lh /root/foo.sh | awk ‘{print $1}‘
顯示以字母t開頭的所有用戶信息
awk ‘/^t/{print $1}‘ /etc/passwd
顯示UID大於500的用戶信息
awk -F: ‘$3>=500{print $1,$3}‘ /etc/passwd
BEGIN/END
BEGIN/END,BEGIN在第一行被讀取前執行,END表示在最後一行匹配完再執行
示例1:統計每種shell使用的用戶的個數
# awk -F: ‘{shell[$NF]++}END{for(A in shell){print A,shell[A]}}‘ /etc/passwd
/bin/sync 1
/bin/bash 10
/sbin/nologin 34
示例2:統計每個TCP連接狀態的個數
# netstat -ant | awk ‘/^tcp/{STATE[$NF]++}END{for (s in STATE) print s,STATE[s]}‘
LISTEN 15
ESTABLISHED 1
示例3:統計日誌文件中每個IP地址的訪問量
awk ‘{counts[$1]++} END{for(ip in counts) print counts[ip],ip}‘ /var/log/httpd/access_log
cd /usr/local/nginx/logs
awk ‘{counts[$1]++} END{for(ip in counts) print counts[ip],ip}‘ access.log |sort -rn|head -n 30
cat access.log|sort|awk ‘$NF!~/-/ {print $1"," $NF}‘|uniq |awk -F , ‘{print $1}‘|uniq -c|sort -nr|head -20
awk可以截取多個字段
dir -l|awk ‘{print $3,$4,$9}‘
awk的NR用法
打印第二行第二項
[root@hchtest2 ~]# free -m | awk ‘NR==2 {print $2}‘
1878
You have new mail in /var/spool/mail/root
[root@hchtest2 ~]# free -m
total used free shared buffers cached
Mem: 1878 1804 73 0 73 293
-/+ buffers/cache: 1437 441
Swap: 1635 49 1586
打印第二行
cat /etc/issue.net | awk ‘NR==1 {print}‘
CentOS release 6.5 (Final)
[root@hchtest2 ~]# cat /etc/issue.net
CentOS release 6.5 (Final)
Kernel \r on an \m
查看內存信息
dmidecode|grep -P -A5 "Memory\s+Device"|grep Size
egrep
用egrep查找3項內容memory_limit、post_max_size、upload_max_filesize
cat php.ini|egrep "memory_limit|post_max_size|upload_max_filesize"
memory_limit = 512M
post_max_size = 100M
upload_max_filesize = 100M
查找java進程
ps -ef|grep java|egrep -o "[1-9]{4}"|head -n1
date
設置變量為3天前
[root@hchtest3 ~]# date +%F
2015-11-30
[root@hchtest3 ~]# date +%F -d "-3 days"
2015-11-27
[root@hchtest3 ~]# date +%Y-%m-%d -d "-3 days"
2015-11-27
時間輸入
date ‘+%F %r‘
2016-12-12 09:32:07 AM
setfacl
設置目錄/javasoft下的所有文件及文件夾都對ljun有讀寫權限
setfacl -R -m u:ljun:rwx /javasoft/
不加 -R遞歸,就只在 /javasoft裏有權限, /javasoft/123裏就沒有權限了
setfacl -m u:ljun:rwx /javasoft/
現有一目錄是虛擬機和linux共享的,但是每次程序調用新建的文件都發現沒有權限。
於是指定特定目錄及其子目錄下新建的文件或目錄對於用戶qhfz都有讀寫執行的權限
-R表示遞歸 -m表示設置文件acl規則
setfacl -R -m d:u:qhfz:rwx /data2/ResourceCase
setfacl -R -m d:u: ResourceCase:rwx /data2/ResourceCase
--刪除ACL規則使用-b
setfacl -R -b /data2/ResourceCase
nmap
nmap
查找網絡中所有活躍的主機
$ nmap -sn 10.42.0.0/24
-sn
- 是掃描的類型,這裏是 ping 方式掃描。默認上,Nmap 使用端口掃描,但是這種掃描會禁用端口掃描。10.42.0.0/24
- 是目標網絡,用你實際的網絡來替換
mount
掛載cifs
mount -t cifs -o username=andy,password=redhat //172.24.6.10/common /haha
cat
eof結束
利用cat輸入腳本,eof結束輸入
if [ ! -f LNMP+zabbix.repo ]; then
cat> /etc/yum.repos.d/LNMP+zabbix.repo <<‘EOF‘
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
EOF
fi
設置變量為一個查詢結果命令,並取出結果的某一列
#!/bin/bash
RESULT=$(cd /opt/mqm/bin
su mqm << remotessh
./runmqsc HUFFPMQ
dis qlocal(USKY.HUFFP.RESPONSE4) CURDEPTH;
end
exit
remotessh
)
VARA=$(echo $RESULT |grep -o "CURDEPTH([0-9]\+)"|grep -o "[0-9]\+")
#VARA=$(echo $RESULT | awk "/CURDEPTH\(([0-9]*)/" |grep -o "[0-9]\+")
echo $VARA
# cat << EOF > /tmp/3.txt
> aaaa
> bbbb
> cccc
> dddd
> EOF
創建500M的主分區
# echo -e "n\np\n1\n\n+500M\nw\n" | fdisk /dev/sdb &> /dev/null
\n:自動換行
-n, --number 對輸出的所有行編號
-b --number-nonblank 對非空輸出行編號
-T, --show-tabs 將跳 字符顯示為 ^I
[root@localhost ~]# cat -b
/etc/fstab 註:查看/etc/目錄下的profile內容,並且對非空白行進行編號,行號從1開始;
[root@localhost ~]# cat -n
/etc/profile 註:對/etc目錄中的profile的所有的行(包括空白行)進行編號輸出顯示;
ps
查看僵屍進程
ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]"
批量刪除僵屍進程
ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]"|awk ‘{print $2}‘|xargs kill -9
ps aux | less
vsz:進程所占用內存的總大小 以kb為單位
rss:進程所占用實際物理內存的大小 以kb為單位
lsof
查看端口是哪個進程占用
[root@hchtest3 nginx]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
haproxy 2200 nobody 4u IPv4 11716 0t0 TCP hchtest3:http (LISTEN)
top
load average: 0.01, 0.03, 0.05
cpu在1分鐘、5分鐘、15分鐘的平均負載值
平均負載值/cpu個數
大於1:cpu資源飽和
小於1:cpu使用正常
查看cpu個數:
# grep "model name" /proc/cpuinfo
model name : Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz
# grep "model name" /proc/cpuinfo | wc -l
1
top命令進程排序顯示
M:按內存占用百分比
P:按CPU占用百分比
T:按進程運行時間
set顯示環境變量
sar
查看CPU情況
sar 5 5
sar(System Activity Reporter系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁盤I/O、CPU效率、內存使用狀況、進程活動及IPC有關的活動等。
輸出項說明:
CPU:all 表示統計信息為所有 CPU 的平均值。
%user:顯示在用戶級別(application)運行使用 CPU 總時間的百分比。
%nice:顯示在用戶級別,用於nice操作,所占用 CPU 總時間的百分比。
%system:在核心級別(kernel)運行所使用 CPU 總時間的百分比。
%iowait:顯示用於等待I/O操作占用 CPU 總時間的百分比。
%steal:管理程序(hypervisor)為另一個虛擬進程提供服務而等待虛擬 CPU 的百分比。
%idle:顯示 CPU 空閑時間占用 CPU 總時間的百分比。
1. 若 %iowait 的值過高,表示硬盤存在I/O瓶頸
2. 若 %idle 的值高但系統響應慢時,有可能是 CPU 等待分配內存,此時應加大內存容量
3. 若 %idle 的值持續低於1,則系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU 。
要判斷系統瓶頸問題,有時需幾個 sar 命令選項結合起來
懷疑CPU存在瓶頸,可用 sar -u 和 sar -q 等來查看
懷疑內存存在瓶頸,可用 sar -B、sar -r 和 sar -W 等來查看
懷疑I/O存在瓶頸,可用 sar -b、sar -u 和 sar -d 等來查看
linux sar 命令詳解 - Cai‘s - 開源中國社區
http://my.oschina.net/caiyuan/blog/119012
CPU使用情況
sar -u -o 60 5
在所有的顯示中,我們應主要註意%wio和%idle,%wio的值過高,表示硬盤存在I/O瓶頸,%idle值高,表示CPU較空閑,如果%idle值高但系統響應慢時,有可能是CPU等待分配內存, 此時應加大內存容量。%idle值如果持續低於10,那麽系統的CPU處理能力相對較低,表明系統中最需要解決的資源是CPU。
磁盤使用情況
sar -d 5 3
懷疑CPU存在瓶頸,可用sar -u 和sar -q來看,懷疑I/O存在瓶頸,可用sar -b、sar -u和sar-d來看
sar詳解(linux/unix通用) | 旺旺知識庫
http://www.toxingwang.com/linux-unix/2027.html
SAR 命令詳解-dbconf-ChinaUnix博客
http://blog.chinaunix.net/uid-23177306-id-2531032.html
sar命令--Linux 性能分析 - richard_2010 - ITeye技術網站
http://richard-2010.iteye.com/blog/1271044
uniq
uniq -c刪除重復值
netstat -an|grep 8080 |grep FIN_WAIT2| grep -E ‘::ffff:‘| awk -F: ‘{print $8}‘|sort -n|uniq -c
尋找會員號,並把重復次數倒序排列出來
cat server.out.20160216 |grep "HUBTM LOGIN"|grep member_id|awk -F‘,‘ ‘{print $2}‘|awk -F‘=‘ ‘{print $2}‘|sort | uniq -c | sort -k1,1nr | head -10
sort
指令各部分的功能:
sort: 對單詞進行排序
uniq -c: 顯示唯一的行,並在每行行首加上本行在文件中出現的次數
sort -k1,1nr: 按照第一個字段,數值排序,且為逆序
head -10: 取前10行數據
iptables防火墻策略
service iptables save
//將規則保存在/etc/sysconfig/iptables文件裏
查看防火墻策略
iptables -L -n --line-number
iptables -vnL
service iptables status
查看防火墻nat策略
iptables -L -t nat
刪除INPUT的第24條策略
iptables -D INPUT 24
-I插入策略放到最上面(加入防火墻策略使用這個)
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8097 -j ACCEPT
-A增加一條規則到最後
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8097 -j ACCEPT
-D刪除策略
iptables -D INPUT -p tcp -m state --state NEW -m tcp --dport 8017 -j ACCEPT
ifconfig
臨時綁定IP
ifconfig eth0:0 10.72.32.185 netmask 255.255.255.0
eth0綁定網卡
/sbin/ip addr add "10.70.72.126/24" dev eth0
刪除臨時IP
/sbin/ip addr del "10.70.72.126/24" dev eth0
netstat
Linux 常用netstat命令 實例講解
這是一個十分常用的命令,可以讓你實時了解到雲主機當前的狀態,例如:常見的80連接數量,以及按一些排序,來檢查是否被攻擊?查看time_wait和syn連接數量等等。
1.查看所有80端口的連接數
netstat -nat|grep -i "80"|wc -l
2.對連接的IP按連接數量進行排序
netstat -ntu | awk ‘{print $5}‘ | cut -d: -f1 | sort | uniq -c | sort -n
3.查看TCP連接狀態
netstat -nat |awk ‘{print $6}‘|sort|uniq -c|sort -rn
netstat -n | awk ‘/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}‘
netstat -n | awk ‘/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}‘
netstat -n | awk ‘/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}‘
netstat -n |awk ‘/^tcp/ {print $NF}‘|sort|uniq -c|sort -rn
netstat -ant | awk ‘{print $NF}‘ | grep -v ‘[a-z]‘ | sort | uniq -c
4.查看80端口連接數最多的20個IP
netstat -anlp|grep 80|grep tcp|awk ‘{print $5}‘|awk -F: ‘{print $1}‘|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk ‘/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A,i}‘ |sort -rn|head -n20
5.用tcpdump嗅探80端口的訪問看看誰最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." ‘{print $1"."$2"."$3"."$4}‘ | sort | uniq -c | sort -nr |head -20
6.查找較多time_wait連接
netstat -n|grep TIME_WAIT|awk ‘{print $5}‘|sort|uniq -c|sort -rn|head -n20
7.找查較多的SYN連接
netstat -an | grep SYN | awk ‘{print $5}‘ | awk -F: ‘{print $1}‘ | sort | uniq -c | sort -nr | more
tar
不解壓查看壓縮文件內容
tar tvf apache-tomcat-8.0.36.tar.gz
gzip、gunzip
Linux壓縮保留源文件的方法:
gzip –c filename > filename.gz
Linux解壓縮保留源文件的方法:
gunzip –c filename.gz > filename
設置環境變量
echo "export JAVA_HOME=/usr/local/jdk1.7.0_15" >>~/.bashrc
. ~/.bashrc
echo $JAVA_HOME
-a 和 &&的區別
註意-a 和 &&的區別,-a用[]裏,&&都可以
[root@hchtest3 ~]# if [[ -f /root/while.sh || -f /root/pid.sh ]];then echo exist;fi
exist
[root@hchtest3 ~]# if [[ -f /root/while.sh -a -f /root/pid.sh ]];then echo exist;fi
-bash: syntax error in conditional expression
-bash: syntax error near `-a‘
[root@hchtest3 ~]# if [ -f /root/while.sh -a -f /root/pid.sh ];then echo exist;fi
exist
ls
ls -F -R /etc/
層級顯示目錄下文件、及文件夾
轉載請註明出處
linux常用命令【原創】