Linux-常用命令
# curl
- 发送GET请求
curl http://example.com/file
- 发送POST请求
curl -d "param1=value1¶m2=value2" http://example.com/file
- 发送JSON数据
curl -H "Content-Type: application/json" -X POST -d '{"key1":"value1", "key2":"value2"}' http://example.com/file
- 下载文件
# 下载文件并重命名
curl -o filename http://example.com/file
# 下载文件并保留服务器文件名
curl -O http://example.com/file
# 下载文件到指定目录
curl -o /path/filename http://example.com/file
2
3
4
5
6
7
- 上传文件
curl -F "file=@filename" http://example.com/file
# wget
- 下载文件
# 下载文件并重命名
wget -O filename http://example.com/file
# 下载文件到指定目录
wget -P /path http://example.com/file
# 下载文件并保留服务器文件名
wget http://example.com/file
# 断点续传
wget -c http://example.com/file
2
3
4
5
6
7
8
9
# 桌面环境开启与关闭
# ubuntu
- 开启桌面环境
systemctl start gdm
- 关闭桌面环境
systemctl stop gdm
# 查找
# find
格式 find [path] [option] [action]
[path]
:指定查找的目录[option]
:查找选项-name pattern
:按文件名查找,支持使用通配符 * 和 ?-type type
按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等-size [+-]size[cwbkMG]
:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)-maxdepth levels
:指定查找的最大深度
[action]
:查找的动作-print
:打印文件名-delete
:删除文件
使用示例:
find . -depth -type d -name 'target' -exec rm -rf {} +
:删除当前目录下所有名为 target 的目录-depth
:按深度优先搜索,避免出现目录被删除,进入子目录时报错目录不存在的情况-type d
:查找目录-exec
:执行指定的命令{}
:表示查找到的文件+
:表示将查找到的文件作为参数传递给命令,一次执行多个文件
find /path -type f -maxdepth 2 -name '*.log' -exec cp {} /path2 \;
:将 /path 目录下所有后缀为 .log 的文件复制到 /path2 目录-maxdepth 2
:查找深度为 2\;
:表示将查找到的文件作为参数传递给命令,一次执行一个文件
find /path -type f -name '*.log' -exec grep 'pattern' {} \;
:查找 /path 目录下所有后缀为 .log 的文件中包含 pattern 的行find . -depth -type d -name "$target_dir" -print0 | xargs -0 rm -rf
:删除指定目录,包括深层次的子目录-print0
:打印文件名,以空字符作为分隔符xargs -0
:将输入转换为命令行参数,以空字符作为分隔符
find . -maxdepth 1 -type d ! -path . -exec sh -c 'cd "{}" && git pull' \;
! -path .
:排除当前目录-exec
:执行指定的命令sh -c 'cd "{}" && git pull'
:切换到目录并执行 git pull 命令
# 文件传输
# scp
# 从本地主机复制文件到远程主机
scp /path/file user@host:/path
# 从远程主机复制文件到本地
scp user@host:/path/file /path
# 从远程主机复制文件到本地并重命名
scp user@host:/path/file /path/filename
# 传输文件夹
scp -r /path user@host:/path
# 指定端口
scp -P 22 /path/file user@host:/path
2
3
4
5
6
7
8
9
10
11
# rsync
rsync -avzP /path/file user@host:/path
- a(归档):这个选项会保留文件的属性(例如时间戳、权限等),并且会递归复制目录。
- v(详细):这个选项会显示传输过程中的详细信息。
- z(压缩):这个选项会在传输过程中压缩数据,可以加快传输速度。
- P(进度):这个选项会显示文件传输的进度信息。
指定端口
rsync -avzP -e 'ssh -p 22' /path/file user@host:/path
# 压缩文件
# zip
# 压缩文件
zip -r [压缩文件名].zip [文件夹名称]
-r
选项表示递归压缩文件夹
# 解压文件
unzip [压缩文件名].zip
# tar
# 打包文件
tar -czvf [压缩文件名].tar.gz [文件夹名称]
2
- c 选项表示创建新的归档文件。
- z 选项表示使用 gzip 来压缩归档文件。
- v 选项表示在创建归档文件时显示详细信息。
- f 选项表示后面跟着的是归档文件的名称。
# 解压文件
tar -xzvf [压缩文件名].tar.gz
- x 选项表示解压缩归档文件。
指定解压后的文件名
tar -xzvf [压缩文件名].tar.gz -C /path
# awk
# 语法
awk options 'pattern {action}' file
options
:用于控制 awk 的行为-F [分隔符]
:指定输入字段的分隔符,默认是空格。使用这个选项可以指定不同于默认分隔符的字段分隔符。-v [变量名]=[值]
:设置 awk 内部的变量值。可以使用该选项将外部值传递给 awk 脚本中的变量-f [脚本文件]
:指定一个包含 awk 脚本的文件。这样可以在文件中编写较大的 awk 脚本,然后通过 -f 选项将其加载
pattern
:用于匹配输入数据的模式。如果省略,则 awk 将对所有行进行操作。action
:在匹配到模式的行上执行的动作。如果省略,则默认动作是打印整行。file
:文件名
# 示例
- 打印文件的第一列
awk '{print $1}' file
- kill进程
ps -ef | grep [进程名] | grep -v grep | awk '{print $2}' | xargs kill -9
- 从docker swarm服务获取镜像版本
docker service ls | grep $service_name: | awk '{print $5}' | awk -F:v '{print $2}'
# sed
# 语法
# 示例
- 替换文件中的字符串
sed -i 's/old/new/g' file
- 删除文件中的空行
sed -i '/^$/d' file
- 删除文件中的指定行
sed -i '3d' file
# xargs
xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
a file 从文件中读取参数
e flag 当xargs分析到含有flag这个标志的时候就停止
p 当每次执行一个argument的时候询问一次用户。
n num 每次传递给命令的参数个数为num个。
t 先打印命令再执行。
l num 一次读取num行作为命令参数。
d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。