1. 程式人生 > >linux常用命令【原創】

linux常用命令【原創】

例如 沒有 CI final reg 核數 最大 新建 esp

查看文件內容-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常用命令【原創】