实用Linux命令

下面是我整理的一些使用频率很高的Linux命令,像lsmv这种类型的命令的基本用法就不列在其中,特殊的用法可能会添加进来。持续更新中……

基本操作

常用的基础命令:

1
2
3
4
5
6
7
8
9
$ cd - # 切换到上一次的工作目录
$ Ctrl-R(keyboard) # 查找历史命令
$ cp -a /source/. /dest # 将一个目录下的所有文件拷贝到另一个目录
$ ln -s target soft_link # 为名为target的文件创建一个软链接,target在前
$ du -sh file_path # 查看文件夹的大小,不加s选项会列出每个子文件夹大小
# 在两个主机之间传输文件
$ scp [options] username1@source_host:dir1/file1 username2@dest_host:dir2/file2
# 查看系统安装的所有内核(rpm系)
$ rpm -qa | grep kernel | sort

进程管理

查看和管理进程的命令:

1
2
3
4
5
6
$ ps -ef # 查看系统中所有进程
$ top # 显示实时的系统状态
# 杀死一个进程
$ ps -ef | grep vim # 查看进程ID
krist 3271 2258 1 22:16 pts/1 00:00:00 vim package.json
$ kill -9 3271 # -9选项,杀死进程

压缩解压缩

使用tar进行压缩、解压缩时需要好几个选项一起使用,其实剖析一下几个常用选项,记忆起来就很简单了:

  • -c, –create:创建新压缩包
  • -t, –list:查看包的内容
  • -x, –extract:从包中提取文件
  • -f, –from=archive:指定包文件名
  • -r, –append:在末尾添加文件
  • -u, –update:更新原压缩包中的文件
  • -v, –verbose:详细列出处理的文件

下面几个选项和压缩包的类型有关:

  • -j:和bzip2相关的
  • -J, -xz:和xz相关的
  • -z:和gzip相关的
  • -Z:和compress相关的

有了上面的铺垫,很容易理解和记忆下面的命令:

1
2
3
4
5
6
7
8
9
10
11
12
# .tar文件
$ tar -vcf all.tar *.png # 将所有的png文件打包成名为all.tar的包,列出处理过的文件名
$ tar -vrf new.png all.tar # 将new.png增加到all.tar包中去,列出处理过的文件名
$ tar -vuf new.png all.tar # 更新all.tar包中的new.png文件,列出处理过的文件名
$ tar -tf png.tar # 列出png.tar包中包含的文件
$ tar -xf all.tar # 解出all.tar中所有的文件
# .gz, .bz2, .Z文件
$ tar -czf all.tar.gz *.png # 将所有的png文件打包成名为all.tar的包,并用gzip压缩,压缩包为all.tar.gz
$ tar -cjf all.tar.bz2 *.png # 将所有的png文件打包成名为all.tar的包,并用bzip2压缩,压缩包名为all.tar.bz2
$ tar -cZf all.tar.Z *.png # 将所有的png文件打包成名为all.tar的包,并用compress压缩,压缩包名为all.tar.Z
$ tar -xzvf all.tar.gz # 解压all.tar.gz
$ tar -xjvf all.tar.bz2 # 解压all.tar.bz2

文件查找

Linux的find命令在目录结构中搜索文件,并执行指定操作。命令的基本格式如下:

1
find pathname -options [-print -exec -ok ...]

可以通过各种option(如文件名、文件大小、文件类型等)来查找文件,这里就不多说了。后面的参数意义如下:

  • -print 将匹配的文件名打印出来
  • -exec 对匹配的文件执行该参数所给出的shell命令,末尾必须以分号;结尾,一般在分号前加上转义字符,相应命令的形式为cmd {} \; 其中花括号代表搜索出来的文件名
  • -ok 和-exec作用相同,每执行一个命令前,会给出提升让用户确认,更加安全

下面是一些例子:

1
2
3
4
5
$ find . -name "*.log" -print # 在当前目录查找以.log结尾的文件
$ find /tmp -perm 777 # 按照权限查找文件
$ find . -size +1000c 777 # 按照文件大小查找
$ find . -name "*.jpg" -exec mv {} ~ \; # 找到该目录下所有的jpg文件,拷贝到HOME目录下
$ find . -name '*.py' | xargs wc -l # 计算当前目录下代码总行数

find命令需要遍历路径,速度较慢。locate命令比find快很多,因为它不搜索具体目录,而是搜索一个包含所有本地文件信息的数据库。该数据库每天更新一次,但是使用前最好先使用updatedb命令手动更新一下。

网络相关

下面是常用的网络管理命令:

1
2
3
$ curl ifconfig.me # 查看自己的外网IP地址
$ netstat -npt # 查看所有TCP连接及其相关进程信息
$ sudo iftop -i eth0 # 监控eth0上的流量

参考

  1. Linux man pages
  2. tar压缩解压缩命令详解
  3. Ask Ubuntu
  4. 每天一个Linux命令
  5. find命令之exec
  6. 50 Most Frequently Used UNIX/Linux Commands