[转]Linux Shell History (快速使用Linux命令)
使用history命令可以调出历史曾经用过的命令列表
shell> history
994 cat config.nice
995 cd /usr/local/src
996 ls
997 cd /usr/src
998 ls
999 dmesg
1000 history
1001 history 100
如果你想重新执行"cd /usr/local/src" 那就可以直接这样调出历史:
shell> !995
对简短容易的命令来说,可能没什么用处,但是对于
cd /usr/local/src/ZendOptimizer-3.0.0-linux-glibc21-i386
./configure --prefix=/usr/local/gd --without-x --without-freetype --without-fontconfig --without-png
这样的长命令,可能就有点帮助了,
获取上个命令中的某个参数.
比如你执行了如下的操作
shell> ls /bin/sh
shell> file /bin/sh
比较一下,两个命令的参数是一样的,这时候,你就可以使用"!"来获得上一个命令的参数了.如下:
shell> ls /bin/sh
shell> file !:$
"!"会提示shell获得上面的命令的某部分,作为当前的输入,比如$表示结尾,那就是获得了ls命令的最后一个参数(其实这里也是第一个参数.
再来看一个长点的。
shell> tar zxvf httpd-2.0.59.tar.bz2
这显然是一个错误的输入,大家都知道bz2是使用bzip解压缩的,对应的tar参数,应当是使用"jxvf". 那我们可以立即这样修正它:
shell> tar jxvf !:2
"!:2"会获得上面tar命令的第2个参数,作为当前的输入. 获取的历史输入,并不只是可以单独使用,也可以作为命令的一部分象这样:
shell> tar zxvf httpd-2.0.59.tar.bz2
shell> tar jxvf !:2 -C /usr/tmo
执行完上面的获取,命令被替换成了tar jxvf httpd-2.0.59.tar.bz2 -C /usr/tmo
那就会按照-C指定的路径把包解压缩到/usr/tmo中.
命令执行后的结果:
tar: /usr/tmo: Cannot chdir: No such file or directory
tar: Error is not recoverable: exiting now
sorry,我一不小心又敲错了.我本来是想解压缩到/usr/tmp中的这时候另一个更有趣的命令派上用场了,
"^"号(替换)
shell> ^mo^mp
这会把上一个命令行里的mo替换成mp
神奇吧,你的指法再快,只是在浪费时间,我轻敲6个字符,就搞定了上面的错误.
一些有用的历史命令
!是bash和cshell默认的历史替换符号
!! 重复最后一个命令
!:s/xy/yx 这个命令会把最后一个命令里的xy替换成yx
比如etho xy !:s/xy:/yx
!so 重复最近以so开始的命令
!?fn? 重复最近包含fn的命令,在某个参数中或某个命令的名称中都可以使用
!32 执行号码为32的命令
!! & 会在最后一个命令的末尾加上& (可以加上任意内容)
!:0 挑选出命令的名称,而不是整行
!:3 第参数
!:2-4 第2到4个参数
!:-3 从第0个到第三个参数
!^ 第一个参数
!$ 最后一个参数
!* 第一个到最后一个参数
!:2* 第2个到最后一个
!:2- 从第2个开始,但不要结尾参数
!?fn?% 给出第一个包含 fn的单词(sort fn1 fn2 fn3 ... =>echo !?fn?% =>echo fn1)
更cool的,请参
man 3 history
和其他的一些man page
命令行编程 shell是直接支持命令行编程的. 比如:
sh > /usr/local/src
sh > ls *z
--------------------------------------------------------------------------------
ZendOptimizer-3.0.0-linux-glibc21-i386.tar.gz mod_fastcgi-2.4.2.tar.gz
dia-0.94.tar.gz mod_fcgid.1.10.tar.gz
gd-2.0.33.tar.gz mysql-4.0.27.tar.gz
jpegsrc.v6b.tar.gz mysql-standard-4.0.26-pc-linux-gnu-i686-glibc23.tar.gz
lighttpd-1.4.11.tar.gz
--------------------------------------------------------------------------------
开工了,我要把这些东西装起来,解压缩吧,好多呀,要敲n个命令.
别急,这不会花费你几秒钟的时间;
sh > for i in `ls *z`
sh > do
sh > tar zxvf $i
sh > done
眼晕了吧,不一会所有的包都解压缩了。
这只是一个简单的应用,其实你还可以加上判断,把gz和bz2,rar什么的分别用不同的程序解压缩.
使用sed和shell配合,你甚至可以一次修改一大堆的虚拟主机配置文件中的主目录:
sh > for i in `ls`
sh > do
sh > sed -i 's/\/home\//\/disk1\\/home\//g\' $i
sh > done
大搬家!把所有用户的虚拟主机都从/home搬迁到/disk1/home中了.
转自:http://blog.chinaunix.net/u/76/showart_155742.html
[转]Linux Shell History (快速使用Linux命令)的更多相关文章
- 超全整理!Linux shell及常用36类命令汇总
本文采编自http://blog.csdn.net,作者为ZHXGXN,版权归作者所有! 使用Linux shell是一些程序员每天的基本工作,但我们经常会忘记一些有用的shell命令和技巧.当然,命 ...
- Linux shell 日期,时间相关的命令
在shell脚本中,经常要用到跟获取日期相关的东西,这里记录一下Linux shell 获取日期的方法 获取当前日期:today=`date +"%Y-%m-%d"` 获取昨天的日 ...
- Linux Shell 几个特殊符号命令 & 、&& 、 ||
& 放在启动参数后面表示设置此进程为后台进程 默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动 ...
- 让linux中 history显示每条命令的操作时间及操作用户【转】
一.history 中显示日期时间用户名的办法 history 命令,用来显示命令行上的操作记录 不过默认是仅显示操作命令行本身,而没有记录操作时间等细节 例如 这样,我们查找记录时很麻烦,想回顾下某 ...
- 【linux shell系列--1】crontab命令
摘自:http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html 一.crond简介 crond是linux下用来周期性的执行某种任务或等 ...
- Linux Shell的18条常用命令整理
1. ls: 类似于dos下的dir命令 ls最常用的参数有三个:-a -l -F. ls –a Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了 ...
- Linux Shell编程 cut、print命令
cut命令:查找符合条件的列 cut 命令是在文件中提取符合条件的列,虽然 cut 命令用于提取符合条件的列,但是也要一行一行地进行数据提取.也就是说,先要读取文本的第一行数据,在此行中判断是否有符 ...
- linux shell脚本使用结构化命令
内容: 一.if-then命令 二.if-then-else命令 三.test命令 四.case命令 1.if-then结构化命令中最基本的类型,其格式如下: if command then comm ...
- linux中history加入显示时间命令代码
source 空格 配置文件,则配置立即生效,这里的soruce也可以用英文状态下的点即“.”代替 历史命令history -w将现在的命令记录写入到history里面 如果在history里面加上时 ...
随机推荐
- jQuery插入节点的方法
注:摘自<锋利的jQuery(第二版)> append() 向每个匹配的元素内部追加内容: HTML代码:<p>我想说:</p>jQuery代码:$(" ...
- Emacs配置erlang开发环境(.emacs 文件)
以前都是用sublime写erlang代码,好处不多说,主要是觉得一点不好用,不能实现函数跳转,及其不方便,尤其是代码一多,头疼.后来折腾过IntelliJ,下了个收费$0.00的版本,风格还是挺稀饭 ...
- EMV标准
EMV标准是由国际三大银行卡组织--Europay(欧陆卡,已被万事达收购).MasterCard(万事达卡)和Visa(维萨)共同发起制定的银行卡从磁条卡向智能IC卡转移的技术标准,是基于IC卡的金 ...
- perl 一个简单的面向对象的例子
<pre name="code" class="python">[root@wx03 wx]# cat x1.pm package x1; use ...
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
这是两个相关的程序,前者是后者的基础.实际上前一个程序也是在前面博文的基础上做的修改,请参考<在OpenCV中利用鼠标绘制直线> .下面贴出代码. 程序之一,在OpenCV中利用鼠标绘制矩 ...
- db2 for linux
https://www6.software.ibm.com/sdfdl/v2/regs2/db2pmopn/db2_v101/expc/Xa.2/Xb.aA_60_-idYiSFeSuWlF5-w4v ...
- uva 10163 - Storage Keepers(01背包)
题目链接:10163 - Storage Keepers 题目大意:给出m为仓库的数量, 给出n为有守夜人的数量, 然后给出n个数值,为对应守夜人应付的酬劳,每个守夜人的能力与他需要的酬劳是相等的,并 ...
- #include <time.h>
1 _strtime 2 difftime 3 srand 4 time 1 _strtime 函数简介 函数名: _strtime 头文件: time.h 函数原型: char * _strtime ...
- iOS使用sqlite3原生语法进行增删改查以及FMDB的使用
首先要导入libsqlite3.dylib并且加入头文件#import <sqlite3.h>,在进行增删改查之前还要先把数据库搞进去. 一种方法是从外面拷贝到程序里:http://www ...
- sql2008R2数据库备份--双机备份
二.解决SQL2008代理作业出现错误: c001f011维护计划创建失败的解决方法 SQL2008数据库总会出现从 IClassFactory 为 CLSID 为 {17BCA6E8-A95D-49 ...