这使用安全吗?
sudo rm /Desktop/FILENAME
Run Code Online (Sandbox Code Playgroud)
想使用 sudo 的原因是我看不到文件。
我不小心输入了sudo rm /Desktop/index.html
. 它没有找到它,但仍然可以删除某些内容吗?
如果文件本身以 .bash 开头,我需要一个 bash 命令来删除整个文件<html>
。
我不确定解决这个问题的最佳方法......
上下文:我通过 curl 请求下载了一系列文件。大多数情况下,下载和处理工作正常。但其他时候,无论出于何种原因,下载请求都会导致 404。当我得到这些时,下载文件的内容以 html 标签开头。当我的其余处理遇到此文件时,它会挂起。所以我想在我的其他处理之前运行一个命令来 cat 每个文件并删除文件,如果它有这个 html 标签。
我不小心跑了 sudo rm *
我以为我在一个不重要的子文件夹中。
结果是我删除了一些非常重要的文件。有什么办法可以找回我的数据吗?
我有一个样本dir
如下:
/path/to/dir/
- f1.txt
- f2.txt
- f3.txt
Run Code Online (Sandbox Code Playgroud)
我想清除或删除下面的所有文件,/path/to/dir
而不实际删除目录/path/to/dir
本身。
怎么做?
目前,我只是使用rm -rf /path/to/dir
命令删除目录并使用mkdir /path/to/dir
. 但此命令也会删除该目录。
我已经安装(编译)了 emerald。该命令make uninstall
不起作用(没有生成文件,因为它只是一个脚本)。所以我决定手动删除文件。但是有很多文件。
我尝试了一些东西,但没有奏效。所以我来到这里寻求一些建议。
ls -R | grep blabla*
我可以添加的命令来显示文件目录(它只显示文件名)ls -R | grep bla* | rm
吗?请记住,我只是在学习 bash,所以请以温和的方式解释。
rm -rf
并且rm -r
似乎在做同样的事情。教程 ( https://help.ubuntu.com/community/Beginners/BashScripting ) 指出这-f
是强制的,计算机不会请求删除文件的权限。
为了验证这一点,我创建了一个锁定的文件,但-r
并-rf
达到不删除文件相同的结果(权限被拒绝)。
为什么是这样?
假设在桌面上dir1
创建了一个目录sudo
。
sudo mkdir dir1
Run Code Online (Sandbox Code Playgroud)
然后我申请chown
并chmod
如下:
sudo chown root:root dir1
sudo chmod go-rwx dir1
Run Code Online (Sandbox Code Playgroud)
现在dir1
只能由 owner 访问root
。
$ ls -ld dir1
drwx------ 2 root root 4096 Jul 29 19:21 dir1
Run Code Online (Sandbox Code Playgroud)
如果用户 ( $USER
= pandya
) 尝试dir1
使用GUI nautilus (没有sudo
)删除,那么他不能,这没关系。
但是,如果尝试使用终端删除,那么他可以这样做,这是不行的:-
rm -r
(没有sudo
):
$ rm -r dir1
rm: descend into write-protected directory ‘dir1’? Y
rm: remove write-protected directory ‘dir1’? …
Run Code Online (Sandbox Code Playgroud)我以前曾经file-roller
将 ISO 映像提取到我的桌面,但现在我不能再“像我自己一样”删除或移动/重命名这些文件,只能使用sudo
. 不过,更改权限 ( chmod
) 或内容是可能的。
bytecommander@BC-AlkaliMetal:~/Desktop$ ll AUTORUN.INF
-rwxr-xr-x 1 bytecommander bytecommander 132 Jul 21 2005 AUTORUN.INF*
bytecommander@BC-AlkaliMetal:~/Desktop$ chmod 777 AUTORUN.INF
bytecommander@BC-AlkaliMetal:~/Desktop$ echo "Something useless" > AUTORUN.INF
bytecommander@BC-AlkaliMetal:~/Desktop$ cat AUTORUN.INF
Something useless
bytecommander@BC-AlkaliMetal:~/Desktop$ ll AUTORUN.INF
-rwxrwxrwx 1 bytecommander bytecommander 18 Sep 22 21:13 AUTORUN.INF*
bytecommander@BC-AlkaliMetal:~/Desktop$ rm AUTORUN.INF
rm: cannot remove 'AUTORUN.INF': Permission denied
Run Code Online (Sandbox Code Playgroud)
但是,我想了解究竟是什么让我回到了这里。
我的桌面目录位于 ext4 分区上。输出mount
:
/dev/sdb5 on / type ext4 (rw,noatime,nodiratime,errors=remount-ro,data=ordered)
Run Code Online (Sandbox Code Playgroud)
我找不到任何可疑的权限、ACL、扩展属性或我所知道的任何其他内容:
bytecommander@BC-AlkaliMetal:~/Desktop$ stat AUTORUN.INF
File: 'AUTORUN.INF'
Size: 18 …
Run Code Online (Sandbox Code Playgroud) 假设我有一个目录/home/smit/test
。在它里面我有很多子目录和文件。我只想删除目录/home/smit/test
而不是其内部内容,以便 的文件和子目录/home/smit/test
将自动包含在/home/smit/
?
另外,在实际情况下,我有/usr/share/backgrounds/all/
一个包含许多子目录的目录。这些子目录有很多图像。我想删除所有子目录,以便它们的内容将包含在/usr/share/backgrounds/all/
. 我可以用 GUI 来做到这一点,但我想通过终端用很酷的方式来做到这一点。我该怎么做?
几年前,我从复制所有文件/usr/local/bin
到/bin
。
现在我的/bin
目录中堆满了不需要的文件。如何使用find
命令删除它们而无需安装第三方软件包?
注意:涉及第三方软件包的答案可能对有相同问题的其他人有所帮助。
rm ×10
command-line ×6
bash ×3
directory ×2
permissions ×2
sudo ×2
acl ×1
chmod ×1
coreutils ×1
files ×1
filesystem ×1
find ×1
grep ×1
ls ×1