我试图制作一个简单的命令来删除所有whatever.whatever~
文件,这是所有隐藏的垃圾文件,但我终端一直问我是或否,我不知道如何硬代码是脚本。
这是我到目前为止所做的事情:
alias cleandir='
for i in ./*~
do
rm "$i"
yes
done'
这导致终端要求我为每个要删除的对象输入yes或no,然后写入无限量的'y'。
例如:
joel test$ cleanup
rm: remove regular file ‘./~main~.cpp~’?
我写是或否,然后:
y
y
y
y
etc...
如何在终端中实际提示我的“是”,就好像是用户正在编写它一样?
第一次写作。 提前谢谢!
答案 0 :(得分:4)
为什么不直接使用find
?
alias cleandir="find /some/path -type f -name '*~' -delete"
这是我用来从Python中删除所有.pyc
文件并且工作得非常好(显然,改为使用-name '*.pyc'
)。
答案 1 :(得分:1)
要回答有关将输入输入“rm”流程的问题(更准确地说,任何流程),您可以管道来自流程的数据,或从文件中重定向,例如
$ yes | rm
将'yes'的标准输出管道输入'rm'的stdin。这对于流程的动态输出很有用。
或者您可以从文件重定向,例如
$ rm < 'myYesFile.txt'
获取myYesFile.txt
的内容并将其重定向到'rm'的标准输入。这对于 static 响应/输入数据集非常有用。请注意,您不需要单独的文件,并且可以使用 heredoc ,例如
$ rm <<EOF
y
y
y
EOF
并在shell中明确声明您的输入。