Core Utilities (简体中文)
| 简介 |
|---|
| 关于GNU/Linux系统上所谓“核心”工具的技巧。 |
| 相关 |
| Bash (简体中文): improved Bourne shell, Linux standard |
| Zsh (简体中文): improved Bourne/C shell, very good as interactive shell |
| General Recommendations (简体中文) |
| GNU Project |
本文涉及GNU/Linux 系统的所谓的 "核心" 工具,就像 less, ls, 和 grep,包括了"但不限于"以上集成于GNU coreutils 中的工具。下文提供了颇为丰富的软件技巧和有帮助的其他信息。
Contents |
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参数可以使创建目录的消息更为详细。
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)是一条专门解析或替换文本的命令。
这里有一系列现成的示范
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