linux 历史指令,Linux 命令历史

bash shell 的 history 查看命令历史,属于内置函数所以 which history 是找不到的。

$type history

history is a shell builtin

输入 history 查看命令历史每行一个,同时每个记录有个数字配合 ! 可以快速重新运行该命令。

$history 10

1371 ls

1372 cp bismark_methylation_extractor1.sh bismark_methylation_extractor2.sh

1373 vim bismark_methylation_extractor2.sh

1374 less bismark_methylation_extractor2.sh

1375 qsub bismark_methylation_extractor2.sh

1376 vim bismark_methylation_extractor1.sh

1377 qstat

1378 history

1379 type history

1380 history

这里数字 10 表示只显示 10 条记录。第 1379 命令是 type history 因此输入 !1379 就可以直接重新运行这个命令。

$!1379

type history

history is a shell builtin

为了防止意外运行了错误的历史命令,可以先做个检查。

$!1379:p

type history

也可以用负数,表示倒数第几个历史命令。本来 1379 是倒数第二个,但是刚刚又运行了一次,因此他成了倒数第一个和第三个,所以 !-3 就能把他再运行一次。如果要运行倒数第一个直接 !! 就行。

$!-3

type history

history is a shell builtin

想重新运行前几个命令时还是使用上翻键比较爽快,要找前十几个几十个时还是 history 命令适合。

配合 grep 命令可以帮助搜索到需要的历史,像我这种 1000 多条历史记录的,有时候很需要搜索。

$history | grep qstat

385 qstat

630 qstat

1185 qstat

1187 qstat

1197 qstat

1211 qstat

1223 qstat

1231 qstat

1244 qstat

1254 qstat

1265 qstat

1268 qstat

1270 qstat

1274 qstat

1276 qstat

1279 qstat

1284 qstat

1298 qstat

1338 qstat

1359 qstat

1367 qstat

1370 qstat

1377 qstat

1382 history | grep qstat

也可以 ! 紧跟搜索的字符串,缺点就是他搜索到命令后会直接运行,所以为了保险还是配合 grep 去做搜索比较好。或者是之前说的用 :p 打印命令出来,而不是立即执行,这样可以先检查。

$!type

type history

history is a shell builtin

# 用 :p 先进行打印

$!type:p

type history

用 -d 参数指定可以删除某条记录。

$history -d 1382

这样就把第 1382 条命令历史记录删除了。

用 ^[str1]^[str2]^ 可以对命令先进行字符串替换然后执行。比方说我先 history | grep qstat 然后发现其实我是想 grep qsub 的,此时把之前命令 qstat 替换为 qsub 就行。

$^qstat^qsub^

history | grep qsub

不过测试的时候发现这个替换可能只能对上一条命令替换执行,更早的命令没成功过。

使用 :n 可以获取命令的第 n 个参数,第一个和最后一个可以分别用 ^ 和 $ 符号。比如说我这里第 1394 条记录是 type history ,那么第一个参数是 type 最后一个参数是 history。此时用 !1394:$ 表示取 1394 命令最后一个参数也即 history,那么 !1394:$ 10 就等同于 history 10 命令。

$history 10

1389 history

1390 history -d 1382

1391 history

1392 history 10

1393 $type history

1394 type history

1395 history --help

1396 history | grep qstat

1397 history | grep qsub

1398 history 10

# 取命令最后一个参数

$!1394:$ 10

history 10

1389 history

1390 history -d 1382

1391 history

1392 history 10

1393 $type history

1394 type history

1395 history --help

1396 history | grep qstat

1397 history | grep qsub

1398 history 10

其实最常用往往是使用上一命令的最后一个参数,比如说拷贝了以前旧脚本打算改一改使用,用 cp 命令后可以直接 vim !$ 或者 vim !!:$ 编辑拷贝的文件。

取全部参数使用 * 按照范围取可以用 n-m 这种风格。

大多时候 Linux 命令都有一些参数是文件/目录路径,使用 :h 和 :t 和 :r 能简单处理路径。使用 :h 能够移除文件名,保留目录路径; :t 相反取文件名;而 :r 移除文件后缀。

(DNA) [/datapool/pengguoyu/20200421BLCA_Omics/WGBS/Shell@vcompute-2-1]

$ll -h /datapool/pengguoyu/20200421BLCA_Omics/WGBS/Shell/Bismark_8.sh

-rw-rw-r--. 1 pengguoyu pengguoyu 500 Jun 15 09:02 /datapool/pengguoyu/20200421BLCA_Omics/WGBS/Shell/Bismark_8.sh

(DNA) [/datapool/pengguoyu/20200421BLCA_Omics/WGBS/Shell@vcompute-2-1]

$ls !$:h

ls /datapool/pengguoyu/20200421BLCA_Omics/WGBS/Shell

Bismark_1.sh Bismark_5.sh Bismark_7.sh Bismark_8.sh bismark_methylation_extractor1.sh bismark_methylation_extractor2.sh deduplicate_bismark.sh M-bias1.sh MergeCleanData.sh

Linux 有非常多提升效率的小技巧,硬记是不可能的,尝试多去使用慢慢就熟悉了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值