条件判断

假设/tmp/test.js存在,而/tmp/test.jsx文件不存在,则执行以下命令(注意中括号两端的空格):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$ [ -e /tmp/test.js ]
$ echo $? # 0,表示上一条命令执行成功,即文件存在
$ [ -e /tmp/test.jsx ]
$ echo $? # 1,非零值,上一条命令执行失败
# 我们可以执行下面的命令从而得到更加语义化的结果
$ [ -e /tmp/test.js ] && echo 'exists ' || echo 'not exists'

# 判断文件权限
$ [ -w /tmp/test.js ] && echo 'can write' || echo 'can not write'

文件1 -ef 文件2 # 判断两个文件的Inode是否一致,可理解为判断2个文件是否是同一个文件,用于判断硬链接是很好的方法

$ touch t
$ ln t t2
$ [ /tmp/t -ef /tmp/t2 ] && echo yes || echo no # yes

# 整数比较
$ [ 12 -ge 10 ] && echo more || echo less # more

# 字符串判断
$ name=canglaoshi
$ [ -z "$name" ] && echo "empty" || echo "not empty" # not empty
$ a=1
$ b=2
$ [ "$a" == "$b" ] && echo equal || echo not # 字符串相等的判断,not

# 多重条件判断
逻辑与:判断1 -a 判断2
$ a=20
$ [ -n "$a" -a "$a" -gt 10 ] && echo "a存在且a不小于10" || echo no # a存在且a不小于10

*注意:*脚本中的变量加双引号.

if语句

参见coding.net

case语句

参见coding.net

循环

for

参见coding.net

while和until

参见coding.net

Redis报错MISCONF Redis is configured to save RDB snapshots

参见stackoverflow,编辑redis配置文件中的logfile目录为一个可写的目录。其实最简单的方法是用root权限启动redis。

Linux网络监控

我们常用netstat命令查看网络状况(netstat -tunlp | grep 22,查看端口占用的进程),但是使用ss命令更快。nc命令可以模拟客户端和服务器。

使用time命令可以为命令计时。例如time sleep 5将计算出sleep 5这条命令的执行时间为5.002s。

设置静态IP

1
2
$ ifconfig eth0 192.168.1.155 netmask 255.255.255.0
$ route add default gw 192.168.1.1

mac查找特定端口的应用程序lsof -i | grep 8080