当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > Linux系统管理员秘技:用快捷命令一招制胜

Unix/Linux
mysql+httpd+gd+php+zend
automake 小回顾
unix黑客精神的最好诠释
www
sun t3存储的设置
RPM简明中文手册
Linux爱好者入门教程 序章 (持续更新)
第一章 Linux基础知识 (飘心)
linux下进程与线程
浅谈如何学习linux
第二章 Linux安装
硬件安装指南
Windows 2000 的桌面不見了的解決方法
部分的ADSL路由器默认帐号密码
如何设定安全log服务器呢?
iptables 规则速查
网友学习 Linux 的七点忠告
sniffer的含义及原理
Linux编程白皮书 第二章 内存管理
Linux编程白皮书 第二章 内存管理 2.1.1 请求调页 --2.1.5 访问控制

Unix/Linux 中的 Linux系统管理员秘技:用快捷命令一招制胜


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 45 ::
收藏到网摘: n/a


  
  Linux的命令行方式有着强大的功能,对于熟练的Linux系统管理员来说,往往只需要通过各种技巧,组合构成一条复杂的命令,从而完成用户任务。
  
  那么一条复杂的Linux命令怎样构成呢?下面来介绍几个技巧。
  
  利用输入/输出重定向
  在Linux命令行模式中,如果命令所需的输出不是来自键盘,而是来自指定的文件,这就是输入重定向。同理,命令的输出也可以不显示在屏幕上,而是写入到指定文件中,这就是输出重定向。
  
  接下来看看标准输入/输出重定向在构造一条Linux命令中的实际应用。
  
  1.输入重定向和输出重定向
  # wc home.txt
  
  第一条命令将文件aa.txt作为wc命令的输入,统计出aa.txt的行数、单词数和字符数。第二条命令将ls命令的输出保存在一个名为home.txt的文件中。如果>符号后边的文件已存在,那么这个文件将被重写。
  
  2.同时使用输入和输出重定向
  # iconv -f gb18030 -t utf-8 new-aa.txt
  
  这条命令里同时用到了输入重定向(new-aa.txt)。aa.txt实际是一个gb18030编码的文件,而new-aa.txt则是将aa.txt的内容转换成utf-8格式的新文件。
  
  利用管道
  利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。下面来看看管道是如何在构造一条Linux命令中得到应用的。
  
  1.利用一个管道
  # rpm -qa|grep licq
  
  这条命令使用一个管道符“|”建立了一个管道。管道将rpm -qa命令的输出(包括系统中所有安装的RPM包)作为grep命令的输入,从而列出带有licq字符的RPM包来。

  4.利用多个管道
  
  # cat /etc/passwd | grep /bin/bash | wc -l
  
  
  这条命令使用了两个管道,利用第一个管道将cat命令(显示passwd文件的内容)的输出送给grep命令,grep命令找出含有“/bin/bash”的所有行;第二个管道将grep的输入送给wc命令,wc命令统计出输入中的行数。这个命令的功能在于找出系统中有多少个用户使用bash。
  
  利用命令替换
  在Linux命令行模式下,当遇到一对“`” (上分割符)时,将首先执行“`”中间包含的命令,然后将其输出结果作为参数代入命令行中,这就是命令替换了。它类似于输入输出的重定向功能,但区别在于命令替换是将一个命令的输出作为另外一个命令的参数。下面来看它的实际应用。
  
  1.使用命令替换
  # touch `date +%Y%m%d%k%M%S`.txt
  
  该命令使用了一次命令替换,date +%Y%m%d%k%M%S命令将首先执行,它将按指定格式输出当前的时间。然后,这个时间将被作为touch命令的参数,其结果是建立了一个以当前时间为文件名的文件。
  
  2.使用命令替换
  # kill `/sbin/pidof smbd`
  
  该命令将杀掉sshd的所有进程。这里用pidof这个命令给出进程号,因为kill是针对进程号进行操作的。两者通过命令替换,实现了只用一条命令就杀掉sshd所有进程的功能。
  
  综合应用
  在理解和熟悉了前面的几个技巧后,将它们综合运用起来就是较高的技巧了。同时,一些常用的、且本身用法就比较复杂的Linux命令一定要熟练掌握。在构造Linux命令中常常用到的一些基础的、重要的命令有grep、tr、sed、awk、find、cat和echo等,下面来看一些综合应用的例子。
  
  1.
  
  # man ls | col -b > ls.man.txt
  
  这条命令同时运用了输出重定向和管道两种技巧,作用是将ls的帮助信息转成一个可以直接阅读的文本文件。
  
  2.
  
  # kill -9 `ps -ef | grep smbd | tr -s ' ' | awk -F' ' '{print $2}'`
  
  这个例子的功能和上面的功能是一样的,不过它不依赖pidof命令,使用的是多数Unix类系统中都有的命令,适用于更多的系统环境。但是它看起来更复杂一些,使用了三个管道和一次命令替换,另外使用了grep、tr和awk三个与字符操作相关的命令。
  
  从前面的介绍可以看出,通过几种技巧的组合,Linux命令可以完成复杂的功能。除此之外,还可以将这些命令组织到一个脚本中来,加上函数、变量、判断和循环等功能,再加入一些编程思想,就是功能更强大的Shell脚本了。