Difference between revisions of "Core utilities (简体中文)"

From ArchWiki
Jump to: navigation, search
(Translate all to Chinese)
Line 1: Line 1:
[[Category:Software (简体中文)]]
+
[[Category:System administration (简体中文)]]
 +
[[Category:Command shells (简体中文)]]
 
[[Category:简体中文]]
 
[[Category:简体中文]]
 
[[en:Core Utilities]]
 
[[en:Core Utilities]]
 
{{Article summary start|简介}}
 
{{Article summary start|简介}}
{{Article summary text|关于GNU/Linux上所谓“核心”工具的技巧。}}
+
{{Article summary text|关于GNU/Linux系统上所谓“核心”工具的技巧。}}
 
{{Article summary heading|相关}}
 
{{Article summary heading|相关}}
{{Article summary wiki|Commandline Tools}}
+
{{Article summary wiki|Commandline Tools (简体中文)}}
 +
{{Article summary wiki|Bash (简体中文)}}: improved Bourne shell, Linux standard
 +
{{Article summary wiki|Zsh (简体中文)}}: improved Bourne/C shell, very good as interactive shell
 
{{Article summary wiki|General Recommendations (简体中文)}}
 
{{Article summary wiki|General Recommendations (简体中文)}}
 
{{Article summary wiki|GNU Project}}
 
{{Article summary wiki|GNU Project}}
 
{{Article summary end}}
 
{{Article summary end}}
  
本文关于 GNU/Linux 系统的所谓的 "核心" 工具,例如 '''less''', '''ls''', 和 '''grep'''。本文包括但不限于这些包含在 GNU {{Pkg|coreutils}} 包中的工具。下面是关于这些工具的一些小技巧和其他有帮助的信息。如果每个部分太详细,请切分成独立的文章。
+
本文涉及GNU/Linux 系统的所谓的 "核心" 工具,就像 '''less''', '''ls''', 和 '''grep''',包括了"但不限于"以上集成于GNU {{Pkg|coreutils}} 中的工具。下文提供了颇为丰富的软件技巧和有帮助的其他信息。如果某节段过于连篇累牍,请另起新章。
 +
 
 +
== cat ==
 +
 
 +
[[Wikipedia:cat_(Unix)|cat]] (''catenate'')是一件能够连接并显示多文件的标准Unix工具。
 +
 
 +
* '''cat'''并不内置于shell,不过若您追求高性能,您会发现在很多情况下改用重定向就很方便得许多,例如编写脚本。事实上,{{ic|$ < ''file''}}的效果就如同{{ic|$ cat ''file''}}一样。
 +
 
 +
* 按照以下结构可直接在某文件添加多行文字:
 +
 
 +
  cat << EOF >> ''path/file''
 +
''first line''
 +
...
 +
''last line''
 +
EOF
 +
 
 +
* 如果您希望能以倒读顺序显示文件内容,有个工具叫 '''tac''' (''cat'' reversed).
  
 
==grep==
 
==grep==
 
[[Wikipedia:grep|grep]]是最初给Unix写的命令行文字搜索工具,{{ic|grep}}命令在文件或标准输入里搜索符合指定正则表达式模式的行,并把结果打印到标准输出。
 
[[Wikipedia:grep|grep]]是最初给Unix写的命令行文字搜索工具,{{ic|grep}}命令在文件或标准输入里搜索符合指定正则表达式模式的行,并把结果打印到标准输出。
 +
* 记住,grep能直接处理文件,所以用{{ic|$ grep ''pattern'' ''file''}}结构代替{{ic|$ cat ''file'' <nowiki>|</nowiki> grep ''pattern''}}即可。
  
{{ic|grep}}的彩色输出,除了很美观以外,还对学习正则表达式{{ic|regexp}}和{{ic|grep}}命令功能很有用。
+
* 若要grep集群服务器(VCS)的源代码,请使用专门的Perl工具{{Pkg|ack}}。可访问[http://beyondgrep.com/ official web site]。
  
要使用grep的默认颜色设置,把一下内容加入{{ic|~/.bashrc}}:
+
=== 彩色化输出 ===
alias grep='grep --color=auto'
+
  
可以使用{{ic|GREP_COLORS}}环境变量指定成别的颜色样式。
+
除了美观用途以外,'''grep'''的彩色化输出也对学习[[Wikipedia:regexp|regexp]]和'''grep'''功能很有用。
 +
 
 +
请在您的shell配置文件添加以下内容以启用默认的彩色化输出,适用于[[Bash]]:
 +
{{hc|~/.bashrc|2=alias grep='grep --color=auto'}}
 +
您还可以直接设置'''GREP_OPTIONS''' [[Environment Variables|环境变量]] [http://www.gnu.org/software/grep/manual/html_node/Environment-Variables.html] ,不过这有可能会影响到那些用到'''grep''' [http://brainstorm.ubuntu.com/idea/24141/]的脚本:
 +
export GREP_OPTIONS='--color=auto'
 +
如果要显示行数,添加"''-n''"参数即可:
 +
alias grep='grep -n --color=auto'
 +
 
 +
{{ic|GREP_COLORS}}环境变量其实可以设定成默认之外的。
 +
 
 +
== ifconfig ==
 +
 
 +
[[Wikipedia:ifconfig|ifconfig]] (''interface configuration'')是在Unix-like操作系统上,专门通过命令行界面(CLI)或系统配置脚本进行配置、控制、排列TCP/IP网络界面参数的一件系统管理工具。
 +
 
 +
不过现已被弃用,为[[Configuring_Network|ip]]所代替。
  
 
==less==
 
==less==
 
[[Wikipedia:less (Unix)|less]]是一个对文本文件内容进行分页显示的终端程序,它和其他的分页显示程序如{{ic|more}}和{{ic|pg}}相似,但{{ic|less}}提供了更高级的界面和更多的功能。[http://www.greenwoodsoftware.com/less/faq.html]
 
[[Wikipedia:less (Unix)|less]]是一个对文本文件内容进行分页显示的终端程序,它和其他的分页显示程序如{{ic|more}}和{{ic|pg}}相似,但{{ic|less}}提供了更高级的界面和更多的功能。[http://www.greenwoodsoftware.com/less/faq.html]
  
把以下内容添加到{{ic|~/.bashrc}},可以使less具有彩色显示功能:
+
=== 通过环境变量设置的彩色化输出 ===
export LESS="-R"
+
 
 +
请在您的shell配置文件添加:
 +
 
 +
{{hc|~/.bashrc|2=
 +
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')
 +
}}
 +
 
 +
值随您所愿修改,请参照:[[Wikipedia:ANSI_escape_code#Colors|ANSI escape code]],
 +
 
 +
=== Colored output through wrappers ===
 +
 
 +
您可直接开启'''less'''内置的代码高亮。先安装好{{Pkg|source-highlight}}再在您的Shell配置文件里添加以下:
 +
{{hc|~/.bashrc|<nowiki>
 +
export LESSOPEN="| /usr/bin/source-highlight-esc.sh %s"
 +
export LESS='-R '
 +
</nowiki>}}
  
 
经常使用命令行界面的用户可以安装{{Pkg|lesspipe}}:
 
经常使用命令行界面的用户可以安装{{Pkg|lesspipe}}:
Line 41: Line 97:
 
</nowiki>}}
 
</nowiki>}}
  
{{ic|lesspipe}}还赋予{{ic|less}}对文件而不仅是压缩包进行交互的能力,从而成为打开某一种文件的一个新工具(比如用来代替{{Pkg|html2text}}查看html文件。
+
{{ic|lesspipe}}还被赋予{{ic|less}}对文件而不仅是压缩包进行交互的能力,从而成为打开某一种文件的一个新工具(比如用来代替{{Pkg|html2text}}查看html文件。
  
 
安装完{{ic|lesspipe}}后需重新登录以激活其功能,或者运行
 
安装完{{ic|lesspipe}}后需重新登录以激活其功能,或者运行
 
  source {{ic|/etc/profile.d/lesspipe.sh}}
 
  source {{ic|/etc/profile.d/lesspipe.sh}}
 +
 +
[[Vim]] (''visual editor improved'')有内置了某脚本,可直接查看文本文件、压缩包或目录的内容。在您的shell配置文件添加以下即可:
 +
{{hc|~/.bashrc|2=alias less='/usr/share/vim/vim73/macros/less.sh'}}
  
 
==ls==
 
==ls==
Line 54: Line 113:
 
以下步骤可以进一步改进{{ic|ls}}的彩色输出功能,比如损坏的符号链接显示为红色,把以下内容添加到{{ic|~/.bashrc}},然后重新登录,或者把脚本source一下:
 
以下步骤可以进一步改进{{ic|ls}}的彩色输出功能,比如损坏的符号链接显示为红色,把以下内容添加到{{ic|~/.bashrc}},然后重新登录,或者把脚本source一下:
 
  eval $(dircolors -b)
 
  eval $(dircolors -b)
 +
 +
== man ==
 +
 +
[[Wikipedia:Man page|man]] (''manual page'')是常见于Unix-like操作系统的一种在线软件文档的格式,内容涉及了计算机程序(包括库或系统调用),常见标准或常规,甚至还有抽象概念。请阅读[[Man Pages]]。
 +
 +
== mkdir ==
 +
 +
[[Wikipedia:mkdir_(Unix)|mkdir]] (''make directory'')是一条创建目录的命令。若需递归地创建一系列目录,就要用到 ''-p''参数了。已经十分熟悉这原理的高级用户也可直接设为内置参数:
 +
alias mkdir='mkdir -p -v'
 +
''-v''参数可以使创建目录的消息更为详细。
 +
{{Note|如果您仅仅只是想建个临时目录,也许用'''mktemp''' (''make termporary'')更好: {{ic|$ mktemp -p}}.
 +
}}
 +
 +
== mv ==
 +
 +
[[Wikipedia:mv_(Unix)|mv]] (''move'')是一条移动或重命名文件和目录的命令。使用这命令的风险可不小,请务必小心。
 +
alias mv=' timeout 8 mv -iv'
 +
这命令别名可以延迟'''mv''' 到8秒后才生效,或是当删除三个以上的文件就会进行确认。
 +
 +
== rm ==
 +
 +
[[Wikipedia:rm_(Unix)|rm]] (''remove'')是一条删除文件或目录的命令。它同样十分危险,使用时请提高警觉:
 +
alias rm=' timeout 3 rm -Iv --one-file-system'
 +
这种命令别名可延迟'''rm'''到3秒后才生效, 或是当删除三个以上的文件就会进行确认,或是限于只在同一个文件系统生效。
 +
若您想在删除多文件时一一确认,用{{ic|-I}}代替{{ic|-i}}即可。
 +
 +
== sed ==
 +
 +
[[Wikipedia:sed|sed]] (''stream editor'')是一条专门解析或替换文本的命令。
 +
 +
这里有一系列现成的[http://sed.sourceforge.net/sed1line.txt 示范]
 +
 +
{{Note|awk更为优秀,甚至Perl语言也可以}}
 +
 +
== seq ==
 +
 +
'''seq''' (''sequence'')是一条专门排列数字的命令。可以按照[[Wikipedia:seq|Wikipedia]]上进行练习。
 +
 +
== shred ==
 +
 +
[[Wikipedia:Shred_(Unix)|shred]]是一条更安全的删除命令,尽管如此也要小心点。
 +
这种命令别名可延迟'''shred'''到3秒后才生效, 或是当删除三个以上的文件就会进行确认。
 +
 +
== sudo ==
 +
 +
[[Wikipedia:Sudo|Sudo]] (''as superuser do'')是Unix-like操作系统上的一件允许用户以其他用户的权限(一般是超级用户或root)来运行用户的程序,
 +
 +
== See also ==
 +
 +
* [http://www.reddit.com/r/commandline/comments/19garq/a_sampling_of_coreutils_120/ A sampling of coreutils] [http://www.reddit.com/r/commandline/comments/19ge6v/a_sampling_of_coreutils_2040/ , part 2] [http://www.reddit.com/r/commandline/comments/19j1w3/a_sampling_of_coreutils_4060/ , part 3] - An overview of commands in coreutils

Revision as of 14:57, 21 June 2013

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki: improved Bourne shell, Linux standard Template:Article summary wiki: improved Bourne/C shell, very good as interactive shell Template:Article summary wiki Template:Article summary wiki Template:Article summary end

本文涉及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).

grep

grep是最初给Unix写的命令行文字搜索工具,grep命令在文件或标准输入里搜索符合指定正则表达式模式的行,并把结果打印到标准输出。

  • 记住,grep能直接处理文件,所以用$ grep pattern file结构代替$ cat file | grep pattern即可。
  • 若要grep集群服务器(VCS)的源代码,请使用专门的Perl工具ack。可访问official web site

彩色化输出

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

请在您的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是一个对文本文件内容进行分页显示的终端程序,它和其他的分页显示程序如morepg相似,但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

Colored output through wrappers

您可直接开启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 (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是一条更安全的删除命令,尽管如此也要小心点。 这种命令别名可延迟shred到3秒后才生效, 或是当删除三个以上的文件就会进行确认。

sudo

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

See also