昨天我做了一些愚蠢的事情,我今天意识到了。 我跑了:
/root# chmod o-rwx * .*
这应该删除当前目录( /root )中所有文件的读,写和执行权限。 只要我这样做, screenperformance奇怪,我不能作为非root用户运行命令,ssh拒绝工作,除非我用rootlogin。
这是由于bash扩大的事实造成的。 现在,我怎么chmod chmod目录中的所有文件,而不使用find ,循环或其他语言,如Perl?
如果你使用的是bash,那么设置dotglob会使*也匹配以a开头的文件. 。
shopt -s dotglob echo *
你说“不使用发现”,但发现真的是这个工作的正确工具,因为它提供了一个高层次的控制。 你可以告诉它是否recursion,是否改变目录等等。例如:
find . -maxdepth 1 -type f find . -maxdepth 1 -type f find . -maxdepth 1 find . -maxdepth 1 查找通常不区分常规文件和“隐藏”文件,但不包括.. 如果你想让它忽略它们,你可以添加'!' -name '.*' '!' -name '.*' ,如果你想让它只在点文件上运行,你可以添加-name '.*' 。
另外一件好事就是你可以做上面的事情,并打印出它将要操作的条目。 因此,添加“| less”到最后,您可以在实际进行更改之前观察它的操作。 这个审查步骤可能会阻止你看到的问题。
一旦你有一个你喜欢的find命令,你可以通过添加-exec chmod o-rwx '{}' ';'来运行chmod命令-exec chmod o-rwx '{}' ';' 到最后。 更改';' 到+如果你的find版本支持它。
真的,在这种情况下find工具是你不应该害怕的,它确实是工作的正确工具。
它简短而快乐,并不完全可靠,因为它忽略了奇怪名称的点名(例如.+baz ),但是由于这些名称很less,所以我教自己做
chmod -R foo:bar * .[0-z]*