在一台 Linux 机器(实际上是一个计算集群)上,我从另一个用户那里复制了一个文件夹(他授予我使用适当的 chmod 执行此操作的权限)。
该文件夹包含我无法访问的文件的符号链接。我想更新它们,以便它们指向我拥有的相同文件的副本。
但是,当我尝试使用 这样做时ln -sf,我得到了Permission denied。
为什么会这样?
这就是链接:
$ ls -l 50ATC_Rep2.fastq
lrwxrwxrwx 1 bli cifs-BioIT 55 21 nov. 13:45 50ATC_Rep2.fastq -> /pasteur/homes/mmazzuol/Raw_data/CHIP_TEST/BM50.2.fastq
Run Code Online (Sandbox Code Playgroud)
我无权访问其目标,但我有它的副本。这就是我想要的新目标:
$ ls -l ../../../raw_data/CHIP_TEST/BM50.2.fastq
-rwxr-xr-x 1 bli cifs-BioIT 4872660831 21 nov. 14:00 ../../../raw_data/CHIP_TEST/BM50.2.fastq
Run Code Online (Sandbox Code Playgroud)
这就是我尝试时发生的情况ln -sf:
$ ln -sf ../../../raw_data/CHIP_TEST/BM50.2.fastq 50ATC_Rep2.fastq
ln: accessing `50ATC_Rep2.fastq': Permission denied
Run Code Online (Sandbox Code Playgroud)
看来当前目标的权限才是重要的,而不是链接本身的权限。
我可以通过先删除链接然后重新创建它来规避该问题:
$ rm 50ATC_Rep2.fastq
rm: remove symbolic link `50ATC_Rep2.fastq'? y
$ ln -s ../../../raw_data/CHIP_TEST/BM50.2.fastq 50ATC_Rep2.fastq
$ ls -l 50ATC_Rep2.fastq
lrwxrwxrwx …Run Code Online (Sandbox Code Playgroud) 我在grymoire 中阅读了以下内容:
一个简单的例子是将“旧”文件中的“day”更改为“new”文件中的“night”:
sed s/day/night/ <old >new或者另一种方式(对于 UNIX 初学者),
sed s/day/night/ old >new
为什么作者会认为第一种形式更高级?
我的意思是,与“初学者”语法相比,使用这种形式有什么优势?
我有alias rm='rm -i'我的~/.bashrc文件(我刚刚了解到它被一些人认为是不好的做法)。
使用nice以下命令运行时似乎没有考虑别名:
bli@naples:~$ touch test
bli@naples:~$ rm test
rm: remove regular empty file 'test'? n
bli@naples:~$ nice rm test
bli@naples:~$
Run Code Online (Sandbox Code Playgroud)
为什么呢?