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

1.进行跳转:
pushd +2 : 注意看下图:
相当于循环转动两次
- 最开始:
~/snap ~/dataMining ~/dataMining ~stock - 转动第一次:
~/dataMining ~/dataMining ~stock ~/snap - 转动第二次:
~/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)
更多推荐




所有评论(0)