一个好玩的工具,基础介绍

在linux的命令行中,可能会遇到需要不停地在文件夹中进行跳转的时候,这个时候可以使用一个好玩的工具: dirs + pushd + popd的配套组合:
dirs:
可以记录pushd 进去的地址,之后可以进行跳转
pushd :它相当于栈的操作,每次pushd的地址会在最前面,最开始pushd的地址在最后面
popd : 将当前dirs中的序号为0的地址删除出去
例如在例如在
pushd ~/stock
pushd ~/dataMing 之后
dirs -v 查看当前存放的临时目录:

在这里插入图片描述

1.进行跳转:

pushd +2 : 注意看下图:
相当于循环转动两次

  1. 最开始:
    ~/snap ~/dataMining ~/dataMining ~stock
  2. 转动第一次:
    ~/dataMining ~/dataMining ~stock ~/snap
  3. 转动第二次:
    ~/dataMining ~stock ~/snap ~/dataMining
    最终pushd + 2的结果:

在这里插入图片描述

也就是说,pushd +2会将一开始序号为2的地址放到最前面,并自动跳转到最开始序号为2的地址

2.结合dirs + 其他命令,比如cp , ls进行使用

例如:
cp ./* $(dirs -v | head -n 2 | tail -n 1 | awk ‘"’“'{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲'"'"' | sed "s#…HOME#”)
这样就可以将文件复制到 dirs保存的地址的第二个位置(序号为1的地址)去了
为了方便使用,将$()里面的内容放入~/.bashrc文件
vim ~/.bashrc

alias dirs_1='dirs -v | head -n 2 | tail -n 1 | awk '"'"'{print $2}'"'"' | sed "s#^~#$HOME#"' 
alias dirs_2='dirs -v | head -n 3 | tail -n 1 | awk '"'"'{print $2}'"'"' | sed "s#^~#$HOME#"' 
alias dirs_3='dirs -v | head -n 4 | tail -n 1 | awk '"'"'{print $2}'"'"' | sed "s#^~#$HOME#"' 
alias dirs_4='dirs -v | head -n 5 | tail -n 1 | awk '"'"'{print $2}'"'"' | sed "s#^~#$HOME#"' 
alias dirs_5='dirs -v | head -n 6 | tail -n 1 | awk '"'"'{print $2}'"'"' | sed "s#^~#$HOME#"'

!!!注意不要丢掉那一串的 awk 后面的一串 ‘“‘” ,这是为了让 bashrc知道alias命令还未结束,
最终就可以丝滑使用以下等等命令而无需跳转了

cp ./* $(dirs_1) 
cp ./* $(dirs_3) 
ls $(dirs_1)
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐