最近都需要在 Linux 系统下开发,所以经常需要在终端中进行操作。Linux 有很多 shell 命令可以帮助我们完成任务,但不常使用的话就会忘记掉。
本篇作为命令备忘录,我会将实际工作当中用到的命令记录下来,并长期保持更新。
1.which
which 用于查找一个文件,并返回绝对路径,查找的目录范围由系统的 PATH 指定。
由于 Linux 中一切皆文件,所以 which 指定更多的是查找系统中有没有这个命令。
比如,查找 ls 命令,我们可知它的可执行文件的位置
which ls
/bin/ls
2.ln
ln 是一个简单但却非常实用的命令,它的作用是为某个文件或者文件夹建立链接。
命令语法
ln [参数][源文件或目录][目标文件或目录]
链接有软链接和硬链接两种,我们一般用软链接。
ln -s test.txt ../test1.txt
将当前目录中的 test.txt 文件链接称为上一级目录的 test1.txt 文件。这样,其他程序访问 test1.txt 就如访问 test.txt 一样。
3.tee
tee 命令是我个人非常喜爱的一个命令。
之前做 Android 开发,特别是源码编译的时候,经常在终端一瞬间就会打印无数条 log 信息,光靠肉眼是不行的,一个比较好的方法就是用命令保存起来。
另外,用 find 命令查找文件时,如果文件过多,也可以用 tee 来帮忙。
tee 命令可以接受标准输入,并输出到标准输出,同时保存到对应的文件。
标准输入值得是终端的键盘输入,比如 c++ 的 cin,标准输出就是终端的输出,比如 c++ 的 cout。
语法
tee [-ai][--help][--version][文件...]
参数 a 代表在后面添加内容而不是覆盖。
tee tmp
hello
hello
world
world
我在终端输入 tee tmp
接着我输入 hello,终端响应 hello
我输入 world,终端响应 world。
然后,我通过 cat tmp
查看 tmp 文件,它的结果如下:
hello
world
这说明 tee 命令准确将标准输入保存到指定的 tmp 文件了。
4.locate
locate
我也非常喜欢用,用它来快速查找。它是查数据库,而不是一个个文件真实查,所以,速度比较快。
比如,我想查找系统有没有 libpng.so.
我只需要这样
locate libpng.so
/home/frank/anaconda3/lib/libpng.so
/home/frank/anaconda3/pkgs/libpng-1.6.34-hb9fc6fc_0/lib/libpng.so
/home/frank/anaconda3/pkgs/libpng-1.6.37-hbc83047_0/lib/libpng.so
/usr/lib/x86_64-linux-gnu/libpng.so