Linux常用命令/工具(三)

本文简单介绍如下Linux命令或工具的功能,具体使用方法请参考工具或命令的文档:

1.软件包管理   2.存储媒介   3.查找文件   4.grep与正则表达式


  • 软件包管理

包管理工具

Debian-Style dpkg apt-get, aptitude
Red Hat -Style rpm yum


软件包查找工具

Debian apt-get update; apt-cache search search_string
RedHat yum search search_string

例如:搜索一个 yum 资源库来查找 emacs 文本编辑器,使用以下命令:

yum search emacs


软件包安装命令

Debian apt-get update; apt-get install package_name
Red Hat yum install package_name

例如:从一个 apt 资源库来安装 emacs 文本编辑器:

apt-get update; apt-get install emacs


底层软件包安装命令

Debian dpkg --install package_file
Red Hat rpm -i package_file

例如:如果已经从一个并非资源库的网站下载了软件包文件 emacs-22.1-7.fc7-i386.rpm, 则可以通过这种方法来安装它:

rpm -i emacs-22.1-7.fc7-i386.rpm

注意:因为这项技术使用底层的 rpm 程序来执行安装任务,所以没有运行依赖解析。 如果 rpm 程序发现缺少了一个依赖,则会报错并退出。


软件包删除命令

Debian apt-get remove package_name
Red Hat yum erase package_name

例如:从 Debian 风格的系统中卸载 emacs 软件包:

apt-get remove emacs


软件包更新命令

Debian apt-get update; apt-get upgrade
Red Hat yum update

例如:更新安装在 Debian 风格系统中的软件包:

apt-get update; apt-get upgrade


底层软件包升级命令

Debian dpkg --install package_file
Red Hat rpm -U package_file

例如:把 Red Hat 系统中所安装的 emacs 的版本更新到软件包文件 emacs-22.1-7.fc7-i386.rpmz 所包含的 emacs 版本:

rpm -U emacs-22.1-7.fc7-i386.rpm


列出所安装的软件包命令

Debian dpkg --list
Red Hat rpm -qa


软件包状态命令

Debian dpkg --status package_name
Red Hat rpm -q package_name

例如:确定是否 Debian 风格的系统中安装了这个 emacs 软件包:

dpkg --status emacs


查看软件包信息命令

Debian apt-cache show package_name
Red Hat yum info package_name

例如:查看 Debian 风格的系统中 emacs 软件包的说明信息:

apt-cache show emacs


包文件识别命令

Debian dpkg --search file_name
Red Hat rpm -qf file_name

例如:在 Red Hat 系统中,查看哪个软件包安装了/usr/bin/vim 这个文件

rpm -qf /usr/bin/vim


  • 存储媒介

mount – 挂载一个文件系统或查看挂载的文件系统列表


umount – 卸载一个文件系统


fsck – 检查和修复一个文件系统


fdisk – 分区表控制器


mkfs – 创建文件系统


fdformat – 格式化一张软盘


dd — 把面向块的数据直接写入设备

格式:dd if=input_file of=output_file [bs=block_size [count=blocks]]

例如:dd if=/dev/sdb of=flash_drive.img将一个驱动器的内容复制到一个普通文件中

注:误输入 if 或 of 的规范可能会清除磁盘


genisoimage (mkisofs) – 创建一个 ISO 9660的映像文件


wodim (cdrecord) – 清除可重写的CD-RW数据或把数据写入CD-RW媒介


md5sum – 计算 MD5检验码


  • 查找文件

locate/mlocate/slocate – 通过名字来查找文件


find – 在目录层次结构中搜索文件

例如:输出家目录列表:find ~,使用 wc 程序来计算出文件的数量:find ~ | wc -l


xargs – 从标准输入生成和执行命令行如find ~ -type f -name 'foo*' -print | xargs ls -l这里我们看到 find 命令的输出被管道到 xargs 命令,反过来,xargs 会为 ls 命令构建 参数列表,然后执行 ls 命令


find可通过应用选项,测试条件,和操作来完成搜索

  • find 命令选项

-depth:指导 find 程序先处理目录中的文件,再处理目录自身。当指定-delete 行为时,会自动应用这个选项。


-maxdepth levels:当执行测试条件和行为的时候,设置 find 程序陷入目录树的最大级别数

-mindepth levels:在应用测试条件和行为之前,设置 find 程序陷入目录数的最小级别数。

-mount:指导 find 程序不要搜索挂载到其它文件系统上的目录。

-noleaf:指导 find 程序不要基于搜索类 Unix 的文件系统做出的假设,来优化它的搜索。


  • 测试条件

-cmin n:匹配的文件和目录的内容或属性最后修改时间正好在 n 分钟之前。 指定少于 n 分钟之前,使用 -n,指定多于 n 分钟之前,使用 +n。

-cnewer file:匹配的文件和目录的内容或属性最后修改时间早于那些文件。

-ctime n:匹配的文件和目录的内容和属性最后修改时间在 n*24小时之前。

-empty:匹配空文件和目录。

-group name:匹配的文件和目录属于一个组。组可以用组名或组 ID 来表示。

-iname pattern:就像-name 测试条件,但是不区分大小写。

-inum n:匹配的文件的 inode 号是 n。这对于找到某个特殊 inode 的所有硬链接很有帮助。

-mmin n:匹配的文件或目录的内容被修改于 n 分钟之前。

-mtime n:匹配的文件或目录的内容被修改于 n*24小时之前。

-name pattern:用指定的通配符模式匹配的文件和目录。

-newer file:匹配的文件和目录的内容早于指定的文件。当编写 shell 脚本,做文件备份时,非常有帮助。 每次你制作一个备份,更新文件(比如说日志),然后使用 find 命令来决定自从上次更新,哪一个文件已经更改了。

-nouser:匹配的文件和目录不属于一个有效用户。这可以用来查找 属于删除帐户的文件或监测攻击行为。

-nogroup:匹配的文件和目录不属于一个有效的组。

-perm mode:匹配的文件和目录的权限已经设置为指定的 mode。mode 可以用 八进制或符号表示法。

-samefile name:相似于-inum 测试条件。匹配和文件 name 享有同样 inode 号的文件。

-size n:匹配的文件大小为 n。

-type c:匹配的文件类型是 c。

-user name:匹配的文件或目录属于某个用户。这个用户可以通过用户名或用户 ID 来表示。


例如:查找所有文件名匹配 通配符模式“*.JPG”和文件大小大于1M 的文件:find ~ -type f -name "*.JPG" -size +1M | wc -l


其中文件类型:b(块设备文件)、c(字符设备文件)、d(目录)、f(普通文件)、l(符号链接)


  • find 命令的逻辑操作符

-and:如果操作符两边的测试条件都是真,则匹配。可以简写为 -a。 注意若没有使用操作符,则默认使用 -and。

-or:若操作符两边的任一个测试条件为真,则匹配。可以简写为 -o。

-not:若操作符后面的测试条件是真,则匹配。可以简写为一个感叹号(!)。

()把测试条件和操作符组合起来形成更大的表达式。这用来控制逻辑计算的优先级。 默认情况下,find 命令按照从左到右的顺序计算。经常有必要重写默认的求值顺序,以得到期望的结果。 即使没有必要,有时候包括组合起来的字符,对提高命令的可读性是很有帮助的。注意 因为圆括号字符对于 shell 来说有特殊含义,所以在命令行中使用它们的时候,它们必须 用引号引起来,才能作为实参传递给 find 命令。通常反斜杠字符被用来转义圆括号字符。


  • 几个预定义的 find 命令操作

-delete:删除当前匹配的文件。

-ls:对匹配的文件执行等同的 ls -dils 命令。并将结果发送到标准输出。

-print:把匹配文件的全路径名输送到标准输出。如果没有指定其它操作,这是 默认操作。

-quit:一旦找到一个匹配,退出。



  • grep与正则表达式

grep - 在文本文件中查找一个指定的正则表达式,并把匹配行输出到标准输出

grep选项

-i:忽略大小写。不会区分大小写字符。也可用--ignore-case 来指定。

-v:不匹配。通常,grep 程序会打印包含匹配项的文本行。这个选项导致 grep 程序 只会不包含匹配项的文本行。也可用--invert-match 来指定。

-c:打印匹配的数量(或者是不匹配的数目,若指定了-v 选项),而不是文本行本身。 也可用--count 选项来指定。

-l:打印包含匹配项的文件名,而不是文本行本身,也可用--files-with-matches 选项来指定。

-L:相似于-l 选项,但是只是打印不包含匹配项的文件名。也可用--files-without-match 来指定。

-n:在每个匹配行之前打印出其位于文件中的相应行号。也可用--line-number 选项来指定。

-h:应用于多文件搜索,不输出文件名。也可用--no-filename 选项来指定。


参考:《The Linux Command Line

你可能感兴趣的:(Linux基础)