3. 编写⼀段bash shell程序,保存为file.sh 判断⽤户输⼊是否为有效⽬录路径。如果不是,提示该路径不是⽬录路径。如果是 ,则依次输出该⽬录下的所有内容的 “⽂件路径_⽂件类型符号”形式。 直到⽤户输⼊q退出,否则⼀直提示⽤户输⼊。 例如: _ input a directory: /etc /etc_d /etc/passwd_-
时间: 2024-02-12 22:09:35 浏览: 28
以下是实现要求的bash shell程序,保存为file.sh:
```bash
#!/bin/bash
while true; do
read -p "input a directory: " path
if [ "$path" = "q" ]; then
exit
fi
if [ ! -d "$path" ]; then
echo "该路径不是目录路径"
else
for file in "$path"/*; do
if [ -f "$file" ]; then
echo "$file"_"$(stat -c '%A' "$file" | awk '{print substr($0,0,1)}')"
elif [ -d "$file" ]; then
echo "$file"_d
fi
done
fi
done
```
程序逻辑如下:
1. 使用while循环,不断提示用户输入目录路径。
2. 如果用户输入了q,则退出程序。
3. 如果输入的路径不是目录路径,则提示用户该路径不是目录路径。
4. 如果输入的路径是目录路径,则使用for循环遍历该目录下的所有文件和子目录。
5. 对于每个文件,使用stat命令获取其权限信息,并使用awk命令截取权限字符串的第一个字符作为文件类型符号。
6. 对于每个子目录,直接输出路径加上下划线和d作为文件类型符号。
7. 输出文件路径和文件类型符号。
8. 继续循环,等待用户输入。