我正在使用Ubuntu server
,我想创建BASH
脚本,这将帮助我轻松浏览目录。
我找到了这段代码,我正在使用:
#!/bin/bash
cd ~/ftp/server/googledrive
prompt="Please select a file:"
options=( $(ls -1) )
PS3="$prompt "
select opt in "${options[@]}" "Quit" ; do
if (( REPLY == 1 + ${#options[@]} )) ; then
exit
elif (( REPLY > 0 && REPLY <= ${#options[@]} )) ; then
echo "You picked $opt which is file $REPLY"
break
else
echo "Invalid option. Try another one."
fi
done
但是它只列出了目录,每个目录都有相应的编号。是否有可能以我可以实际浏览目录的方式制作它?
编辑:感谢您的评论。我应该在创建帖子时这样做。
通过“实际导航”我的意思是:主要目标是能够选择.zip存档并将其解压缩到特定文件夹中,从而导航部分。因此,您必须从目录A导航到B然后再导航到C.从第一个目录开始,您将列出所有目录,并且每个目录都有一个唯一编号,通过选择一个编号,您将导航到该特定目录。这将重复,直到您找到所需的目录,然后选择“在此解压缩”选项。
答案 0 :(得分:1)
只是一个简单的例子来给你一些想法。输入目录号就可以了。点击 Ctrl + D 会弹回一个级别。
#!/bin/sh
function selector {
select name in *; do
if [ -d "$name" ]; then
cd "$name"
selector
cd ..
fi
done
}
selector
答案 1 :(得分:0)
这是针对帖子中描述的类似要求的解决方案。
在我的情况下,我有一组我经常导航到的首选目录。我将这个目录列表保存在名为~/dirs.txt
在~/.bashrc
中,我设置了2个别名来支持访问目录列表:
- 添加父目录:
醇>apd
将当前路径I添加到
中~/dirs.txt
文件
~~~
- 更改当前目录:
醇>ccd
将每一行列为菜单选项,并从所选的选项中列出 - 然后导航到该菜单项的目录
alias apdnwln="echo ' ' >> ~/dirs.txt"
alias apd=" pwd >> ~/dirs.txt; apdnwln"
alias ccd="showCcdMenu"
showCcdMenu(){
echo "----------------"
echo " Go To path: "
echo "----------------"
echo ""
dirsFile='/Users/someusername/dirs.txt'
IFS=$'\n' # make newlines the only separator
set -f # disable globbing
count=0
for i in $(cat < "$dirsFile"); do
count=$((count+1))
if [[ ( "$count" -lt "10" ) ]] ; then
printf " "
fi
echo " $count : $i"
done
printf "\n"
echo "Enter your choice"
read itemChoice
echo "your choice: $itemChoice"
#echo $answer
count=0
for i in $(cat < "$dirsFile"); do
count=$((count+1))
if [[ ( "$count" -eq "$itemChoice" ) ]] ; then
echo " going to dir: $i"
cd $i
break
fi
done
}
以下SO(&amp; Co.)帖子提出了这个问题。可能......谢谢!
答案 2 :(得分:0)
该项目为cd历史记录创建了一个出色的菜单。
https://github.com/xhawk18/fast_cd_menu
要安装它,请尝试---
curl -o- https://raw.githubusercontent.com/xhawk18/fast_cd_menu/master/install.sh | bash