Linux常用命令备忘
command 备忘
Linux常用命令备忘
网络相关的命令
请参考:这里
命令 | 说明 | 示例 |
---|---|---|
env | 查看环境变量 | env, env | grep PATH |
常用命令
grep
grep(global regular expression), 全局正则表达式查找
基础语法:
1
2
3
$ grep [options] pattern [file]
# 或者
$ command | grep pattern
常用options:
-i
: 忽略大小写-v
: 反向查找,只显示不匹配的行-n
: 显示行号-c
: 只显示匹配行的数量-r
: 递归查找
关于pattern:
- 常规用法:
1
2
3
$ grep "hello" file.txt
# 查找file.txt中包含hello的行,等价于
$ cat file.txt | grep hello
- 通配符:
.
: 匹配任意一个字符*
: 匹配0个或多个字符1
$ grep "he.*o" *.txt # 在txt文件中查找he和o之间有0个或多个字符的行
[]
: 匹配中括号中的任意一个字符[^]
: 匹配不在中括号中的任意一个字符^
: 匹配行首$
: 匹配行尾\
: 转义字符\b
: 匹配单词边界\B
: 匹配非单词边界\d
: 匹配数字\D
: 匹配非数字\s
: 匹配空白字符\S
: 匹配非空白字符\w
: 匹配单词字符\W
: 匹配非单词字符|
: 或()
: 分组?
: 匹配0个或1个字符{n}
: 匹配n个字符{n,}
: 匹配至少n个字符{n,m}
: 匹配n到m个字符
- 使用正则表达式:
1
2
$ grep -e "he.*o" *.txt # 使用基本正则表达式
$ grep -E "he.*o" *.txt # 使用扩展正则表达式
ps
ps(process status), 查看进程状态
基础语法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ ps [options]
[options]:
-e: 显示所有进程
-f: 显示完整格式
-l: 长格式显示
-u: 显示用户信息
-x: 显示没有控制终端的进程
-a: 显示所有用户的进程
-x: 显示没有控制终端的进程
-r: 显示运行中的进程
-a: 显示所有进程
-u: 显示用户信息
-x: 显示没有控制终端的进程
-r: 显示运行中的进程
-a: 显示所有进程
-u: 显示用户信息
-x: 显示没有控制终端的进程
-r: 显示运行中的进程
ps -ef | grep process_name # 查找进程
alias
alias, 别名
基础语法:
1
2
3
4
5
6
$ alias [name]='command' # 设置别名
$ alias # 查看所有别名
$ unalias [name] # 删除别名
$ alias ll='ls -l' # 设置ll别名
nohup
no hang up, 使得命令在后台运行,不受终端影响,但是会将输出重定向到nohup.out文件 通常与
&
结合使用 例如:nohup <command> &
1
$ nohup <command> & # 使得command在后台运行
&
后台运行
1
$ <command> & # 使得command在后台运行, 但不会将输出重定向到nohup.out文件
scp
secure copy, 安全拷贝, 基于ssh的文件传输工具
基础语法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ scp [options] source target
# 常用options:
-r: 递归拷贝
-P port: 指定端口,未指定则默认22
-p: 保留文件属性,包括修改时间、权限等
-v: 显示详细调试信息, verbose
-C: 启用压缩传输,减少传输时间
-F ssh_config: 指定ssh配置文件,会直接传递给ssh,默认为~/.ssh/config
-i identity_file: 指定私钥文件, 会直接传递给ssh,默认为~/.ssh/id_rsa
-l limit: 限制传输速度,单位为kbps
# 常用示例:
$ scp -P 11451 -rC /path/to/source user@host:/path/to/target # 从本地递归压缩拷贝到远程,指定端口11451;host为远程主机
$ scp -P 11451 -rC user@host:/path/to/source /path/to/target # 从远程递归压缩拷贝到本地,指定端口11451
Shell脚本
基础格式
1
2
3
#! /bin/bash # shebang 指定解释器
# other code ...
注意:
- 确保脚本有执行权限
需要在当前shell下生效,可以使用
source
或者.
执行脚本:1 2
$ source script.sh $ . script.sh
变量
赋值:
1
foo=bar # 注意等号两边不能有空格
使用:
1
2
3
$foo
# 或者
${foo}
数组/字典
数组:
1
2
3
4
5
6
7
8
9
10
11
# 定义数组
arr=(1 2 3 4 5)
# 获取数组元素
echo ${arr[0]}
# 获取数组长度
echo ${#arr[@]}
# 获取数组所有元素
echo ${arr[@]}
字典:
1
2
3
4
declare -A dict=([key1]=value1 [key2]=value2)
# 获取字典元素
echo ${dict[key1]}
条件判断
hints: fi是if的倒写, esac是case的倒写
1
2
3
4
5
6
7
if [ condition ]; then
# code
elif [ condition ]; then
# code
else
# code
fi
case语句:
1
2
3
4
5
6
7
8
9
10
11
case $var in
pattern1)
# code
;;
pattern2)
# code
;;
*)
# code
;;
esac
循环
for in:
1
2
3
4
for var in 1 2 3 4 5
do
# code
done
while:
1
2
3
4
while [ condition ]
do
# code
done
本文由作者按照 CC BY 4.0 进行授权