这里列举了我常用的一些Linux命令行下的技巧,希望对大家有帮助。
即第一个文件的第一行接第二个文件的第一行,然后是第一个文件的第二行和第二个文件的第二行,举例: a.txt
1
2
3
b.txt
a
b
c
期望的结果:
1
a
2
b
3
c
命令:
paste -d '\n' a.txt b.txt > c.txt
\r
一般在Windows平台创建的文件行尾有多余的\r
,在Linux命令行操作的时候会报错。
命令:
# method 1:
tr -d '\r' < infile > outfile
# method 2:
cat infile |sed 's/\r$//g' >> outfile
例如我想创建dir1,dir2, … dir100的目录。 命令:
mkdir dir{1..100} # 创建目录dir1, dir2, dir3, ... dir100
mkdir {1..100} # 创建目录1,2,3,... 100
命令:
# 删除空目录
find /path/to/target/dir -type d -empty -exec rmdir {} \;
# 删除空文件
find /path/to/target/dir -type f -empty -exec rm {} \;
在rm后面加--
,然后对文件名加双引号。
命令:
rm -- "--abc"
rm -- ")abc"
如要搜索当前目录中包含include
的所有文件。
命令:
grep -RIn "include" * # R:递归搜索,I:区分大小写,n:显示行号
命令:
# 只列出目录
ls -l /path/to/dir |grep '^d'
# 只列出文件
ls -l /path/to/dir |grep '^-'
命令:
ls /pat/to/dir |wc -l
如文件a.txt如下:
10
12
13
1
2
15
16
期望得到的结果文件b.txt:
1
2
10
12
13
15
16
命令:
sort -n a.txt > b.txt
命令:
ldconfig -v |grep libname
apt list --installed # 不加--installed 选项则会列出源里面的所有包名
iostat
watch -n 1 nvidia-smi # -n 后面的参数表示刷新的秒数
如文件a.txt如下:
ustc-123
ustc-222
ustc-bcd
fdu-222
pku-222
现在要删除不包含ustc
的所有行,得到b.txt如下:
ustc-123
ustc-222
ustc-bcd
命令:
sed '/ustc/!d' a.txt > b.txt
sed '/ustc/d' a.txt > b.txt
sudo nmap -sP 192.168.110.0/24
rsync -aPhv src --exclude "excluded_dir" user@host:~/dst
rsync命令的详细用法可以参考这里
例如我想在本地屏幕上显示在远程服务器上执行某条命令的结果。
ssh user@host command