最近都需要在 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
Linux的常用的shell命令
1.目录命令:
ll /:查看根文件下的所有文件目录
2.帮助命令:
man ls与ls --help与info ls:(man ls:分屏显示;--help:全部加载,不完整;info ls:无用信息比较多)
3.基本操作和命令:
Ctrl+R和方向键中的上键:查找历时输入过的命令 Ctrl+C Ctrl+Z: 终止或者退出当前操作 字母键i:进入文本编辑模式(可以修改Linux操作系统的init相关设置) 编辑完成后按Esc键退出,然后如果确定保存修改并返回命令行界面输入命令-----:wq 如果不保存用命令并退出编辑界面----:q 保存并强制退出----:q! Shift+G 到文件末位 o:换行