Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

飞快的使用命令行

[复制链接]
cnfreeos 发表于 2006-8-15 11:28:56 | 显示全部楼层 |阅读模式

  1. 历史特性

  2. 使用history命令可以调出历史曾经用过的命令列表
  3. shell> history




  4. 994  cat config.nice
  5. 995  cd /usr/local/src
  6. 996  ls
  7. 997  cd /usr/src
  8. 998  ls
  9. 999  dmesg
  10. 1000  history
  11. 1001  history 100

  12. 如果你想重新执行"cd /usr/local/src" 那就可以直接这样调出历史:

  13. shell> !995
  14. 对简短容易的命令来说,可能没什么用处,但是对于

  15. cd /usr/local/src/ZendOptimizer-3.0.0-linux-glibc21-i386
  16. ./configure --prefix=/usr/local/gd --without-x --without-freetype --without-fontconfig --without-png
  17. 这样的长命令,可能就有点帮助了,

  18. 获取上个命令中的某个参数.
  19. 比如你执行了如下的操作

  20. shell> ls /bin/sh
  21. shell> file /bin/sh
  22. 比较一下,两个命令的参数是一样的,这时候,你就可以使用"!"来获得上一个命令的参数了.如下:

  23. shell> ls /bin/sh
  24. shell> file !:$
  25. "!"会提示shell获得上面的命令的某部分,作为当前的输入,比如$表示结尾,那就是获得了ls命令的最后一个参数(其实这里也是第一个参数.

  26. 再来看一个长点的。

  27. shell> tar zxvf httpd-2.0.59.tar.bz2
  28. 这显然是一个错误的输入,大家都知道bz2是使用bzip解压缩的,对应的tar参数,应当是使用"jxvf". 那我们可以立即这样修正它:

  29. shell> tar jxvf !:2
  30. "!:2"会获得上面tar命令的第2个参数,作为当前的输入. 获取的历史输入,并不只是可以单独使用,也可以作为命令的一部分象这样:

  31. shell> tar zxvf httpd-2.0.59.tar.bz2
  32. shell> tar jxvf !:2 -C /usr/tmo
  33. 执行完上面的获取,命令被替换成了tar jxvf httpd-2.0.59.tar.bz2 -C /usr/tmo
  34. 那就会按照-C指定的路径把包解压缩到/usr/tmo中.
  35.   命令执行后的结果:
  36.   tar: /usr/tmo: Cannot chdir: No such file or directory
  37.   tar: Error is not recoverable: exiting now
  38. sorry,我一不小心又敲错了.我本来是想解压缩到/usr/tmp中的这时候另一个更有趣的命令派上用场了,

  39. "^"号(替换)
  40. shell> ^mo^mp
  41. 这会把上一个命令行里的mo替换成mp
  42. 神奇吧,你的指法再快,只是在浪费时间,我轻敲6个字符,就搞定了上面的错误.

  43. 一些有用的历史命令

  44. !是bash和cshell默认的历史替换符号
  45. !!                重复最后一个命令
  46. !:s/xy/yx        这个命令会把最后一个命令里的xy替换成yx
  47. 比如etho xy !:s/xy:/yx

  48. !so                重复最近以so开始的命令
  49. !?fn?                重复最近喊有fn的命令,在某个参数中或某个命令的名称中都可以使用
  50. !32                执行号码为32的命令
  51. !! &                会在最后一个命令的末尾加上& (可以加上任意内容)
  52. !:0                挑选出命令的名称,而不是整行
  53. !:3                第参数
  54. !:2-4                第2到4个参数
  55. !:-3                从第0个到第三个参数
  56. !^                第一个参数
  57. !$                最后一个参数
  58. !*                第一个到最后一个参数
  59. !:2*                第2个到最后一个
  60. !:2-                从第2个开始,但不要结尾参数
  61. !?fn?%                给出第一个包含 fn的次(sort fn1 fn2 fn3 ...   =>echo !?fn?%        =>echo fn1)
  62. 命令行编程 shell是直接支持命令行编程的. 比如:

  63. sh > /usr/local/src
  64. sh > ls *z

  65. --------------------------------------------------------------------------------

  66.        ZendOptimizer-3.0.0-linux-glibc21-i386.tar.gz  mod_fastcgi-2.4.2.tar.gz
  67.        dia-0.94.tar.gz                                mod_fcgid.1.10.tar.gz
  68.        gd-2.0.33.tar.gz                               mysql-4.0.27.tar.gz
  69.        jpegsrc.v6b.tar.gz                             mysql-standard-4.0.26-pc-linux-gnu-i686-glibc23.tar.gz
  70.       lighttpd-1.4.11.tar.gz

  71. --------------------------------------------------------------------------------

  72. 开工了,我要把这些东西装起来,解压缩吧,好多呀,要敲n个命令.

  73. 别急,这不会花费你几秒钟的时间;

  74.   sh > for i in `ls *z`
  75.   sh > do
  76.   sh > tar zxvf $i
  77.   sh > done
  78. 眼晕了吧,不一会所有的包都解压缩了。

  79. 这只是一个简单的应用,其实你还可以加上判断,把gz和bz2,rar什么的分别用不同的程序解压缩.

  80. 使用sed和shell配合,你甚至可以一次修改一大堆的虚拟主机配置文件中的主目录:

  81. sh > for i in `ls`
  82. sh > do
  83. sh > sed -i  's/\/home\//\/disk1\\/home\//g\' $i
  84. sh > done
  85. 大搬家!把所有用户的虚拟主机都从/home搬迁到/disk1/home中了.

复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-1-10 00:22 , Processed in 0.033585 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表