Linux System

命令

网络

ping:

1
ping -c 3 www.baidu.com # -c: count

nslookup:

1
2
# 默认 /etc/resolv.conf
nslookup - 8.8.8.8 # 指定ip

nc:

1
2
3
4
5
6
nc -z -v -w 5 chrisyy.top 20-50 # 端口扫描

# 传输文件
server: cat 1 | nc -l 12345
client: nc -n 127.0.0.1 12345 > 2
# 文件夹通过tar就行

wget:

1
2
--background 后台下载
-c

ssh:

1
2
ssh-keygen -t rsa
ssh-copy-id "-p port name@ip"

进程

uptime

1
2
3
4
5
chrisyy@ubuntu:~$ uptime
01:16:29 up 11 min, 1 user, load average: 0.22, 0.28, 0.28
# 如下同样
chrisyy@ubuntu:~$ cat /proc/loadavg
0.19 0.27 0.27 1/586 2956

vmstat

1
vmstat 1 4

系统

uname

1
uname -a

service

1
2
cd /etc/init.d/
ls -F # 以下为service掌握的服务,有些是可执行文件,有些事软链接

环境变量

1
2
3
4
ENVIRONMENT-VAL=VALUE
export ENVIRONMENT-VAL
# 这样只能在当前shell下,如果需要保留,在~/.bash_profile内同样修改即可
# . ~/.bash_profile 重新加载
1
env | grep ENVIRONMENT-VAL

./bashrc文件使用户登录时的环境变量与子shell的变量相互隔离,使用户具有很大的灵活度

Linux Shell

起步

sh 是第一种 Unix Shell

bash与sh是有区别的,两者是不同的命令,且bash是sh的增强版,而"[[]]"是bash脚本中的命令,因此在执行时,使用sh命令会报错,将sh替换为bash命令即可

不加./则会在 PATH 里面寻找

也可以通过参数传递给解释器从而运行。这种方式运行的脚本,不需要在第一行指定解释器信息。

多行注释

1
2
3
:<<EOF
...
EOF

参数传递:

获取第十个参数需要${10},以下是其他变量

image-20200715124200726

运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如expr:

1
2
val=`expr 2 + 2` 
注意:乘法需要反斜杠`\`

或者中括号:

1
2
val=$[1+2]
注意:此写法不需要反斜杠

关系运算符:

其中 e 表示的是 equal,t 表示 than,g 和 l 表示 greater 和 less。

但是更推荐在双中括号中书写。

如果出现[[: not found的情况,请使用bash作为解释器。

输出与重定向

echo

1
echo `date` 输出时间

printf

printf 命令模仿 C 程序库里的 printf() 程序,-表示左对齐,没有则表示右对齐

Here Document 是 Shell 中的一种特殊的重定向方式,用来将输入重定向到一个交互式 Shell 脚本或程序。

1
2
3
command << delimiter
document
delimiter

文件包含

1
2
3
. filename   # 注意点号(.)和文件名中间有一空格

source filename

评论