我想编写一个脚本,允许用户输入特定的文件路径以通过 find 命令使用此变量
我尝试了这个,但似乎我的语法不正确
enter file path : $PATH
find $PATH -size +1M -exec rm {}\;
如果我希望用户也输入我应该使用的尺寸
find $userpath -size $size -exec rm {}\;
或其他内容怎么办
答案1
你需要使用read
.
echo Enter file path:
read userpath
find $userpath -size +1M -exec rm {}\;
另外,为了安全起见,您可能需要使用rm -i
.
答案2
嗯,我好像误读了你的问题。因此,如果您想读取输入,您可以使用 Bash 内置命令read
(请参阅 的输出help read
)。
您可以使用read
自定义提示符-p
,其输出会自动进入名为 的(shell!)变量REPLY
,除非您给出不同的名称。
read -p "enter file path : "
find "$REPLY" -size +1M -exec rm {} +
注意:我还\;
用 a+
替换了 the应该导致 的调用减少find
,但可移植性可能较差。
该变量PATH
具有特殊含义并已预先填充。你没有说这是哪个外壳,但我所知道的所有外壳的基本规则都是相同的。环境PATH
变量用于定位包含可执行文件(二进制文件、脚本...)的文件夹。然后,无需给出完整或相对路径,即可执行这些文件。
请查看这篇文档了解更多。引用:
$PATH
二进制文件的路径,通常是/usr/bin/
,/usr/X11R6/bin/
,/usr/local/bin
等。当给出命令时,shell 会自动在可执行文件的路径中列出的目录中进行哈希表搜索。该路径存储在环境变量 中,它是
$PATH
一个目录列表,以冒号分隔。通常,系统将 $PATH 定义存储在/etc/profile
和/或中~/.bashrc
(参见附录 H)。bash$ echo $PATH /bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/sbin:/usr/sbin
PATH=${PATH}:/opt/bin
将目录附加/opt/bin
到当前路径。在脚本中,以这种方式临时向路径添加目录可能会比较方便。当脚本退出时,这会恢复原始状态$PATH
(子进程,例如脚本,可能不会更改父进程(shell)的环境)。笔记作为安全措施
./
,通常会省略 当前的“工作目录” 。$PATH
使用echo "$PATH"
查看当前的正在运行的 shell 中该变量的内容。
答案3
你应该使用这样的东西:
read -i "Enter path" PATH
find $PATH -size +1M -exec rm {}\;
但是,PATH 变量会覆盖您的二进制搜索路径。另外 rm 命令可以提前安静地删除,无法删除所有内容。
我建议使用以下代码:
read -i "Enter path" DIR
/bin/find $DIR -size +1M -delete -print
此命令可能会破坏您的工作环境/操作系统,因此使用时需要您自担风险!