17611538698
webmaster@21cto.com

最有用的Linux命令行与技巧大全

资讯 0 2927 2018-03-24 11:56:45

1.jpeg


21CTO导读:在我们学习使用Linux系统时,它现在发展的普通用户也使用鼠标来操作。但是程序员们就需要是用命令行来驱动开发系统。
 
当我们不怎么用某些技术时,很容易忘记以前学过的东西。 这经常发生在我们使用Linux命令行时的情况。本文旨在让开发者记起更多有用的命令行工具,值得分享收藏。


 
我们每天都用很多Linux命令。 Linux命令灵活有很多有用的技巧,但是一旦如果不怎么用,也会容易忘记。
于是我们决定列出一些你可能已经忘记的命令和技巧。当然,这里一些命令对你来说,也可能是全新的。以表格形式显示输出
 
有时候,当你看到一个命令的输出内容,由于过于拥挤的字符串(例如,mount命令的输出),满屏的字符混杂在一起,这种显示简直是太美丽。 如何让它在桌面上整齐的显示? 用下列命令很容易做到!
[size=15]mount | column –t[/size]
 
[size=15]mount |column –t[/size]
 :

在这个例子中,由于空格,输出格式良好。 如果分隔符是其他的,比如冒号怎么办? (例如,在
[size=15]cat/etc/passwd[/size]
[size=19]的输出 [/size]
只需使用
[size=15]–s[/size]
参数指定分隔符,如下运行结果。
[size=15][b][size=13]cat/etc/passwd | column -t -s[/size][/b][/size]
[size=19] [/size]
[size=15][b][size=13]cat/etc/passwd | column -t –s[/size][/b][/size]
[size=19]:[/size]
重复一个命令,直到成功运行
 
如果搜索Google命令循环这个功能,会发现很多人询问如何重复执行命令,直到它成功返回并正确运行。 
比如包括ping服务器直到结果变为活动状态,检查是否从特定目录上传具有特定扩展名的文件,检查是否存在指定的网址等。 
可以用
[size=15]while true[/size]
循环来实现。我们使用如下命令:

在这个例子中, 
[size=15]>/dev/null2>&1[/size]
将程序的输出重定向到
[size=15]/dev/null[/size]
[size=19]  包括[/size]
[size=15]StandardError[/size]
[size=15]Standard Out[/size]

这是最酷的Linux命令行技巧之一。进程按内存使用数量排序
 
[size=15]ps aux | sort -rnk 4[/size]
 
[size=15]ps aux |sort -rnk 4[/size]
:
进程按CPU使用率排序
 
[size=15]ps aux | sort -nk 3[/size]
 
[size=15]ps aux |sort -nk 3[/size]
[size=19] [/size]

要检视自己的操作系统体系结构,可以执行:
[size=15]getconf LONG_BIT[/size]
[size=19] [/size]
结果显示为64或32,这和你当前的操作系统有关。同时查看多个日志文件
 
毫无疑问,你可以使用tail命令方便查看系统日志,有时我们可能需要查看多个日志文件,可使用multi-tail命令代替,它支持文本高亮显示,过滤等更多你您要的功能。
 
如下图显示:

如果你的系统里没有,可以使用
[size=15]apt-get installmultitail[/size]
找到并安装它。返回到刚才使用的目录
 
您只需键入
[size=15]cd –- [/size]
你将返回到刚才使用的目录(不是上一级)。使非交互式Shell变成交互式会话
 
想做到这一点,可以将设置从
[size=15]~/.bashrc[/size]
更改为
[size=15]~/.bash_profile[/size]
[size=19] 即可。[/size]以常规间隔监视命令输出
 
可以使用watch命令( 
[size=15]watch df –h[/size]
[size=19] ),就可以查看任何命令的输出结果。 例如,可以查看可用空间以及增长情况。[/size]
 
我们可以想象一下使用watch命令可以对变体数据做哪些事情。
 会话结束后运行程序
 
我们在后台运行任何程序,但关闭掉Shell时,它的进程立即会被Shell杀死。 如何在关闭Shell后继续运行程序?
可以使用nohup命令来完成,这代表不做任何挂起:
[size=15]nohup wget site.com/file.zip[/size]
  
这个命令是最令人遗忘的Linux命令行技巧之一,因为许多人使用另一个命令做屏幕输出:

一个文件将会在同一个目录生成名字为
[size=15]nohup.out[/size]
的文件,其中包含正在运行的程序的输出结果:

很酷的命令,对吧?对任何命令自动回答Yes或No
 
如果你想自动化响应用户回答“Yes”的过程。可以通过使用yes命令来完成: 
[size=15]yes |apt-get update[/size]
 
[size=15]yes | apt-get update[/size]
[size=19] [/size]
也许你想自动说“No”,而不是“Yes”。 可以使用
[size=15]yes no |command[/size]
[size=19]来完成 [/size]
[size=15]yes no | command[/size]
[size=19] [/size]
创建具有指定大小的文件
 
您可以使用
[size=15]dd[/size]
命令创建具有特定大小的文件: 
[size=15]dd if=/dev/zero of=out.txt bs=1Mcount=10[/size]
[size=19] [/size]
这将创建一个10兆字节,内容填充为0的文本文件:
以root身份运行最后的命令
 
有时,你忘记在需要root权限的命令,
[size=15]这需要[/size]
键入
[size=15]sudo[/size]
[size=15]再重新翻页找回[/size]
 。 你不必重写它,只需键入
[size=15]sudo[/size]
 !!
记录命令行会话
 
如果您想记录在shell屏幕上输入的内容,可以使用script命令将所有类型保存到名为
[size=15]typescript[/size]
[size=19] [/size]
[size=15]script[/size]
的文件中。
当输入exit命令退出时,之前所有命令记录都会被写入该文件,以便日后查看。用字符替换字符
 
你可以使用
[size=15]tr[/size]
命令替换任何其他字符,非常方便: 
[size=15]cat geeks.txt | tr ':[space]:' '\t'> out.txt[/size]
 
[size=15]cat geeks.txt | tr ':[space]:' '\t'> out.txt[/size]
[size=19] [/size]
将文件转换为大写或小写
 
你可以使用: 
[size=15]cat myfile| tr az AZ > output.txt[/size]
 
[size=15]cat myfile | tr az AZ> output.txt[/size]
[size=19] [/size]
 强大的Xargs命令
 
[size=15]xargs[/size]
命令是最重要的Linux命令行技巧之一。 
您可以使用此命令将命令的输出作为参数传递给另一个命令。 例如,您可以搜索PNGpng文件并对其进行压缩或对其执行其它操作:
[size=15]find. -name *.png -type f -print | xargs tar-cvzf images.tar.gz[/size]

或者,也许你有一个文件中的URL列表,你想要下载或以不同的方式处理它们:
[size=15]cat urls.txt | xargs wget[/size]


请记住,在
[size=15]xargs[/size]
命令结尾处传递的第一个命令的输出。
如果你的命令需要中间输出呢? 
只需结合使用
[size=15]{}[/size]
[size=15]–i[/size]
参数(如下所示)来替换第一个命令的输出所在位置的参数即可:
[size=15]ls /etc/*.conf | xargs -i cp {}/home/likegeeks/Desktop/out[/size]

 
小结
 
以上是Linux命令行的一些小窍门。 有些命令不一定都让我们喜欢,可以使用其他命令来实现,比如
[size=15]awk[/size]
[size=15]sed[/size]
命令或脚本语言处理。
 
如果你还知道其它我没有提到的有用甚至怪异的命令,欢迎在本文评论区发表高见。
 


作者:21CTO社区整理编译


评论