收藏好!大厂工作中用到的超实用linux进阶命令组合和快捷键(持续更新中)
命令
- grep获取目录下某一类型文件的对应参数
grep -rn --include=*.conf "srcip"

说明:此命令可以查看当前文件夹下面(含子文件夹)的包含srcip参数的行,并且限定了文件类型为conf结尾的文件,避免搜出太多不相关内容
- sed备份并修改文件
sed -i.bak "s/variable=.*/variable=具体值/g" 123.conf
说明:sed -i.bak会在修改时创建一个同名带.bak后追的备份文件,再也不用担心改错了。
- 批量修改某一目录下的所有配置文件中的某个参数
grep -rnl --include=*.conf "srcip" |xargs -i sed -i.bak 's/srcip=.*/srcip=121.162.168.124/g' {}
说明:把当前目录下所有conf文件里面的srcip参数修改为121.162.168.124,这个在srcip参数是一行时可以用
- 将目录下的所有txt文件转换为unix格式
find ./ -name "*.txt" | xargs -i dos2unix {}
说明:可以将txt文件从windows格式转为unix格式,用于把windows桌面上的文件和文件夹传到linux服务器上使用出现乱码语法错误的情况。
- 删除大量文件
chown vmax:root /ubas/tmp/ # 这个文件夹是个空目录,修改前要修改权限和要删除的/opt/vmax权限一致
chmod 755 /ubas/tmp/
rsync -a --delete --progress /ubas/tmp/ /opt/vmax
说明:这条命令用于删除/opt/vmax下面的所有内容,注意严格"/"一定要和语句一致。rsync删除比rm -rf命令速度更快,用于删除大量文件时。
- 查看当前文件夹下面的文件夹大小并排序
du -h --max-depth=1 |sort -hr

说明:限定了文件夹只有一层--max-depth=1 ,因此可以直观看到每个文件夹大小
- 查找大于1G的文件
find /home -size +1G |xargs du -h
- 将docker里面的文件夹拷贝出来
docker cp 容器ID:/root/123.gz ./
说明:docker cp 不支持正则表达式,如果拷贝多个文件可以提前把文件打包
- 删除指定数量的文件
find /path/to/directory -type f -maxdepth 1 -name "abc" | head -n 10 | xargs rm -f;
说明:删除路径下名称包含abc的文件,只删除10个
- 查找某一时间段的日志
cat test.log |awk '/2024-09-20 16:04:48/,/2024-09-23 20:29:22/'
- 反复执行某一个命令查看差异
watch -n 1 "xxx"
说明:1秒钟执行一次引号里面的命令,主要配合一些其他命令使用。
- 获取shell脚本所在的当前路径
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
说明:用于不同的脚本调用,并且脚本里面写的一些路径为相对路径时。
- 获取文件完整路径(带文件名称)
realpath "xxx"
- 获取当前路径
pwd
- 查看端口号(以22端口为例)
netstat -tunlp | grep 22
- 查看进程(以java为例)
ps -ef | grep java
- 查看进程启动时间(以java为例)
ps -eo pid,lstart,command | grep java
- tar压缩文件
tar -zcf abc.tar.gz abc.txt
- tar解压文件
tar -zxf abc.tar.gz
- zip压缩文件
zip abc.zip abc.txt
- unzip解压文件
unzip -q abc.gz
- cp复制备份文件夹 -r递归复制 -p保留原有的用户属主属组权限
cp -rp base base_bak

- 从源文件夹拷贝文件到目标文件夹,只拷贝目标文件夹没有的文件(rsync对文件夹后面的/比较严格,如果带斜杠都带斜杠,如果不带都不带)
rsync -av --update /home/user/source/ /home/user/destination/
- 从源文件夹拷贝文件到目标文件夹,保留目标文件夹里面的原有权限,对于目标文件夹没有的文件是根据系统的umask创建的权限(使用背景:源文件夹是从linux上打包压缩后到windows系统下解压修改的再打包的,这个时候压缩包里面的文件权限已经和最开始时不一致了,因此拷贝时需要考虑权限问题,否则直接拷过去可能有些脚本或者命令没有对应权限导致服务有问题)
rsync -av --no-perms --no-owner --no-group /home/user/source/ /home/user/destination/
- 模拟磁盘占用,dd命令创建固定大小的文件(例子为创建一个10M大小的mydata文件 1M*10=10M)
dd if=/dev/zero of=mydata bs=1M count=10
- sftp连接到远程服务器和下载文件
# 连接到远程sftp服务器
sftp -oPort=51001 damsftp@x.x.x.x
# 上传文件到sftp服务器
sftp> put local_file.txt remote_file.txt
sftp> put -r local_directory remote_directory
下载文件到本地
sftp> get remote_file.txt local_file.txt
sftp> get -r remote_directory local_directory
快捷键
Ctrl+←:快速移动光标
Ctrl+a:移动光标到最前面
Ctrl+e:移动光标到最后面
Ctrl+u:删除光标之前的内容
Ctrl+k:删除光标之后的内容
Ctrl+w:删除光标前一段内容(以空格作为分隔)
Tab:命令联想
vim编辑
:set nu 显示行号
:123 跳到123行
/123 当前光标向后面查找123
?123 当前光标向前面查找123
shift+g 移动到文末
shift+d 删除光标到行尾内容
gg 移动到开头
u 撤销上一次修改
dd 删除光标所在的一行

浙公网安备 33010602011771号