正如标题所说,我试图做一个基本的文件浏览器。我想要做的是向用户提供一个对话框,允许他们选择一个文件,在本例中是.rar文件,但我希望他们能够选择放置文件的目录。他们每个人都倾向于命名以不同方式放置这些.rar文件的目录,这就是为什么我想让他们使用对话框在目录之间导航。
到目前为止,我已经提出了这个问题:
#!/bin/bash
# select a file with a dialog box
# save it in FILE
# If the user picks another directory, show the content of the new directory
# The script must keep iterating between directories until the correct files
# are chosen. This must be done recursively.
FILE=$(dialog --clear --title "File Viewer" --stdout \
--title "Select a file"\
--fselect /recursos/ 14 58)
# Here I try to keep iterating between directories
while [ -d "$FILE" ]
do
# If the user picks a directory
if [ -d "$FILE" ]
then
cd "$FILE" # Change path to that directory
DIR=$PWD # Save the new path
FILE="" # Clear the selection
dialog --clear # Destroy previous dialog box
else
echo "Error."
exit -1
fi
# Show a new dialog and allow a new selection
FILE=$(dialog --clear --title "File Viewer" --stdout \
--title "Select a file"\
--fselect "$DIR" 14 58)
echo "Value of $FILE inside the while"
exit -1 # Exit
done
# Print the name of the file
echo $FILE
我在while循环中使用强制退出,因为我想测试$ FILE的值,无论如何,它没有按预期工作。我还没有找到如何在目录之间进行迭代的示例。我无法使用Zenity或任何其他可视UI,因为我正在处理的服务器没有互联网,我无法向操作系统下载新功能或任何内容。另外,我不能使用--dselect作为Dialog的一个选项,我不知道为什么,所以你看到它是我可以使用的。
关于如何做到这一点的任何想法?
修改:
好的,这就是我想做的事情。有时,我工作的人会收到一些文件,他们会被压缩为.rar文件。他们将这些文件放在一个文件夹中,然后他们在到达日期后命名目录,让我们说JUN30或其他东西。但是他们随意命名文件夹,他们经常这样做,他们在命名这些目录时不遵循任何规则。
我想创建一个脚本,允许他们导航到他们放置这些压缩文件的文件夹,选择文件,一旦他们按下OK,程序将执行一系列步骤,这些步骤在这些文件被解压缩后完成
允许用户输入放置压缩文件的文件夹似乎不可行,因为视觉上工作会更容易。你知道,我不希望用户能够过多地搞乱。这样做是必要的,因为解压缩文件只是许多人的第一步,我被分配了自动执行大量任务。
修改
我改变了我的代码工作方式有点不同,因为旧的方式并没有做我想要的,这是我到目前为止所拥有的:
#!/bin/bash
function fileChooser(){
local __DIR=$1
local __RESULT=$(dialog --clear --title "Choose Directory" --stdout \
--title "Choose File"\
--fselect $__DIR 14 58)
echo $__RESULT
}
RESULT=$( fileChooser /recursos/ )
while [ -d "$RESULT" ]
do
RESULT=$( fileChooser "$RESULT/" )
done
# Print selection
echo $RESULT
我应该改进哪些建议,以使我的代码尽可能安全无故障?目的是除了选择带有文件的目录之外,用户应该能够执行一堆自动化任务而不需要太多干预。