znew

将.Z压缩包重新转化为gzip命令压缩的.gz压缩包

znew命令 用于将使用compress命令压缩的“.Z”压缩包重新转化为使用gzip命令压缩的“.gz”压缩包。

语法

1
znew(选项)(参数)

选项

1
2
3
4
5
6
-f:# 强制执行转换操作,即是目标“.gz”已经存在;
-t:# 删除原文件前测试新文件;
-v:# 显示文件名和每个文件的压缩比;
-9:# 食用油花的压缩比,速度较慢;
-P:# 使用管道完成转换操作,以降低磁盘空间使用;
-K:# 当“.Z”文件比“.gz”文件小时,保留“.Z”文件。

参数

文件:指定compress指令压缩生成的“.Z”压缩包。

wget - 一个下载文件的工具

Linux 系统中的 wget 是一个下载文件的工具,它用在命令行下。对于 Linux 用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器。wget 支持 HTTP,HTTPS 和 FTP 协议,可以使用 HTTP 代理。所谓的自动下载是指,wget 可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个 wget 下载任务,然后退出系统,wget 将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。

wget 可以跟踪 HTML 页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作”递归下载”。在递归下载的时候,wget 遵循 Robot Exclusion 标准(/robots.txt). wget 可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。

wget 非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget 会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

命令格式:

1
wget [参数] [URL地址]

命令功能:

用于从网络上下载资源,没有指定目录,下载资源回默认为当前目录。wget 虽然功能强大,但是使用起来还是比较简单:

1)支持断点下传功能;这一点,也是网络蚂蚁和 FlashGet 当年最大的卖点,现在,Wget 也可以使用此功能,那些网络不是太好的用户可以放心了;

2)同时支持 FTP 和 HTTP 下载方式;尽管现在大部分软件可以使用 HTTP 方式下载,但是,有些时候,仍然需要使用 FTP 方式下载软件;

3)支持代理服务器;对安全强度很高的系统而言,一般不会将自己的系统直接暴露在互联网上,所以,支持代理是下载软件必须有的功能;

4)设置方便简单;可能,习惯图形界面的用户已经不是太习惯命令行了,但是,命令行在设置上其实有更多的优点,最少,鼠标可以少点很多次,也不要担心是否错点鼠标;

5)程序小,完全免费;程序小可以考虑不计,因为现在的硬盘实在太大了;完全免费就不得不考虑了,即使网络上有很多所谓的免费软件,但是,这些软件的广告却不是我们喜欢的。

命令参数:

启动参数:
-V, --version
显示 wget 的版本后退出
-h, --help
打印语法帮助
-b, --background
启动后转入后台执行
-e, --execute=COMMAND
执行.wgetrc’格式的命令,wgetrc 格式参见/etc/wgetrc 或~/.wgetrc

记录和输入文件参数:
-O, --output-file=FILE
把记录写到 FILE 文件中
-a, --append-output=FILE
把记录追加到 FILE 文件中
-d, --debug
打印调试输出
-q, --quiet
安静模式(没有输出)
-v, --verbose
冗长模式(这是缺省设置)
-nv, --non-verbose
关掉冗长模式,但不是安静模式
-i, --input-file=FILE
下载在 FILE 文件中出现的 URLs
-F, --force-html
把输入文件当作 HTML 格式文件对待
-B, --base=URL
将 URL 作为在-F -i 参数指定的文件中出现的相对链接的前缀
--sslcertfile=FILE
可选客户端证书
--sslcertkey=KEYFILE
可选客户端证书的 KEYFILE
--egd-file=FILE
指定 EGD socket 的文件名

下载参数:

--bind-address=ADDRESS
指定本地使用地址(主机名或 IP,当本地有多个 IP 或名字时使用)
-t, --tries=NUMBER
设定最大尝试链接次数(0 表示无限制).

-O, --output-document=FILE
把文档写到 FILE 文件中

-nc, --no-clobber
不要覆盖存在的文件或使用.#前缀

-c, --continue
接着下载没下载完的文件

--progress=TYPE
设定进程条标记

-N, --timestamping
不要重新下载文件除非比本地文件新

-S, --server-response
打印服务器的回应

--spider 不下载任何东西

-T, --timeout=SECONDS
设定响应超时的秒数

-w, --wait=SECONDS
两次尝试之间间隔 SECONDS 秒

--waitretry=SECONDS
在重新链接之间等待 1…SECONDS 秒

--random-wait
在下载之间等待 0…2*WAIT 秒

-Y, --proxy=on/off
打开或关闭代理

-Q, --quota=NUMBER
设置下载的容量限制

--limit-rate=RATE
限定下载输率

目录参数:

-nd, --no-directories
不创建目录

-x, --force-directories
强制创建目录

-nH, --no-host-directories
不创建主机目录

-P, --directory-prefix=PREFIX
将文件保存到目录 PREFIX/…

--cut-dirs=NUMBER
忽略 NUMBER 层远程目录

HTTP 选项参数:

--http-user=USER
设定 HTTP 用户名为 USER.

--http-passwd=PASS
设定 http 密码为 PASS

-C, --cache=on/off
允许/不允许服务器端的数据缓存 (一般情况下允许)

-E, --html-extension
将所有 text/html 文档以.html 扩展名保存

--ignore-length 忽略 ‘Content-Length’头域

--header=STRING 在 headers 中插入字符串 STRING

--proxy-user=USER 设定代理的用户名为 USER

--proxy-passwd=PASS 设定代理的密码为 PASS

--referer=URL 在 HTTP 请求中包含 Referer: URL

-s, --save-headers 保存 HTTP 头到文件

-U, --user-agent=AGENT 设定代理的名称为 AGENT 而不是 Wget/VERSION

--no-http-keep-alive 关闭 HTTP 活动链接 (永远链接)

--cookies=off 不使用 cookies

--load-cookies=FILE 在开始会话前从文件 FILE 中加载 cookie

--save-cookies=FILE 在会话结束后将 cookies 保存到 FILE 文件中

FTP 选项参数:

-nr, --dont-remove-listing 不移走 .listing’文件

-g, --glob=on/off 打开或关闭文件名的 globbing 机制

--passive-ftp 使用被动传输模式 (缺省值).

--active-ftp 使用主动传输模式

--retr-symlinks 在递归的时候,将链接指向文件(而不是目录)

递归下载参数:

-r, --recursive 递归下载--慎用!

-l, --level=NUMBER 最大递归深度 (inf 或 0 代表无穷)

--delete-after 在现在完毕后局部删除文件

-k, --convert-link 转换非相对链接为相对链接

-K, --backup-converted 在转换文件 X 之前,将之备份为 X.orig

-m, --mirror 等价于 -r -N -l inf -nr

-p, --page-requisites 下载显示 HTML 文件的所有图片

递归下载中的包含和不包含(accept/reject):

-A, --accept=LIST 分号分隔的被接受扩展名的列表

-R, --reject=LIST 分号分隔的不被接受的扩展名的列表

-D, --domains=LIST 分号分隔的被接受域的列表

--exclude-domains=LIST 分号分隔的不被接受的域的列表

--follow-ftp 跟踪 HTML 文档中的 FTP 链接

--follow-tags=LIST 分号分隔的被跟踪的 HTML 标签的列表

-G, --ignore-tags=LIST 分号分隔的被忽略的 HTML 标签的列表

-H, --span-hosts 当递归时转到外部主机

-L, --relative 仅仅跟踪相对链接

-I, --include-directories=LIST 允许目录的列表

-X, --exclude-directories=LIST 不被包含目录的列表

-np, --no-parent 不要追溯到父目录

-S, --spider url 不下载只显示过程

使用实例:

  1. 使用 wget 下载单个文件

wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip
是从网络下载一个文件并保存在当前目录,在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。

  1. 使用 wget -O 下载并以不同的文件名保存
1
wget -O wordpress.zip http://www.minjieren.com/download.aspx?id=1080

wget 默认会以最后一个符合”/”的后面的字符来命令,对于动态链接的下载通常文件名会不正确。
错误:下面的例子会下载一个文件并以名称 download.aspx?id=1080 保存
wget http://www.minjieren.com/download?id=1
即使下载的文件是 zip 格式,它仍然以 download.php?id=1080 命令。
正确:为了解决这个问题,我们可以使用参数-O 来指定一个文件名:

wget -O wordpress.zip http://www.minjieren.com/download.aspx?id=1080

  1. 使用 wget –limit -rate 限速下载

wget --limit-rate=300k http://www.minjieren.com/wordpress-3.1-zh_CN.zip
当你执行 wget 的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了。

  1. 使用 wget -c 断点续传

wget -c http://www.minjieren.com/wordpress-3.1-zh_CN.zip
使用 wget -c 重新启动下载中断的文件,对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。需要继续中断的下载时可以使用-c 参数。

  1. 使用 wget -b 后台下载

wget -b http://www.minjieren.com/wordpress-3.1-zh_CN.zip
对于下载非常大的文件的时候,我们可以使用参数-b 进行后台下载。

1
2
3
wget -b http://www.minjieren.com/wordpress-3.1-zh_CN.zip
Continuing in background, pid 1840.
Output will be written to `wget-log'.

你可以使用以下命令来察看下载进度:
tail -f wget-log

  1. 伪装代理名称下载
1
2
wget --user-agent="Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16"
http://www.minjieren.com/wordpress-3.1-zh_CN.zip

有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–user-agent 参数伪装。

  1. 使用 wget –spider 测试下载链接

wget --spider URL
当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。我们可以增加–spider 参数进行检查。

wget --spider URL
如果下载链接正确,将会显示

1
2
3
4
5
6
wget --spider URL
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.

这保证了下载能在预定的时间进行,但当你给错了一个链接,将会显示如下错误

1
2
3
4
wget --spider url
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response... 404 Not Found
Remote file does not exist -- broken link!!!

你可以在以下几种情况下使用 spider 参数:
定时下载之前进行检查
间隔检测网站是否可用
检查网站页面的死链接

  1. 使用 wget –tries 增加重试次数
1
wget --tries=40 URL

如果网络有问题或下载一个大文件也有可能失败。wget 默认重试 20 次连接下载文件。如果需要,你可以使用–tries 增加重试次数。

  1. 使用 wget -i 下载多个文件
1
wget -i filelist.txt

首先,保存一份下载链接文件
cat > filelist.txt

1
2
3
4
url1
url2
url3
url4

接着使用这个文件和参数-i 下载

  1. 使用 wget –mirror 镜像网站
1
wget --mirror -p --convert-links -P ./LOCAL URL

下载整个网站到本地。
--miror
开户镜像下载
-p
下载所有为了 html 页面显示正常的文件
--convert-links
下载后,转换成本地的链接
-P ./LOCAL
保存所有文件和目录到本地指定目录

  1. 使用 wget –reject 过滤指定格式下载
1
wget --reject=gif url

下载一个网站,但你不希望下载图片,可以使用以下命令。

  1. 使用 wget -o 把下载信息存入日志文件
1
$ wget -o download.log URL

不希望下载信息直接显示在终端而是在一个日志文件,可以使用

  1. 使用 wget -Q 限制总下载文件大小
1
$ wget -Q5m -i filelist.txt

当你想要下载的文件超过 5M 而退出下载,你可以使用。注意:这个参数对单个文件下载不起作用,只能递归下载时才有效。

  1. 使用 wget -r -A 下载指定格式文件
1
$ wget -r -A.pdf url

可以在以下情况使用该功能:

  • 下载一个网站的所有图片
  • 下载一个网站的所有视频
  • 下载一个网站的所有 PDF 文件
  1. 使用 wget FTP 下载
1
2
wget ftp-url
wget --ftp-user=USERNAME --ftp-password=PASSWORD url

可以使用 wget 来完成 ftp 链接的下载。
使用 wget 匿名 ftp 下载
wget ftp-url
使用 wget 用户名和密码认证的 ftp 下载
wget --ftp-user=USERNAME --ftp-password=PASSWORD url

编译安装

使用如下命令编译安装:

1
2
3
4
5
tar zxvf wget-1.9.1.tar.gz
cd wget-1.9.1
./configure
make
make install

原文地址: http://www.cnblogs.com/peida/archive/2013/03/18/2965369.html

whatis

查询一个命令执行什么功能

whatis命令 是用于查询一个命令执行什么功能,并将查询结果打印到终端上。

whatis命令在用catman -w命令创建的数据库中查找command参数指定的命令、系统调用、库函数或特殊文件名。whatis命令显示手册部分的页眉行。然后可以发出man命令以获取附加的信息。whatis命令等同于使用man -f命令。

语法

1
whatis

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@localhost ~]# whatis ls
ls (1) - list directory contents
ls (1p) - list directory contents

[root@localhost ~]# whatis cp
cp (1) - copy files and directories
cp (1p) - copy files

[root@localhost ~]# whatis chown
chown (1) - change file owner and group
chown (1p) - change the file ownership
chown (2) - change ownership of a file
chown (3p) - change owner and group of a file

[root@localhost ~]# whatis man
man (1) - format and display the on-line manual pages
man (1p) - display system documentation
man (7) - macros to format man pages
man (rpm) - A set of documentation tools: man, apropos and whatis.
man-pages (rpm) - Man (manual) pages from the Linux Documentation Project.
man.config [man] (5) - configuration data for man

whereis - 查找二进制程序、代码等相关文件路径

查找二进制程序、代码等相关文件路径

whereis 命令 用来定位指令的二进制程序、源代码文件和 man 手册页等相关文件的路径。

whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man 说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

和 find 相比,whereis 查找的速度非常快,这是因为 linux 系统会将   系统内的所有文件都记录在一个数据库文件中,当使用 whereis 和下面即将介绍的 locate 时,会从数据库中查找数据,而不是像 find 命令那样,通   过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用 whereis 和 locate  查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

1
whereis [-bmsu] [-BMS directory... -f] filename...

选项

-b

只查找二进制文件

-m

只查找说明文件

-s

只查找原始代码文件

-u

查找不包含指定类型的文件. A file is said to be unusual if it does not have one entry of each requested type. Thus ‘whereis -m -u *‘ asks for those files in the current directory which have no documentation.

-B

只在设置的目录下查找二进制文件
Change or otherwise limit the places where whereis searches for binaries.

-M

只在设置的目录下查找说明文件
Change or otherwise limit the places where whereis searches for manual sections.

-S

只在设置的目录下查找原始代码文件
Change or otherwise limit the places where whereis searches for sources.

-f

不显示文件名前的路径名称
Terminate the last directory list and signals the start of file names, and must be used when any of the -B, -M, or -S options are used.

实例

Find all files in /usr/bin which are not documented in /usr/man/man1 with source in /usr/src:

1
2
cd /usr/bin
whereis -u -M /usr/man/man1 -S /usr/src -f *

将相关的文件都查找出来

1
2
3
4
5
[root@localhost ~]# whereis tomcat
tomcat:

[root@localhost ~]# whereis svn
svn: /usr/bin/svn /usr/local/svn /usr/share/man/man1/svn.1.gz

说明:tomcat 没安装,找不出来,svn 安装找出了很多相关文件

只将二进制文件查找出来

1
2
3
4
5
6
7
8
[root@localhost ~]# whereis -b svn
svn: /usr/bin/svn /usr/local/svn

[root@localhost ~]# whereis -m svn
svn: /usr/share/man/man1/svn.1.gz

[root@localhost ~]# whereis -s svn
svn:

说明:whereis -m svn查出说明文档路径,whereis -s svn找 source 源文件。

which

查找并显示给定命令的绝对路径

which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

语法

1
which(选项)(参数)

选项

1
2
3
4
-n<文件名长度>:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;
-p<文件名长度>:与-n参数相同,但此处的<文件名长度>包含了文件的路径;
-w:指定输出时栏位的宽度;
-V:显示版本信息。

参数

指令名:指令名列表。

实例

查找文件、显示命令路径:

1
2
3
4
5
[root@localhost ~]# which pwd
/bin/pwd

[root@localhost ~]# which adduser
/usr/sbin/adduser

说明:which是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,不同的 PATH 配置内容所找到的命令当然不一样的!

用 which 去找出 cd

1
2
[root@localhost ~]# which cd
cd: shell built-in command

cd 这个常用的命令竟然找不到啊!为什么呢?这是因为 cd 是bash 内建的命令! 但是 which 默认是找 PATH 内所规范的目录,所以当然一定找不到的!

who

显示当前所有登陆用户的信息

1
who [OPTION]... [ FILE | ARG1 ARG2 ]

当没有给出非选项参数时,按以下字段顺序为每个当前用户打印信息:登录用户名称,终端信息,登录时间,远程主机或 X display。
当用户执行 who am i 时,只显示运行该命令的用户的信息。

选项

-a, --all
等价于 -b -d --login -p -r -t -T -u

-b, --boot
上次系统启动的时间

-d, --dead
打印 dead 状态的进程。

-H, --heading
显示各栏位的标题信息列

-l, --login
打印系统登录进程

--lookup
尝试通过 DNS 规范主机名

-m
此参数的效果和指定”am i”字符串相同
仅仅输入相关的主机名称和用户

-p, --process
打印由 init 生成的活动进程

-q, --count
只显示登入系统的帐号名称和总人数

-r, --runlevel
打印当前运行级别

-s, --short
显示用户名, 行, 时间(默认)

-t, --time
打印上次系统时钟更改

-T, -w, --mesg, --message, --writable
添加用户信息的状态(+, -, ?)

-w mac 系统不存在

-u, --users
显示登录的用户

--help
帮助

--version
版本信息

指定 file 代替默认的 /var/run/utmp/etc/utmp ;通常使用 /var/log/wtmp 作为参数用于查看过去登陆系统的用户.

If ARG1 ARG2 given, -m presumed: ‘am i’ or ‘mom likes’ are usual.

实例

1
2
3
4
5
6
7
8
9
10
$ who
duoli console May 15 18:43
duoli ttys000 May 25 23:43

$ who -q
duoli duoli

$ who -T
duoli - console May 15 18:43
duoli + ttys000 May 25 23:43

注意

该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 whoinfo coreutils 'who invocation'

whoami

打印当前有效的用户ID对应的名称

概要

1
whoami [OPTION]...

主要用途

  • 打印当前有效的用户ID对应的名称。

选项

1
2
--help       显示帮助信息并退出。
--version 显示版本信息并退出。

返回值

返回0表示成功,返回非0值表示失败。

例子

1
2
[root@localhost ~]# whoami
root

注意

  1. 该命令等价于 id -un
  2. 注意区分 whoamilogname 这两个命令;比如我们以用户 root 打开的终端,然后切换到了用户 user2。此时, whoami返回的是当前用户 user2, logname 返回的是 root,大家可以自行实践验证一下。
  3. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 whoamiinfo coreutils 'whoami invocation'

xargs

给其他命令传递参数的一个过滤器

xargs 命令 是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs 能够处理管道或者 stdin 并将其转换成特定命令的命令参数。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs 的默认命令是 echo,空格是默认定界符。这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。xargs 是构建单行命令的重要组件之一。

xargs 命令用法

xargs 用作替换工具,读取输入数据重新格式化后输出。

定义一个测试文件,内有多行文本数据:

1
2
3
4
5
6
7
cat test.txt

a b c d e f g
h i j k l m n
o p q
r s t
u v w x y z

多行输入单行输出:

1
2
3
cat test.txt | xargs

a b c d e f g h i j k l m n o p q r s t u v w x y z

使用 -n 进行多行输出

-n 选项 多行输出:

1
2
3
4
5
6
7
8
9
10
11
cat test.txt | xargs -n3

a b c
d e f
g h i
j k l
m n o
p q r
s t u
v w x
y z

使用 -d 分割输入

-d 选项 可以自定义一个定界符:

1
2
3
echo "nameXnameXnameXname" | xargs -dX

name name name name

结合 -n 选项 使用:

1
2
3
4
echo "nameXnameXnameXname" | xargs -dX -n2

name name
name name

读取 stdin

读取 stdin,将格式化后的参数传递给命令

假设一个命令为 sk.sh 和一个保存参数的文件 arg.txt:

1
2
3
4
#!/bin/bash
#sk.sh 命令内容,打印出所有参数。

echo $*

arg.txt 文件内容:

1
2
3
4
5
cat arg.txt

aaa
bbb
ccc

结合 -I 选项

xargs 的一个 选项 -I ,使用 -I 指定一个替换字符串{},这个字符串在 xargs 扩展时会被替换掉,当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次:

1
2
3
4
5
cat arg.txt | xargs -I {} ./sk.sh -p {} -l

-p aaa -l
-p bbb -l
-p ccc -l

复制所有图片文件到 /data/images 目录下:

1
ls *.jpg | xargs -n1 -I cp {} /data/images

结合 find 命令使用

xargs 结合 find 使用

用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题:

1
find . -type f -name "*.log" -print0 | xargs -0 rm -f

xargs -0 将 \0 作为定界符。

统计一个源代码目录中所有 php 文件的行数:

1
find . -type f -name "*.php" -print0 | xargs -0 wc -l

查找所有的 jpg 文件,并且压缩它们:

1
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz

打印出执行的命令

结合 -t 选项可以打印出 xargs 执行的命令

ls | xargs -t -I{} echo {}

会输出当前目录下的文件列表和执行的 echo 命令

使用 -p 选项确认执行的命令

-p 选项会在执行每一个命令时弹出确认,当你需要非常准确的确认每一次操作时可以使用 -p 参数,比如,查找当前目录下 .log 文件,每一次删除都需要确认:

find . -maxdepth 1 -name "*.log" | xargs -p -I{} rm {}

执行多个命令

使用 -I 选项可以让 xargs 执行多个命令

cat foo.txt
one
two
three

cat foo.txt | xargs -I % sh -c 'echo %; mkdir %'
one
two
three

ls
one two three

其他应用

xargs 其他应用

假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs 下载所有链接:

1
cat url-list.txt | xargs wget -c

子 Shell(Subshells)

运行一个 shell 脚本时会启动另一个命令解释器.,就好像你的命令是在命令行提示下被解释的一样,类似于批处理文件里的一系列命令。每个 shell 脚本有效地运行在父 shell(parent shell) 的一个子进程里。这个父 shell 是指在一个控制终端或在一个 xterm 窗口中给你命令指示符的进程。

1
cmd1 | ( cmd2; cmd3; cmd4 ) | cmd5

如果 cmd2 是 cd /,那么就会改变子 Shell 的工作目录,这种改变只是局限于子 shell 内部,cmd5 则完全不知道工作目录发生的变化。子 shell 是嵌在圆括号 () 内部的命令序列,子 Shell 内部定义的变量为局部变量。

子 shell 可用于为一组命令设定临时的环境变量:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
COMMAND1
COMMAND2
COMMAND3
(
IFS=:
PATH=/bin
unset TERMINFO
set -C
shift 5
COMMAND4
COMMAND5
exit 3 # 只是从子 shell 退出。
)
# 父 shell 不受影响,变量值没有更改。
COMMAND6
COMMAND7

reference

xauth

显示和编辑被用于连接X服务器的认证信息

xauth命令 用于显示和编辑被用于连接X服务器的认证信息。

语法

1
xauth(选项)(参数)

选项

1
2
3
4
5
-f:不使用默认的认证文件,而使用指定的认证文件;
-q:安静模式,不打印未请求的状态信息;
-v:详细模式,打印指定的各种操作信息;
-i:忽略认证文件锁定;
-b:执行任何操作,终端认证文件锁定。

参数

  • add:添加认证条目到认证文件中;
  • extract:将指定的设备内容加入到指定的密码文件中;
  • info:显示授权文件相关信息;
  • exit:退出交互模式;
  • list:列出给定的显示设备的内容;
  • merge:合并多个授权文件内容;
  • extract:将指定设备内容写入指定的授权文件;
  • nextrct:将指定设备内容写入指定的授权文件;
  • nmerge:合并多个授权文件内容;
  • remove:删除指定显示设备的授权条目;
  • source:从指定文件读取包含xauth的内容指令。

xclip

管理 X 粘贴板

在 X 系统里面,从一个窗口复制一段文字到另一个窗口,有两套机制,分别是 Selections 和 cut buffers。

常用的 copy & paste 是利用的 cut buffers 机制;另外用鼠标选中一段文字,然后在另一个窗口按鼠标中键实现复制,利用的是 selections 机制。selection 又可以分为 master 和 slave selection。

当用鼠标选中一段文件,这段文字就自动被复制到 master selection。然后在另一个地方按鼠标中键,就自动把 master selection 的内容粘贴出来。

当你想复制少量文字的时候,两种方法都是很方便的。但是当复制大段文字的时候就挺麻烦。另外就是你可能会频繁的执行一些复制粘贴工作,不停的用鼠标选中文字,然后再粘贴。这是对手指的折磨。

我忍受不了这种折磨,所以发现了 xclip, 方便的管理 X selections 里面内容的工具。

比如如下命令就把文件 /etc/passwd 的内容复制到 X master selections 里面了。

1
xclip -i /etc/passwd

然后到别的地方就能复制出来,利用鼠标中键。或者是更舒服的 shift+insert。 我现在最常用的方法是通过键盘绑定来管理 X master selections 的内容。比如 alt+F1 就能把我的 ~/f1 的内容复制到 X master selections,alt+F2 复制 ~/f2 的内容。这样就能把你需要经常用到的内容方便的进行复制粘贴。比如常用的密码啥的。

xhost

制哪些X客户端能够在X服务器上显示

xhost命令 是X服务器的访问控制工具,用来控制哪些X客户端能够在X服务器上显示。该命令必须从有显示连接的机器上运行。可以通过使用-host参数,从访问列表中除去一个名称。不要从访问列表中除去当前的名称。如果已经这样做了,请在作出任何更改之前注销系统。

语法

1
xhost(参数)

参数

  • +:关闭访问控制,允许任何主机访问本地的X服务器;
  • -:打开访问控制,仅允许授权清单中的主机访问本地的X服务器。

输入无变量的xhost命令将显示访问X服务器的当前主机名,并显示一条消息表明访问是否已启用。

为了安全起见,只能从控制主机运行影响访问控制的选项。对于工作站来说,这台机器也就是服务器。对于X终端来说,这台机器是登录主机。

要在缺省情况下启用远程名称,可以在/etc/X?.hosts文件中定义名称,其中?为启用访问的显示器号。

例如,显示器jeanne:0可以由使用jeanne的缺省主机名的系统上的/etc/X0.hosts文件中定义的系统访问。在显示名称和文件名中,0表明已定义的远程系统允许通过增强X-Windows访问的显示器号。

注意:-name参数,定义要从X服务器访问列表中除去的主机名。已有的连接没有被中断,但将拒绝新的连接请求。注意:可以除去当前的机器;然而,不允许进行进一步的连接(包括试图将其添加回来)。再一次启用本地连接的唯一方法就是将服务器复位(因此也会中断所有连接)。

xinit

是Linux下X-Window系统的初始化程序

xinit命令 是Linux下X-Window系统的初始化程序,主要完成X服务器的初始化设置。

语法

1
xinit(参数)

参数

  • 客户端选项:客户端指令及选项;
  • –:用于区分客户端选项和服务器端选项;
  • 服务器端选项:服务器端选项指令及选项。

xlsatoms

列出X服务器内部所有定义的原子成分

xlsatoms命令 用于列出X服务器内部所有定义的原子成分,每个原子成分都有自身的编号。可利用参数设置列表范围,或直接指定欲查询的成分名称。

语法

1
xlsatoms(选项)

选项

  • -display<显示器编号>:指定X Server连接的显示器编号,该编号由”0”开始计算,依序递增;
  • -format<输出格式>:设置成分清单的列表格式,您可使用控制字符改变显示样式;
  • -name<成分名称>:列出指定的成分;
  • -range<列表范围>:设置成分清单的列表范围。

xlsclients

列出显示器中的客户端应用程序

xlsclients命令 用来列出显示器中的客户端应用程序。

语法

1
xlsclients(选项)

选项

1
2
3
4
-a:列出所有显示器的客户端应用程序信息;
-display<显示器编号>:指定X Server连接的显示器编号,该编号由"0"开始计算,依序递增;
-l:使用详细格式列表;
-m<最大指令长度>:设置显示指令信息的最大长度,单位以字符计算。

xlsfonts

列出X Server使用的字体

xlsfonts命令 列出X Server使用的字体,也能使用范本样式仅列出的符合条件的字体。

语法

1
xlsfonts(选项)

选项

1
2
3
4
5
6
7
8
-l:除字体名称外,同时列出字体的属性;
-ll:此参数的效果和指定"l"参数类似,但显示更详细的信息;
-lll:此参数的效果和指定"ll"参数类似,但显示更详细的信息;
-m:配合参数"-l"使用时,一并列出字体大小的上下限;
-n<显示栏位数>:设置每列显示的栏位数;
-o:以OpenFont的形式列出字体清单;
-u:列出字体清单时不依照其名称排序;
-w<每列字符数>:设置每列的最大字符数。

xset

设置X-Window系统中的用户爱好的实用工具

xset命令 是设置X-Window系统中的用户爱好的实用工具。

语法

1
xset(选项)(参数)

选项

1
2
-b:蜂鸣器开关设置;
-c:键盘按键声响设置。

参数

  • c:键盘按键声响设置;
  • s:屏幕保护程序设置。

xz

POSIX 平台开发具有高压缩率的工具

xz命令 XZ Utils 是为 POSIX 平台开发具有高压缩率的工具。它使用 LZMA2 压缩算法,生成的压缩文件比 POSIX 平台传统使用的 gzip、bzip2 生成的压缩文件更小,而且解压缩速度也很快。最初 XZ Utils 的是基于 LZMA-SDK 开发,但是 LZMA-SDK 包含了一些 WINDOWS 平台的特性,所以 XZ Utils 为以适应 POSIX 平台作了大幅的修改。XZ Utils 的出现也是为了取代 POSIX 系统中旧的 LZMA Utils。

语法

1
2
xz(选项)(参数)
xz [OPTION]... [FILE]...

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-z, --compress    # 强制压缩
-d, --decompress, --uncompress
# force decompression
-t, --test # 测试压缩文件的完整性
-l, --list # 列出有关.xz文件的信息
-k, --keep # 保留(不要删除)输入文件
-f, --force # 强制覆盖输出文件和(解)压缩链接
-c, --stdout, --to-stdout
# 写入标准输出,不要删除输入文件
-0 ... -9 # 压缩预设; 默认为6; 取压缩机*和*
# 使用7-9之前解压缩内存使用量考虑在内!
-e, --extreme # 尝试通过使用更多的CPU时间来提高压缩比;
# 要求不影响解压缩存储器
-T, --threads=NUM # 最多使用NUM个线程; 默认值为1; set to 0
# 设置为0,使用与处理器内核一样多的线程
-q, --quiet # 抑制警告; 指定两次以抑制错误
-v, --verbose # 冗长; 指定两次更详细
-h, --help # 显示这个简洁的帮助并退出
-H, --long-help # 显示更多帮助(还列出了高级选项)
-V, --version # 显示版本号并退出

参数

  • 源文件:指定连接的源文件。
  • 目标文件:指定源文件的目标连接文件。

实例

压缩一个文件 test.txt,压缩成功后生成 test.txt.xz, 原文件会被删除。

1
2
3
4
$ xz test.txt
$ ls test.txt*

test.txt.xz

解压 test.txt.xz 文件,并使用参数 -k 保持原文件不被删除

1
2
3
4
$ xz -d -k test.txt.xz
$ ls test.txt*

test.txt.xz test.txt

使用参数 -l 显示 .xz 文件的基本信息。基本信息包括压缩率、数据完整性验证方式等。也可以和参数 -v 或 -vv 配合显示更详尽的信息。

1
2
3
xz -l index.txt.xz
# Strms Blocks Compressed Uncompressed Ratio Check Filename
# 1 1 768 B 1,240 B 0.619 CRC64 index.txt.

使用参数 -0, -1, -2, … -6, … -9 或参数 –fast, –best 设定压缩率。xz 命令的默认为 -6 ,对于大多数系统来说,甚至是一些较旧的系统,-4 … -6 压缩率预设值都不错的表现。

1
2
$ xz -k7 xz_pipe_decomp_mini.c
$ xz -k --fast xz_pipe_decomp_mini.c

使用参数 -H 显示 xz 命令所有 options. 参数 -H 比使用参数 –help 显示的内容更详细。

1
$ xz -H  | more

借助 xargs 命令并行压缩多文件。下面的命令行可以将 /var/log 目录下所有的扩展名为 .log 的文件压缩。通过 xargs 命令同时运行多个 xz 进行压缩。

1
2
# 运行此命令须有 root 权限。
find /var/log -type f -iname "*.log" -print0 | xargs -P4 -n16 xz -T1

yes

重复打印指定字符串

yes命令 在命令行中输出指定的字符串,直到yes进程被杀死。不带任何参数输入yes命令默认的字符串就是y。

语法

1
yes(参数)

参数

字符串:指定要重复打印的字符串。

实例

1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~]# yes testline

testline
testline
testline
testline
testline
testline
testline
testline
...一直重复打印 testline,按Ctrl+C结束。

ypdomainname

显示主机的NIS的域名

ypdomainname命令 显示主机的NIS的域名。

语法

1
ypdomainname(选项)

选项

1
-v:详细信息模式。

zcat

显示压缩包中文件的内容

zcat命令 用于不真正解压缩文件,就能显示压缩包中文件的内容的场合。

语法

1
zcat(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
10
11
-S:指定gzip格式的压缩包的后缀。当后缀不是标准压缩包后缀时使用此选项;
-c:将文件内容写到标注输出;
-d:执行解压缩操作;
-l:显示压缩包中文件的列表;
-L:显示软件许可信息;
-q:禁用警告信息;
-r:在目录上执行递归操作;
-t:测试压缩文件的完整性;
-V:显示指令的版本信息;
-l:更快的压缩速度;
-9:更高的压缩比。

参数

文件:指定要显示其中文件内容的压缩包。

zfore

强制为gzip格式的压缩文件添加.gz后缀

zfore命令 强制为gzip格式的压缩文件添加“.gz”后缀。

语法

1
zfore(参数)

参数

文件列表:指定要添加“.gz”后缀的gzip压缩文件。

zip

zip 命令可以用来解压缩文件,或者对文件进行打包操作。zip 是个使用广泛的压缩程序,文件经它压缩后会另外产生具有 .zip 扩展名的压缩文件。

1
2
zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>]
[-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]

选项 & 参数

选项

-A

调整可执行的自动解压缩文件。

-b <工作目录>

指定暂时存放文件的目录。

-c

替每个被压缩的文件加上注释。

-d

从压缩文件内删除指定的文件。

-D

压缩文件内不建立目录名称。

-f

此参数的效果和指定”-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。

-F

尝试修复已损坏的压缩文件。

-g

将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。

-h

在线帮助。

-i<范本样式>

只压缩符合条件的文件。

-j

只保存文件名称及其内容,而不存放任何目录名称。

-J

删除压缩文件前面不必要的数据。

-k

使用 MS-DOS 兼容格式的文件名称。

-l

压缩文件时,把 LF 字符置换成 LF+CR 字符。

-ll

压缩文件时,把 LF+CR 字符置换成 LF 字符。

-L

显示版权信息。

-m

将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。

-n<字尾字符串>

不压缩具有特定字尾字符串的文件。

-o

以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。

-q

不显示指令执行过程。

-r

递归处理,将指定目录下的所有文件和子目录一并处理。

-S

包含系统和隐藏文件。

-t<日期时间>

把压缩文件的日期设成指定的日期。

-T

检查备份文件内的每个文件是否正确无误。

-u

更换较新的文件到压缩文件内。

-v

显示指令执行过程或显示版本信息。

-V

保存 VMS 操作系统的文件属性。

-w

在文件名称里假如版本编号,本参数仅在 VMS 操作系统下有效。

-x<范本样式>

压缩时排除符合条件的文件。

-X

不保存额外的文件属性。

-y

直接保存符号连接,而非该连接所指向的文件,本参数仅在 UNIX 之类的系统下有效。

-z

替压缩文件加上注释。

-$

保存第一个被压缩文件所在磁盘的卷册名称。

-<压缩效率>

压缩效率是一个介于 1-9 的数值。

参数

  • zip 压缩包:指定要创建的 zip 压缩包;
  • 文件列表:指定要压缩的文件列表。

常用命令

  • 压缩文件夹

/home/duoli/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip:

1
2
3
4
zip -q -r html.zip /home/duoli/html

cd /home/duoli/
zip -q -r html.zip html

比如现在我的 html 目录下,我操作的 zip 压缩命令是:

1
zip -q -r html.zip *
  • 压缩文件夹内的文件并进行单独压缩

此问题适用于于对备份数据进行单独压缩

1
for i in `ls|awk -F " " '{print $NF}'`; do zip $i.zip $i;done
  • CentOS 中进行安装
1
-Bash: Unzip: Command Not Found

解决方法

1
yum install -y unzip zip

zipinfo

用来列出压缩文件信息

zipinfo 命令 用来列出压缩文件信息。执行 zipinfo 指令可得知 zip 压缩文件的详细信息。

语法

1
zipinfo(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
10
11
12
-1:只列出文件名称;
-2:此参数的效果和指定“-1”参数类似,但可搭配“-h”,“-t”和“-z”参数使用;
-h:只列出压缩文件的文件名称;
-l:此参数的效果和指定“-m”参数类似,但会列出原始文件的大小而非每个文件的压缩率;
-m:此参数的效果和指定“-s”参数类似,但多会列出每个文件的压缩率;
-M:若信息内容超过一个画面,则采用类似more指令的方式列出信息;
-s:用类似执行“ls-l”指令的效果列出压缩文件内容;
-t:只列出压缩文件内所包含的文件数目,压缩前后的文件大小及压缩率;
-T:将压缩文件内每个文件的日期时间用年,月,日,时,分,秒的顺序列出;
-v:详细显示压缩文件内每一个文件的信息;
-x<范本样式>:不列出符合条件的文件的信息;
-z:如果压缩文件内含有注释,就将注释显示出来。

参数

文件:指定 zip 格式的压缩包。

zipsplit

将较大的zip压缩包分割成各个较小的压缩包

zipsplit命令 用于将较大的“zip”压缩包分割成各个较小的“zip”压缩包。

语法

1
zipsplit(选项)(参数)

选项

1
2
3
-n:指定分割后每个zip文件的大小;
-t:报告将要产生的较小的zip文件的大小;
-b:指定分割后的zip文件的存放位置。

参数

文件:指定要分割的zip压缩包。

tree

以树状图列出目录的内容

tree命令 以树状图列出目录的内容。

语法

1
tree(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
------- 列表选项 -------
-a # 显示所有文件和目录。
-d # 先是目录名称而非文件。
-l # 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-f # 在每个文件或目录之前,显示完整的相对路径名称。
-x # 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该目录予以排除在寻找范围外。
-L level # 限制目录显示层级。
-R # Rerun tree when max dir level reached.
-P pattern # <范本样式> 只显示符合范本样式的文件和目录名称。
-I pattern # Do not list files that match the given pattern.
--ignore-case # Ignore case when pattern matching.
--matchdirs # Include directory names in -P pattern matching.
--noreport # Turn off file/directory count at end of tree listing.
--charset X # Use charset X for terminal/HTML and indentation line output.
--filelimit # # Do not descend dirs with more than # files in them.
--timefmt <f> # Print and format time according to the format <f>.
-o filename # Output to file instead of stdout.
-------- 文件选项 ---------
-q # 用“?”号取代控制字符,列出文件和目录名称。
-N # 直接列出文件和目录名称,包括控制字符。
-Q # Quote filenames with double quotes.
-p # 列出权限标示。
-u # 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-g # 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-s # 列出文件和目录大小。
-h # Print the size in a more human readable way.
--si # Like -h, but use in SI units (powers of 1000).
-D # 列出文件或目录的更改时间。
-F # 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","@","|"号。
--inodes # Print inode number of each file.
--device # Print device ID number to which each file belongs.
------- 排序选项 -------
-v # Sort files alphanumerically by version.
-t # 用文件和目录的更改时间排序。
-c # Sort files by last status change time.
-U # Leave files unsorted.
-r # Reverse the order of the sort.
--dirsfirst # List directories before files (-U disables).
--sort X # Select sort: name,version,size,mtime,ctime.
------- 图形选项 ------
-i # 不以阶梯状列出文件和目录名称。
-A # 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-S # Print with CP437 (console) graphics indentation lines.
-n # Turn colorization off always (-C overrides).
-C # 在文件和目录清单加上色彩,便于区分各种类型。
------- XML / HTML / JSON选项 -------
-X # Prints out an XML representation of the tree.
-J # Prints out an JSON representation of the tree.
-H baseHREF # Prints out HTML format with baseHREF as top directory.
-T string # Replace the default HTML title and H1 header with string.
--nolinks # Turn off hyperlinks in HTML output.
---- 杂项选项 ----
--version # 输入版本信息。
--help # 打印使用帮助信息。
-- # Options processing terminator.

-a
显示所有文件和目录;
-A
使用ASNI绘图字符显示树状图而非以ASCII字符组合;
-C
在文件和目录清单加上色彩,便于区分各种类型;
-d
先是目录名称而非内容;
-D
列出文件或目录的更改时间;
-f
在每个文件或目录之前,显示完整的相对路径名称;
-F
在执行文件,目录,Socket,符号连接,管道名称名称,各自加上”*”,”/“,”@”,”|”号;
-g
列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码;
-i
不以阶梯状列出文件和目录名称;
-l
<范本样式> 不显示符号范本样式的文件或目录名称;
-l
如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录;
-n
不在文件和目录清单加上色彩;
-N
直接列出文件和目录名称,包括控制字符;
-p
列出权限标示;
-P
<范本样式> 只显示符合范本样式的文件和目录名称;
-q
用“?”号取代控制字符,列出文件和目录名称;
-s
列出文件和目录大小;
-t
用文件和目录的更改时间排序;
-u
列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码;
-x
将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该目录予以排除在寻找范围外。

参数

目录:执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。

实例

列出目录/private/ 第一级文件名

1
2
3
4
5
6
tree  /private/ -L 1
/private/
├── etc
├── tftpboot
├── tmp
└── var

忽略文件夹

1
2
3
4
tree -I node_modules # 忽略当前目录文件夹node_modules
tree -P node_modules # 列出当前目录文件夹node_modules的目录结构
tree -P node_modules -L 2 # 显示目录node_modules两层的目录树结构
tree -L 2 > /home/www/tree.txt # 当前目录结果存到 tree.txt 文件中

忽略多个文件夹

1
tree -I 'node_modules|icon|font' -L 2

true

返回状态为成功。

概要

1
true

主要用途

  • 用于和其他命令进行逻辑运算。

返回值

返回状态总是成功;返回值为0。

例子

1
2
3
4
5
6
# 当你的脚本设置set -e时,任何返回值为失败的命令都会使得脚本退出。
set -e
# 如何临时跳过呢?下面的语句使用逻辑或操作符连接true,返回值一定为真。
some_command || true

# 当然,和python的pass一样,也可以用作条件语句临时占位。

注意

  1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

type

显示指定命令的类型。

概要

1
type [-afptP] name [name ...]

主要用途

  • 显示要查找的命令的信息。
  • 控制查找范围和行为。
  • 显示要查找的命令优先级最高的类型。

选项

1
2
3
4
5
-a:在环境变量PATH中查找并显示所有包含name的可执行文件路径;当'-p'选项没有同时给出时,如果在别名、关键字,函数,内建的信息中存在name,则一并显示。
-f:排除对shell函数的查找。
-p:如果name在执行'type -t name'返回的不是'file',那么什么也不返回;否则会在环境变量PATH中查找并返回可执行文件路径。
-P:即使要查找的name是别名、内建、函数中的一个,仍然会在环境变量PATH中查找并返回可执行文件路径。
-t:根据name的类型返回一个单词(别名,关键字,函数,内建,文件),否则返回空值。

参数

name:要查找的命令,可以为多个。

返回值

当指定的命令可以找到时返回成功,如果有没找到的返回失败。

例子

1
2
3
4
5
6
接下来要用到的例子假设'~/.bashrc'文件定义了以下的内容:

alias ls='ls --color=auto'
mybash(){ vim ~/.bashrc; }

而且执行环境里没有使用enable禁用内建命令。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
type -a mybash
# 输出
mybash is a function
mybash ()
{
vim ~/.bashrc
}

type -a -f mybash
# 输出(因为排除了函数,所以报错)
bash: type: mybash: not found

type -a -p mybash
# 输出为空(因为排除了函数,所以什么也不返回)

type -a ls
# 输出
ls is aliased to `ls --color=suto'
ls is /usr/bin/ls
ls is /bin/ls

type -a -p ls
# 输出
/usr/bin/ls
/bin/ls
1
2
3
4
5
6
7
8
9
10
# '-f'不会影响'-P'的范围,'-f'不建议和'-p'使用。
# 注意:printf同时是内建命令以及可执行文件(GNU coreutils),优先作为内建处理。

type -p printf
# 输出为空

type -P printf
# 输出
/usr/bin/printf
/bin/printf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 如果有多个类型,那么输出优先级最高的类型。

type -t ls
# 输出
alias

type -t for
# 输出(bash关键字)
keyword

type -t mybash
# 输出
function

type -t -f mybash
# 输出空值

type -t printf
# 输出(bash内建优先级高)
builtin

type -t chmod
# 输出
file

注意

  1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

  2. 命令优先级问题请查看builtin命令。

unalias

删除由alias设置的别名

概要

1
unalias [-a] name [name ...]

主要用途

  • 删除一个或多个别名。
  • 删除全部已定义的别名。

选项

1
-a:删除全部已定义的别名。

参数

name:指定要删除的一个或多个已定义的别名。

返回值

unalias返回true除非您要删除的别名未定义。

例子

1
2
3
4
5
6
# 删除全部已定义的别名
unalias -a

# 删除已定义的别名(假设当前环境存在以下别名)
unalias vi
unalias ls grep

错误用法

  • 要删除的别名未定义。

  • 不使用-a选项时没有传递name参数。

注意

  1. 执行脚本时请注意:

使用source命令执行的bash脚本如果执行了aliasunalias命令,那么有可能会对终端环境的别名设置产生影响;终端环境的别名设置也可能改变运行结果;

通过sh方式调用的bash脚本或直接运行当前用户有执行权限的脚本不受终端环境的别名影响。

  1. 查看及设置别名,请查看alias命令。

  2. 该命令是bash内建命令,相关的帮助信息请查看help命令。

unar - 解压缩文件内容

1
unar [OPTION]... ARCHIVE [FILE]...  

选项

-o-output-directory DIRECTORY

The directory to write the contents of the archive to. Defaults to the current directory.

-f-force-overwrite

Always overwrite files when a file to be unpacked already exists on disk. By default, the program asks the user if possible, otherwise skips the file.

-r-force-rename

Always rename files when a file to be unpacked already exists on disk.

-s-force-skip

Always skip files when a file to be unpacked already exists on disk.

-d-force-directory

Always create a containing directory for the contents of the unpacked archive. By default, a directory is created if there is more than one top-level file or folder.

-D-no-directory

Never create a containing directory for the contents of the unpacked archive.

-p-password PASSWORD

The password to use for decrypting protected archives.

-e-encoding ENCODING

The encoding to use for filenames in the archive, when it is not known. If not specified, the program attempts to auto-detect the encoding used. Use “help” or “list” as the argument to give a listing of all supported encodings.

-E-password-encoding ENCODING

The encoding to use for the password for the archive, when it is not known. If not specified, then either the encoding given by the -encoding option or the auto-detected encoding is used.

-i-indexes

Instead of specifying the files to list as filenames or wildcard patterns, specify them as indexes, as output by lsar.

-nr-no-recursion

Do not attempt to extract archives contained in other archives. For instance, when unpacking a .tar.gz file, only unpack the .tar file and not its contents.

-t-copy-time

Copy the file modification time from the archive file to the containing directory, if one is created.

-k-forks visible|hidden|skip

How to handle Mac OS resource forks. visible creates AppleDouble files with the extension “.rsrc”, hidden creates AppleDouble files with the prefix “._“, and skip discards all resource forks. Defaults to visible.

-q-quiet

Run in quiet mode.

-h-help

Display help information.

unarj

解压缩由arj命令创建的压缩包

unarj命令 用来解压缩由arj命令创建的压缩包。

语法

1
unarj(选项)(参数)

选项

1
2
3
4
e:解压缩.arj文件;
l:显示压缩文件内所包含的文件;
t:检查压缩文件是否正确;
x:解压缩时保留原有的路径。

参数

.arj压缩包:指定要解压缩的.arj压缩包。