您的位置:首页 > 运维架构 > Linux

linux命令二

2015-06-22 11:00 561 查看

1 将文件复制到多个目录中

不必运行:

[code]cp /path/to/file /usr/dir1
cp /path/to/file /var/dir2
cp /path/to/file /nas/dir3


运行下面的命令来复制到多个目录中

[code]echo /usr/dir1 /var/dir2 /nas/dir3 |xargs -n 1 cp -v /path/to/file


2 xargs命令

经典应用模式:cmd1 | xargs [-option] cmd2

没有cmd2,默认使用echo输出

用途

构造参数列表并运行命令,即将接受的参数传递给后面的cmd2命令执行

将多行输入转换成单行(特殊功效)

优点

将输入参数整理后,去除
<newline>
换行符,以一个列表形式处理

避免参数过长引发的问题,使用 xargs -n 参数适当控制,对于经常产生大量输出的命令如find、locate和grep来说非常有用

xargs 一般和管道一起使用:

cmd1 | xargs [-option] cmd2

option:

-i:-i选项告诉xargs可以使用{}代替传递过来的参数,建议使用-I,其符合POSIX标准

-I:格式 xargs -I replace-str cmd replace-str其中replace-str为代替传递给xargs的参数,可以使用{} 、$、@等符号,其主要作用是当 xargs cmd 后有多个参数时,调整参数位置。例如:

[code]find . -name "*.txt" | xargs -I {} cp {} /tmp


-L num:从标准输入一次读取num行送给cmd命令,-L和-l功能一样不建议使用。

-n:xargs的-n选项设置每次送给cmd命令的参数个数,参数以空白字符或
<newline>
换行符分割。

-L和-n标识是互相排斥的;最后指定的标识生效。

-s size:设置每次构造cmd行的长度总大小,包括cmd + init-param +传递参数,size参数必须是正整数。

-x: 如果有任何cmd行大于 -s Size标识指定的字节数,停止运行xargs命令,-L -I -n 默认打开-x参数。

注:详情请查看linux的man手册。

3 删除意外在当前文件夹下解压的文件

意外在/var/www/html而不是/home/projects/www/current下解压了一个tarball。它搞乱了/var/www/html下的文件,不知道哪些是误解压出来的。最简单的修复办法是

[code]cd /var/www/html
rm -f "$(tar -ztf /path/to/file.tar.gz)"


4 tr命令

tr [OPTION] … SET1 [SET2]

功能:转换或删除字符

描述:

tr 指令从标准输入设备读取数据,经过字符串转译后,输出到标准输出设备。

通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有 tr 所能够做的。

tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。

参数:

-c 或–complement 取代所有不属于第一字符集的字符。

-d 或–delete 删除所有属于第一字符集的字符。

-s 或–squeeze-repeats 把连续重复的字符以单独一个字符表示。

-t 或–truncate-set1,first truncate SET1 to length of SET2,经过我的实践发现,将set1的字符依次替换成set2中的字符,如果set1中的字符数目超过set2,那么set1多出的字符忽略。如果没有-t,那么多出的字符都替换成set2的最后一个字符。

压缩

[code]// 压缩
$echo hellohellohello | tr -s [a-z] // 显示helohelohelo

// test文件内容
111
222

333

// 删除文件中多余空行
$tr -s "[\012]" <test 

// 标准输出显示
111
222
333 

// 替换文件test中的所有冒号,代之以逗号
$tr -s "[:]" "[,]" <test
// 或
$tr -s ":" ","


转换

[code]$echo hello |tr [a-z] [A-Z]
或
$echo hello |tr a-z A-Z  // 显示HELLO


删除

[code]$echo hello |tr -d bld // 显示 heo
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: