TranslateProject/published/201506/20150527 3 Useful Hacks Every Linux User Must Know.md
2015-07-01 00:16:33 +08:00

79 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Linux 用户的 3 个命令行小技巧
================================================================================
Linux世界充满了乐趣我们越深入进去就会发现越多有趣的事物。我们会努力给你提供一些小技巧让你和其他人有所不同下面就是我们准备的3个小技巧。
### 1. 如何在不使用Cron的情况调度Linux下的任务 ###
在Linux下调度一个任务/命令称之为Cron。当我们需要调度一个任务时我们会使用Cron但你知道我们在不使用Cron的情况也可以调度一个在将来时间运行的任务吗你可以按照如下建议操作……
每5秒钟运行一个命令date然后将结果写入到一个文件data.txt。为了实现这一点我们可以直接在命令提示符运行如下单行脚本。
$ while true; do date >> date.txt ; sleep 5 ; done &
上述脚本的解释:
- `while true` :让脚本进入一个条件总为真的循环中,也就是制造一个死循环,将里边的命令一遍遍地重复运行。
- `do` `do`是`while`语句中的关键字,它之后的命令会被执行,在它后边可以放置一个或一系列命令。
- `date >> date.txt` 运行date命令并将其输出写入到data.txt文件中。注意我们使用`>>`,而不是`>`。
- `>>` 对文件date.txt进行追加写的操作这样每次运行命令后输出内容会被追加到文件中。如果使用`>`的话,则会一遍遍地覆盖之前的内容。
- `sleep 5` 让脚本处于5秒睡眠状态然后再运行之后的命令。注意这里的时间单位只能用秒。也就是说如果你想让命令每6分钟运行一次你应该使用`sleep 360`。
- `done` `while`循环语句块结束的标记。
- `&` :将整个进程放到后台运行。
类似地我们可以这样运行任何脚本。下边的例子是每100秒运行一个名为`script_name.sh`的脚本。
另外值得一提的是上面提到的脚本文件必须处于当前目录中,否则需要使用完整路径(`/home/$USER/…/script_name.sh`)。实现如上功能的单行脚本如下:
$ while true; do /bin/sh script_name.sh ; sleep 100 ; done &
**总结**上述的单行脚本并不是Cron的替代品因为Cron工具支持众多选项更加灵活可定制性也更高。然而如果我们想运行某些测试比如I/O评测上述的单行脚本也管用。
还可以参考:[Linux 下 11 个定时调度任务例子][1]
### 2. 如何不使用clear命令清空终端的内容 ###
你如何清空终端的内容?你可能会认为这是一个傻问题。好吧,大家都清楚可以使用`clear`命令。如果养成使用`ctrl + l`快捷键的习惯,我们会节省大量时间。
`Ctrl + l`快捷键的效果和`clear`命令一样。所以下一次你就可以使用`ctrl + l`来清空终端的内容了。
**总结**:因为`ctrl + l`是一个快捷键,我们不可以在脚本中使用。所以如果我们需要在脚本中清空屏幕内容,还是需要使用`clear`命令。但我能想到的所有其他情况,`ctrl + l`都更加有效。
### 3. 在其它目录运行一个命令,然后自动返回当前工作目录 ###
这是一个很多人可能不知道的令人吃惊的技巧。你可能想在其它目录运行任何一个命令,然后再回到当前目录。要实现这样的目的,你只需要将命令放在一个圆括号里。
我们来看一个例子:
avi@deb:~$ (cd /home/avi/Downloads/)
示例输出:
avi@deb:~
它首先会cd到Downloads目录然后又回到了之前的家目录。也许你认为里边的命令根本没有执行或者是出了某种错误因为从命令提示符看不出任何变化。让我们简单修改一下这个命令
avi@deb:~$ (cd /home/avi/Downloads/ && ls -l)
示例输出:
-rw-r----- 1 avi avi 54272 May 3 18:37 text1.txt
-rw-r----- 1 avi avi 54272 May 3 18:37 text2.txt
-rw-r----- 1 avi avi 54272 May 3 18:37 text3.txt
avi@deb:~$
在上述命令中它首先进入Downloads目录然后列出文件内容最后又回到了当前目录。并且它证明了命令成功执行了。你可以在括号中包含任何命令执行完都会顺利返回到当前目录。
这就是全部内容了如果你知道任何类似的Linux技巧你可以在文章下面的评论框中分享给我们不要忘记将本文和朋友分享 :)
--------------------------------------------------------------------------------
via: http://www.tecmint.com/useful-linux-hacks-commands/
作者:[Avishek Kumar][a]
译者:[goreliu](https://github.com/goreliu)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/avishek/
[1]:http://www.tecmint.com/11-cron-scheduling-task-examples-in-linux/