Linux 当前目录中打开的最后一个目录的别名
我想为打开当前目录中的最后一个目录创建别名,也许我认为可以使用此命令获取目录名: ls-1t|头-1 但我不是说要用它 使用函数或别名解决:Linux 当前目录中打开的最后一个目录的别名,linux,bash,shell,alias,Linux,Bash,Shell,Alias,我想为打开当前目录中的最后一个目录创建别名,也许我认为可以使用此命令获取目录名: ls-1t|头-1 但我不是说要用它 使用函数或别名解决: 别名oo='cd$(ls-1t | head-1)您提到的命令无法区分文件和目录,请改用以下命令: LAST_DIR=$(ls -ltr | egrep ^d | awk '{ print $9 }'| head -1) 首先,不要创建别名!从manbash: 对于几乎所有用途,别名都被shell函数取代 因此,除非您确实知道别名机制是什么,并且您知道您
别名oo='cd$(ls-1t | head-1)您提到的命令无法区分文件和目录,请改用以下命令:
LAST_DIR=$(ls -ltr | egrep ^d | awk '{ print $9 }'| head -1)
首先,不要创建别名!从
manbash
:
对于几乎所有用途,别名都被shell函数取代
因此,除非您确实知道别名机制是什么,并且您知道您确实需要别名,否则请使用函数
以下函数将使您进入当前目录的最后一个目录(关于按名称排序):
cdlast() {
local shoptnullglob=$(shopt -p nullglob)
shopt -s nullglob
local dirs=( */ )
$shoptnullglob
((${#dirs[@]})) && cd -- "${dirs[-1]}"
}
几句话:这不会考虑隐藏目录,除非您设置了shell选项dotglob
。如果当前目录中没有目录,则函数不执行任何操作(但返回代码为1)
如果需要将cd刻录到上次修改的目录中,事情会变得更棘手(因此更有趣):
如果你喜欢这些函数,把它们放在你的
.bashrc
你几乎拥有了它:cd$(ls-1t | tail-1)
成功了。你说的最后一个目录是什么意思?你是指最后一个修改过的目录还是最后一个按名称排序的目录?
cdlast() {
local shoptnullglob=$(shopt -p nullglob)
shopt -s nullglob
local dirs=( */ )
$shoptnullglob
((${#dirs[@]})) && cd -- "${dirs[-1]}"
}
cdlast() {
local shoptnullglob=$(shopt -p nullglob)
shopt -s nullglob
local dirs=( */ )
$shoptnullglob
((${#dirs[@]})) || return 1
local last=${dirs[0]}
for d in "${dirs[@]}"; do
[[ $d -nt $last ]] && last=$d
done
cd -- "$last"
}