[转]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里面加上时 ...
随机推荐
- Linux学习--alias命令
alias用于设置命令的别名,具体相应命令如下: 1.alias显示当前设置的别名 2.设置命令别名: alias 命令名=‘别名命令’ 3.显示指定的别名设置:alias name 4.取消相应 ...
- iOS在Xcode6中添加空模板
1.在Xcode6.0以下版本找到空模板(路径与下方相同). 2.将空模板拖入路径:Macintosh HD ▸ 应用程序 ▸ Xcode(版本号).app ▸ Contents ▸ Develo ...
- 矩阵转置 O(1)空间
题目:用O(1)的空间实现矩阵的转置 为了方便,使用一维数组来分析.所谓矩阵转置,行变列,列变行.在转置的过程中,有的元素位置是不变的:对于变化位置的元素,要求O(1)空间完成,那么这些位置的变化一定 ...
- qt介绍
http://www.oschina.net/p/qt Qt 是一个跨平台的C++图形用户界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序. ...
- Hibernate 、多表关联映射 - 一对一关系映射(one- to-one)
hibernate.cfg.xml: <hibernate-configuration> <session-factory name="sessionFactory&quo ...
- 全国计算机等级考试二级教程-C语言程序设计_第13章_编译预处理和动态存储分配
free(p);//释放内存 p = NULL;//软件工程规范,释放内存以后,指针应该赋值为空 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h ...
- g++编译cpp文件
gdb调试c程序打不到断点的原因可能是编译c文件的时候没有加-g选项,-g选项是编译加debug信息的,不加是打不到断点的 g++编译cpp文件 g++ -g -c *.cpp 编译 g+ ...
- arcgis for javascript之ArcGISDynamicMapServiceLayer图层控制的实现
图层控制是非常多GIS系统里面必须的一个小功能,本文就说说arcgis for javascript下ArcGISDynamicMapServiceLayer图层控制的实现方式.首先看图: 实现效果 ...
- Java NIO——2 缓冲区
一.缓冲区基础 1.缓冲区并不是多线程安全的. 2.属性(容量.上界.位置.标记) capacity limit 第一个不能被读或写的元素 position 下一个要被读或写的元素索引 mark ...
- [转]spring mvc注解方式实现向导式跳转页面
由于项目需要用到向导式的跳转页面效果,本项目又是用spring mvc实现的,刚开始想到用spring 的webflow,不过webflow太过笨重,对于我们不是很复杂的跳转来说好像有种“杀鸡焉用牛刀 ...