如果我创建一个文件并对其进行符号链接,例如
touch "example"
ln -s "example" "link_example"
Run Code Online (Sandbox Code Playgroud)
并使用
rm example
Run Code Online (Sandbox Code Playgroud)
符号链接仍然存在。如何删除文件以及指向该文件的所有符号链接?
我试图了解cp --preserve=links
单独使用时的作用,从我的测试来看,它似乎正常复制了一个普通文件并取消了符号链接的引用,但它似乎与 cp -L 在单个文件上使用时具有相同的效果。
这是真的还是我遗漏了什么?
ls --group-directories-first
在文件之前显示所有目录,但如果有指向目录的符号链接,则会在文件之间显示。有没有办法将目录符号链接与其他常规目录分组?
我目前不明白在使用该ls
命令时尝试查找指向目录的符号链接的内容或信息时发生了什么。我知道-H
该ls
命令有一个选项将遵循命令行上列出的符号链接。手册页ls
没有说明只有在使用该-l
选项时才需要这样做。如果我只是做类似的事情ls symLinkToDir
,它将列出链接目录的内容,而没有其他选项。但是,如果我这样做,ls -l symLinkToDir
它只会显示有关链接的信息,除非我也包含该-H
选项。这个例子就是我要说的:
brian@LinuxBox:~$ ls playground/linkedDir
file4 file5
brian@LinuxBox:~$ ls -l playground/linkedDir
lrwxrwxrwx 1 brian brian 4 Feb 18 16:42 playground/linkedDir -> dir2
brian@LinuxBox:~$ ls -lH playground/linkedDir
total 0
-rw-rw-r-- 1 brian brian 0 Feb 18 16:41 file4
-rw-rw-r-- 1 brian brian 0 Feb 18 16:41 file5
Run Code Online (Sandbox Code Playgroud)
我在这里不明白吗?这只是一种奇怪的工作方式吗?如果这确实是它的工作原理,手册页不应该说在某些条件下不需要该-H
选项就可以遵循符号链接吗?预先感谢您的意见。
我将“根”分区分为两个:一个包含大多数文件的普通分区,另一个用于可以“增长”的区域。具体来说,这意味着,我有如下符号链接:
/var/log -> /part1/log
/var/cache -> /part1/cache
/var/spool -> /part1/spool
Run Code Online (Sandbox Code Playgroud)
这一直很有效,直到我开始使用 AppArmor,它一直抱怨 cupsd 查看 /part1/log/cups/.. 中的文件之类的事情。
我目前通过为受 AppArmor 保护的每个应用程序添加条目来解决此问题,但这很乏味。
是否有某种方法可以一劳永逸地告诉 AppArmor,如果/var/log/FOO
允许访问,则/part1/log/FOO
也应该允许访问?
我有一个包含文件、子目录和符号链接的目录
如何在没有符号链接或符号链接引用的文件的情况下仅压缩该目录中的文件和文件夹?
我有一个test
包含三个文件的目录ls -l test
:
total 8
-rw-r--r-- 1 mb mb 16 Jul 25 11:12 regular_file
-rwxr-xr-x 1 mb mb 19 Jul 25 11:02 script.sh
lrwxrwxrwx 1 mb mb 12 Jul 25 11:14 symlink -> regular_file
Run Code Online (Sandbox Code Playgroud)
它包含一个常规文件、一个符号链接和一个可执行脚本。
使用 归档此目录后tar -czf test.tgz test/
,我想使用 7-Zip 提取三个文件:
7z x -tgzip test.tgz && 7z x -ttar test.tar
Run Code Online (Sandbox Code Playgroud)
不幸的是,7-Zip 不会生成原始文件:该脚本丢失了其可执行位,symlink
不再是符号链接,而是包含文本的文件regular_file
。
total 12
-rw-r--r-- 1 mb mb 16 Jul 25 11:12 regular_file
-rw-r--r-- 1 mb mb 19 Jul …
Run Code Online (Sandbox Code Playgroud) 我正在尝试运行find
命令,由于文件夹的设置方式,我在脚本中多次收到以下警告:
find -L ./server/ -type f -printf '%s %p\\n' | <rest of really long complicated script>\n
Run Code Online (Sandbox Code Playgroud)\n输出
\nfind: File system loop detected; \xe2\x80\x98./server/~andreas/root\xe2\x80\x99 is part of the same file system loop as \xe2\x80\x98./\xe2\x80\x99.\nfind: File system loop detected; \xe2\x80\x98./server/~bob/root\xe2\x80\x99 is part of the same file system loop as \xe2\x80\x98./\xe2\x80\x99.\nfind: File system loop detected; \xe2\x80\x98./server/~charles/root\xe2\x80\x99 is part of the same file system loop as \xe2\x80\x98./\xe2\x80\x99.\n...\n
Run Code Online (Sandbox Code Playgroud)\n我知道为什么我会收到这些消息。这些符号链接是故意放置在那里供其他脚本使用的,因此我想安全地忽略控制台输出中的这些警告。
\n如何防止find
显示“检测到文件系统循环”之类的警告,但仍保留所有“真实”错误消息?
我不能只是告诉 …
$ sudo su
# dd if=/dev/zero of=./myext.img bs=1024 count=100
.
.
.
# modprobe loop
# losetup --find --show myext.img
/dev/loop0
# mkfs -t myext /dev/loop0
.
.
.
# mkdir mnt
# mount /dev/loop0 ./mnt
# cd mnt
# ls -al
total 17
drwxr-xr-x 3 root root 1024 Jul 21 02:22 .
drwxr-xr-x 11 shisui shisui 4096 Jul 21 02:22 ..
drwx------ 2 root root 12288 Jul 21 02:22 lost+found
Run Code Online (Sandbox Code Playgroud)
(删掉一些命令的一些输出)。我的第一个问题是,为什么没有mnt
出现在ls -al
输出中?我所看到的只是root
。我进入了\mnt …
我不经常切换机器,但我不想被绑定到一台机器。我不升级硬件的原因通常是因为我不想设置新机器。
到目前为止,我已经努力将大部分内容集中在主目录中,以便轻松备份和部署在新计算机上。
最大的问题是那些(可能有数百个)配置文件,我已经对其进行了一些(通常是微小的)更改,但如果没有它们在新机器上,任何东西都无法工作。
我有一个想法,制作一个脚本,从 etc 中抓取文件,将它们放在我的主目录中,并用符号链接替换原始文件。然后我会有另一个脚本,在新机器上将检查抓取的文件并用符号链接替换原始文件。
我不确定这听起来有多令人困惑,所以这里有一个简单的例子。
#!/bin/bash
FILE=$(realpath $1)
TARGET=$(realpath ~/snatched)$FILE
mkdir -p $TARGET
mv $FILE $TARGET
ln -s $TARGET $FILE
Run Code Online (Sandbox Code Playgroud)
然后运行
snatch /etc/hosts
Run Code Online (Sandbox Code Playgroud)
将在原始位置放入并创建符号链接/etc/hosts
。~/snatched/etc/hosts
我担心水下的石头,任何会让我将来后悔的事情,基本上都是来自更有经验的用户的建议。
谢谢!