这是我的终端代码:
root@mehedi-Inspiron-1545:/home/mehedi/SD Card/sdcard/10.5.50.31:2121/PhoneStorage/Download# ls -al
total 46676
drwxrwxr-x 3 mehedi mehedi 4096 জুল 11 05:36 .
drwxrwxr-x 13 mehedi mehedi 4096 জুল 11 05:33 ..
-rw-rw-r-- 1 mehedi mehedi 83277 জুল 10 10:18 17861803_1540974315927302_7704865319494415873_n.jpg
drwxrwxr-x 2 mehedi mehedi 4096 জুল 10 10:18 Adobe Reader
-rw-rw-r-- 1 mehedi mehedi 18952 জুল 10 10:18 config.bin
-rw-rw-r-- 1 mehedi mehedi 407930 জুল 10 10:18 download_20170115_010150.jpeg
-rw-rw-r-- 1 mehedi mehedi 66275 জুল 10 10:18 DVB-T-w-Gliwicach-kierunki-2014.02.17.jpg
-rw-rw-r-- 1 mehedi mehedi 3395403 জুল 10 10:19 Nasi_Lemak,_Mamak,_Sydney.jpg
现在谁能告诉我如何删除名为 . 和 .. 的文件夹,这两个文件夹是从我的 SD 卡中复制的。
答案1
这些是当前目录 ( .
) 和父目录 ( ..
) 的标准 Linux 符号。它们与 Android 或 SD 卡无关。这只是标准文件系统行为,它们存在于文件系统上的每个目录中。
$ pwd
/home/xieerqi/testdir/parent
$ ls -a
./ ../
# going to . directory doesn't do anything, you remain in same place
$ cd .
$ pwd
/home/xieerqi/testdir/parent
# going to .. brings you up one level to parent folder
$ cd ..
$ pwd
/home/xieerqi/testdir
重要的例外是,对于/
根目录,..
将指向其自身,因为没有更高的目录可以去。
您也无法对它们执行删除操作(这没有意义,因为您正试图摆脱当前的工作目录或其父目录):
$ pwd
/home/xieerqi/testdir/parent
$ rm -r .
rm: refusing to remove '.' or '..' directory: skipping '.'
$
那么你应该怎么做呢?没什么可做的。可以说,它们是 Linux 软件包的一部分。这并没有损坏,所以不要试图修复它。
经常使用.
是通过./
符号表示的。这可以在您运行当前工作目录中的脚本或可执行文件(如./myscript.sh
或 作为命令的参数)的情况下使用,表示当前目录中的文件,如ls ./myfile.txt
。最后一种方法通常与 globstar 一起使用,以扩展为当前目录中的多个文件名,例如ls ./*
。这种方法对于可能包含前导的文件名特别有用-
,因此这些文件名可能会被命令误解为参数,而 则./-myfile.txt
避免了这个问题。
还需要注意的是,由于包含前导点的文件名在 Linux 上被视为隐藏,如果您明确指定用于处理隐藏文件名的命令,则可以看到这两个“指针”目录(除非您的命令默认这样find
做)。
答案2
这些是 Linux 本身管理的“硬链接”。
让我们创建一个目录,并查看它的详细信息:
$ mkdir dir1
$ ls -ld dir1
drwxrwxr-x 2 ravexina ravexina 4096 Jul 11 19:14 dir1/
注意数字“2”,这是指向此目录的链接数(dir1
),其中一个是目录名称本身,另一个是.
目录内部。
让我们在里面创建一个新目录dir1
:
$ mkdir dir1/new-dir
现在查看 dir1 的详细信息:
$ ls -ld dir1
drwxrwxr-x 3 ravexina ravexina 4096 Jul 11 19:14 dir1/
链接数变成了“3”,这是因为..
其中new-dir
的 指向dir
。
这两个链接有不同的用途,例如..
您可以相对地移动到目录。
的一个最重要的用途.
是在目录内运行 shell 脚本,当你for.sh
通过输入名称来运行名为 的脚本时会发生什么?shell 会认为你正在尝试运行名为 的命令foo.sh
,它会搜索它,如果找不到它并输出错误,./script
你需要告诉 shell 你想要运行哪个文件。