关于在Linux命令行上工作的一个非常好的事情是您可以获得很快的工作。通过对最有用的命令和一些命令行的掌握,您可以从您的日常工作中占用很多乏味。这篇文章将走过几个方便的技巧,可以让你的工作负荷感觉有点轻,也许有点愉快。
清空文件>
任何时候,如果有一个重要的文件因为太大或者不再需要该数据而需要清空,都可以使用该命令来完成>文件名。这比删除文件要快得多,并使用原始权限重新创建它。这>标志后跟文件名与键入一样cat / dev / null>文件名,但非常快。它会清空文件,但留下权限和所有权完好无损。
$ ls -l bigfile -rw-r - r--。1 SHS SHS 8956108 3月23日10:00 Bigfile $> Bigfile $ LS -L Bigfile -RW-R - R--。1 SHS SHS 0 3月23日10:50 Bigfile
对文件没有任何更改,但大小和上次更新时间。
使用它是非常常见的>操作要清空已变得过大的日志文件,特别是如果它是系统未旋转的日志文件。
将编辑保存到根用户拥有的文件中
如果您有时需要编辑一个系统文件,但忘记启动您的文本编辑器(VI.或vim.) 和苏达然后才发现你不能保存你的更改,你不必从头开始!相反,你可以按:当准备保存文件时,键,但然后键入:
W!SUDO TEE%
系统会提示您输入您的密码(如任何内容苏达命令)并要求确认您打算覆盖文件,但您不必重做您所做的所有更改。保存文件后,按Enter键,退出:q!(已经做了更改),您就完成了。
一个命令要将文件复制到多个位置
如下所示的命令使您可以多次运行命令而不需要重新输入它。在这种情况下回声命令将文件系统位置列表发送到XARGS.然后运行CP为每个人命令。这- v论证引力使CP来显示它在做什么。用目标目录替换位置列表(例如,loc1…)。
$ echo loc1 loc2 loc3 | xargs -n 1 cp -v myfile
在此示例中运行的命令是:
cp -v myfile loc1 cp -v myfile loc2 cp -v myfile loc3
“LOC”参数应替换为文件系统路径(例如,/ usr / local)。如果目标目录不是您可以在不使用的情况下写入的苏达,请使用这样的命令:
$ echo loc1 loc2 loc3 |苏达Xargs -n 1 cp -v myfile
以下是使用root访问权限将文件复制到多个主目录中的示例:
$ echo / home / nemo / home / lola / home / shark |sudo xargs-n 1 cp -pv任务'任务' - >'/ home / nemo /任务''任务' - >'/ home / lola /任务''任务' - >'/ home / shark / tasks'
此命令用途苏达将文件复制到目标目录中,但对于列出目录并将它们传递给XARGS.命令。
请注意,它也非常容易将这样的命令转换为别名,因为只有最终参数 - 文件名 - 需要在使用时更改。这是这样一个别名的示例:
$别名cp2dirs =“echo / home / nemo / home / lola / home / shark | sudo xargs-n 1 cp -pv”
要使用此别名,您只需要提供要复制的文件并在要求时提供密码苏达别名的一部分。
$ cp2dirs newfile [sudo]密码为您:
使用类似的策略,您可以创建一个别名,将文件复制到系统上的每个主目录中。但是,除非您跟进,否则这些文件将保留其权限,所有者和组分配ch或修改文件权限操作。这是一个示例别名:
别名cp2all ='find / home -maxdepth 1 -type d |tail-n +2 |Grep -V丢失+发现|sudo xargs-n 1 cp -pv'
这CP2ALL.别名通过创建主目录列表(避免/家本身和丢失+发现在案例中的目录/家是一个单独的文件系统),然后将指定的文件复制到其中每个文件。它最终最终通过相同的名称覆盖现有文件,因此您应该小心。
有关使用XARGS.命令,查看此前的帖子XARGS.。