在.bashrc中输入用户文本

时间:2016-05-12 11:07:16

标签: linux bash terminal

我试图制作一个简单的命令来删除所有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...

如何在终端中实际提示我的“是”,就好像是用户正在编写它一样?

第一次写作。 提前谢谢!

2 个答案:

答案 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中明确声明您的输入。