概述
这里列举了我常用的一些Linux命令行下的技巧,希望对大家有帮助。
1. 按行合并2个文件
即第一个文件的第一行接第二个文件的第一行,然后是第一个文件的第二行和第二个文件的第二行,举例:
a.txt
b.txt
期望的结果:
命令:
1
| paste -d '\n' a.txt b.txt > c.txt
|
2. 删除行尾多余的\r
一般在Windows平台创建的文件行尾有多余的\r
,在Linux命令行操作的时候会报错。
命令:
1 2 3 4 5
| tr -d '\r' < infile > outfile
cat infile |sed 's/\r$//g' >> outfile
|
3. 批量创建目录
例如我想创建dir1,dir2, … dir100的目录。
命令:
1 2
| mkdir dir{1..100} mkdir {1..100}
|
4. 删除特定目录的所有空文件或空目录
命令:
1 2 3 4
| find /path/to/target/dir -type d -empty -exec rmdir {} \;
find /path/to/target/dir -type f -empty -exec rm {} \;
|
5. 删除名字中包含特殊字符的文件或目录
在rm后面加--
,然后对文件名加双引号。
命令:
1 2
| rm -- "--abc" rm -- ")abc"
|
6. 查找目录下所有文件中包含特定字符串的文件
如要搜索当前目录中包含include
的所有文件。
命令:
7. ls命令只列出目录/文件
命令:
1 2 3 4
| ls -l /path/to/dir |grep '^d'
ls -l /path/to/dir |grep '^-'
|
8. 统计目录下的文件和目录数
命令:
9. 按数字顺序对文件每行排序
如文件a.txt如下:
期望得到的结果文件b.txt:
命令:
10. 显示当前系统安装的lib文件的版本
命令:
1
| ldconfig -v |grep libname
|
11. 显示系统所有安装的软件包
12. 查看硬盘读写情况
13. 动态地查看某个命令的输出结果
14. 删除某个文件中所有不包含某个字段的行
如文件a.txt如下:
1 2 3 4 5
| ustc-123 ustc-222 ustc-bcd fdu-222 pku-222
|
现在要删除不包含ustc
的所有行,得到b.txt如下:
1 2 3
| ustc-123 ustc-222 ustc-bcd
|
命令:
1
| sed '/ustc/!d' a.txt > b.txt
|
15. 删除某个文件中包含特定字段的所有行
1
| sed '/ustc/d' a.txt > b.txt
|
16. 查找局域网里面所有的联网机器的IP
1
| sudo nmap -sP 192.168.110.0/24
|
17. 不同机器间同步数据
1
| rsync -aPhv src --exclude "excluded_dir" user@host:~/dst
|
rsync命令的详细用法可以参考这里
18. 通过ssh在远端执行命令
例如我想在本地屏幕上显示在远程服务器上执行某条命令的结果。