操作系统原生命令 ongoing
包管理
监测
网络
未分类
通过 find 查找指定路径
TIP
单独使用 find 命令, 将会列出当前路径下的所有文件 (和文件夹).
如果想要列出当前路径下所有文件, 可以使用 find -type f 命令.
sh
# 按照文件名搜索
find /path/to/search -name "filename"
# 指定搜索的最大深度, 例如这里的 3 层深度
find /path/to/search -maxdepth 3
# 按照文件类型搜索
find /path/to/search -type f # 搜索普通文件
find /path/to/search -type d # 搜索目录
find /path/to/search -type l # 搜索符号链接
# 按照文件大小搜索
find /path/to/search -size +10M # 搜索大于 10 MB 的文件
find /path/to/search -size -1G # 搜索小于 1 GB 的文件
# 按修改时间搜索
find /path/to/search -mtime -7 # 搜索最近7天内被修改过的文件
find /path/to/search -mtime +30 # 搜索超过30天前被修改过的文件
# 搜索时排除某些路径, 例如这里排除了 ./exclude/ 路径
find /path/to/search -name "*.jpg" -not -path "./exclude/*"借助 scp 命令与服务器传输文件
TIP
scp 可以理解为 ssh + cp.
即借助 ssh 协议, 实现类似于本地环境中 cp 命令的功能.
sh
# 上传本地文件到服务器
scp [local-path] [username]@[servername]:[remote-path]
# 把本地 /var/www/nice.txt 文件上传到 192.168.0.101 这台服务器上的 /var/www/ 路径下
scp /var/www/nice.txt root@192.168.0.101:/var/www/sh
# 从服务器下载文件到本地
scp [username]@[servername]:[remote-path] <localpath>
# 把 192.168.0.101 上的 /var/www/test.txt 文件下载到本地 /var/www/ 路径下
scp root@192.168.0.101:/var/www/test.txt /var/www/借助 netstat 查看被使用的端口
sh
netstat -tlpn # 查看当前所有tcp端口
netstat -tulpn # 查看当前所有端口, 包括 tcp 和 udp
netstat -tulpn | grep 80 # 查看所有80端口使用情况用户与权限
使用 su 命令切换用户
最常用的场景是通过 sudo su 命令切换至 root 用户.
另外如果使用 - 或 -l 选项, 就会作为新用户的 login shell:
采用目标用户的环境变量, 并进入目标用户的 home 路径.
sh
# 进入 /root 路径, 并使用 root 用户的环境变量
sudo su -
# 进入 /home/yusong 路径, 并使用 yusong 用户的环境变量
sudo su -l yusong
# 通过 -s 选项来指定 shell 的类型
sudo su -l yusong -s /bin/sh文本处理
使用 sed 命令修改文件
以下命令中单引号内是一个替换语法 (和 vim 的替换语法基本一样).
含义是: 将第一行 1s 的行首 ^ 替换为想要插入的文字并换行 \n.
sh
# 在文件顶部顶部插入一行
sed -i "1s/^/想要插入的文字\n/" [filename]sh
# 另外在 macOS 中运行 sed 命令时略有不同, 需要额外增加一对引号
sed -i "" "1s/^/想要插入的文字\n/" [filename]通过 tr 简单修改文本
sh
# 删除文本中的换行符
cat file-path | tr -d "\n"
# 将连续空格字符压缩为一个空格字符
cat file-path | tr -s " "
# 将制表符替换为四个空格
cat file-path | tr "\t" " "安全性
通过 base64 编码与解码
sh
# 编码 (加密)
echo "xxx" | base64
# 解码 (解密)
echo "xxx" | base64 -d例如 Kubernetes 中的 Secret 对象中的敏感数据就是通过 base64 编码的.
如果想要知道原始内容是什么, 只需要使用解码命令 base64 -d.
使用 openssl 处理加密证书
sh
# 使用 rsa 算法生成私钥
openssl genpkey -algorithm RSA -out private.key
# 也可以使用此命令, 更简短
openssl genrsa -out private.key
# 生成自签名的证书
openssl req -new -x509 -key private.key -out certificate.pem
# 查看证书信息
openssl x509 -in certificate.pem -text -noout
# 生成 CSR (Certificate Signing Request)
openssl req -new -key private.key -out csr.pem在生成自签名证书或 CSR 时, 得到的证书默认失效时间的为 30 天, 可以通过 -day 来设置.
另外还需要通过命令行交互, 填写好几条信息, 如果嫌麻烦, 可以通过 -subj 来设置, 例如:
sh
# -subj 的参数含义
# /C - Country
# /ST - State
# /L - Locality
# /O - Organization
# /OU - Organizational Unit
# /CN - Common Name
openssl req -new -key private.key -out csr.pem \
-subj "/CN=example.com/O=Example Organization/C=US"也可以借助 openssl 生成随机数, 这是个比较独立的功能.
虽然随机数生成手段丰富, 但是 openssl 毕竟是原生命令, 用着方便.
sh
# 生成执行长度的随机数, 并做 base64 编码
openssl rand -base64 [number]
# 例如 base64 转换前长度为 15 的随机数
openssl rand -base64 15