# Core Utilities (简体中文)

翻译状态： 本文是英文页面 Core_Utilities 的翻译，最后翻译时间：2013-06-21，点击这里可以查看翻译后英文页面的改动。

相关文章

- Bash
- Zsh
- 常用建议
- GNU Project

本文涉及GNU/Linux 系统的所谓的 "核心" 工具，就像 less, ls, 和 grep，包括了"但不限于"以上集成于GNU coreutils 中的工具。下文提供了颇为丰富的软件技巧和有帮助的其他信息。

## cat

cat (catenate)是一件能够连接并显示多文件的标准Unix工具。

- cat并不内置于shell，不过若您追求高性能，您会发现在很多情况下改用重定向就很方便得许多，例如编写脚本。事实上，`$ < file`的效果就如同`$ cat file`一样。

- 按照以下结构可直接在某文件添加多行文字：

    $  cat << EOF >> path/file
     first line
     ...
     last line
     EOF

- 如果您希望能以倒读顺序显示文件内容，有个工具叫 tac (cat reversed).

## cron

cron 是在 Unix-like 操作系统中的一种计划任务。

参见 cron。

## grep

grep (来自 ed的 g/re/p，全局／正则 表达式／打印） 是最初给 Unix 写的命令行文字搜索工具，`grep`命令在文件或标准输入里搜索符合指定正则表达式模式的行，并把结果打印到标准输出。

- 记住，grep 能直接处理文件，所以用`$ grep pattern file`结构代替`$ cat file | grep pattern`即可。

- 若要 grep 集群服务器（VCS）的源代码，请使用专门的 Perl 工具ack。可访问official web site。

### 彩色化输出

除了美观用途以外，grep的彩色化输出也对学习regexp和grep功能很有用。

请在您的shell配置文件添加以下内容以启用默认的彩色化输出，适用于Bash：

    ~/.bashrc

    alias grep='grep --color=auto'

您还可以直接设置GREP_OPTIONS 环境变量 [1] ，不过这有可能会影响到那些用到grep [2]的脚本：

    export GREP_OPTIONS='--color=auto'

如果要显示行数，添加"-n"参数即可：

    alias grep='grep -n --color=auto'

`GREP_COLORS`环境变量其实可以设定成默认之外的。

## ifconfig

ifconfig (interface configuration)是在Unix-like操作系统上，专门通过命令行界面（CLI）或系统配置脚本进行配置、控制、排列TCP/IP网络界面参数的一件系统管理工具。

不过现已被弃用，为ip所代替。

## less

less是一个对文本文件内容进行分页显示的终端程序，它和其他的分页显示程序如`more`和`pg`相似，但`less`提供了更高级的界面和更多的功能。[3]

### 通过环境变量设置的彩色化输出

请在您的shell配置文件添加：

    ~/.bashrc

    export LESS=-R
    export LESS_TERMCAP_me=$(printf '\e[0m')
    export LESS_TERMCAP_se=$(printf '\e[0m')
    export LESS_TERMCAP_ue=$(printf '\e[0m')
    export LESS_TERMCAP_mb=$(printf '\e[1;32m')
    export LESS_TERMCAP_md=$(printf '\e[1;34m')
    export LESS_TERMCAP_us=$(printf '\e[1;32m')
    export LESS_TERMCAP_so=$(printf '\e[1;44;1m')

值随您所愿修改，请参照：ANSI escape code，

### 直接通过包装来彩色化输出

您可直接开启less内置的代码高亮。先安装好source-highlight再在您的Shell配置文件里添加以下：

    ~/.bashrc

    export LESSOPEN="| /usr/bin/source-highlight-esc.sh %s"
    export LESS='-R '

经常使用命令行界面的用户可以安装lesspipe：

    # pacman -S lesspipe

用户可以使用以下less命令列出一个压缩包里的文件列表：

    $ less compressed_file.tar.gz

    ==> use tar_file:contained_file to view a file in the archive
    -rw------- username/group  695 2008-01-04 19:24 compressed_file/content1
    -rw------- username/group   43 2007-11-07 11:17 compressed_file/content2
    compressed_file.tar.gz (END)

`lesspipe`还被赋予`less`对文件而不仅是压缩包进行交互的能力，从而成为打开某一种文件的一个新工具（比如用来代替html2text查看html文件。

安装完`lesspipe`后需重新登录以激活其功能，或者运行

    source /etc/profile.d/lesspipe.sh

### 用Vim代替

Vim (visual editor improved)有内置了某脚本，可直接查看文本文件、压缩包或目录的内容。在您的shell配置文件添加以下即可：

    ~/.bashrc

    alias less='/usr/share/vim/vim73/macros/less.sh'

## ls

ls是一个Unix和类Unix系统中列出目录里的文件的一个命令。

可以使用一个简单的命令别名启用彩色输出功能，`~/.bashrc`文件应该已经有一句从`/etc/skel/.bashrc`复制过来的指定别名命令：

    alias ls='ls --color=auto'

以下步骤可以进一步改进`ls`的彩色输出功能，比如损坏的符号链接显示为红色，把以下内容添加到`~/.bashrc`，然后重新登录，或者把脚本source一下：

    eval $(dircolors -b)

## man

man (manual page)是常见于Unix-like操作系统的一种在线软件文档的格式，内容涉及了计算机程序（包括库或系统调用），常见标准或常规，甚至还有抽象概念。请阅读Man Pages。

## mkdir

mkdir (make directory)是一条创建目录的命令。若需递归地创建一系列目录，就要用到 -p参数了。已经十分熟悉这原理的高级用户也可直接设为内置参数：

    alias mkdir='mkdir -p -v'

-v参数可以使创建目录的消息更为详细。

Note: 如果您仅仅只是想建个临时目录，也许用mktemp (make termporary)更好: `$ mktemp -p`.

## mv

mv (move)是一条移动或重命名文件和目录的命令。使用这命令的风险可不小，请务必小心。

    alias mv=' timeout 8 mv -iv'

这命令别名可以延迟mv 到8秒后才生效，或是当删除三个以上的文件就会进行确认。

## rm

rm (remove)是一条删除文件或目录的命令。它同样十分危险，使用时请提高警觉：

    alias rm=' timeout 3 rm -Iv --one-file-system'

这种命令别名可延迟rm到3秒后才生效， 或是当删除三个以上的文件就会进行确认，或是限于只在同一个文件系统生效。 若您想在删除多文件时一一确认，用`-I`代替`-i`即可。

## sed

sed (stream editor)是一条专门解析或替换文本的命令。

这里有一系列现成的示范

Note: awk更为优秀，甚至Perl语言也可以。

## seq

seq (sequence)是一条专门排列数字的命令。可以按照Wikipedia上进行练习。

## shred

shred是一条更安全的删除命令，尽管如此也要小心点。

    alias shred=' timeout 3 shred -v'

这种命令别名可延迟shred到3秒后才生效， 或是当删除三个以上的文件就会进行确认。

## sudo

Sudo (as superuser do)是Unix-like操作系统上的一件允许用户以其他用户的权限（一般是超级用户或root）来运行用户的程序，请阅读Sudo。

## See also

- A sampling of coreutils , part 2 , part 3 - Overview of commands in coreutils

Categories:

- System administration (简体中文)
- Command shells (简体中文)