将 PATH 存储为 centos 7 脚本中的变量

将 PATH 存储为 centos 7 脚本中的变量

我想编写一个脚本,允许用户输入特定的文件路径以通过 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

此命令可能会破坏您的工作环境/操作系统,因此使用时需要您自担风险!

相关内容