soft_link - yuhannah/skills_map GitHub Wiki

Linux 下创建、删除软链接

软链接介绍

待补充。

创建软链接

举个例子:

sudo ln -s ~/pbrt-v3/build/* /usr/bin/

删除软链接

接下来,要做的事情是删除上面指令创建的软链接。可以通过再次执行上面这条指令,来看看这条指令到底创建了那些软链接。

sudo ln -s ~/pbrt-v3/build/* /usr/bin/
ln: 无法创建符号链接'/usr/bin/bsdftest': 文件已存在
ln: 无法创建符号链接'/usr/bin/CMakeCache.txt': 文件已存在
ln: 无法创建符号链接'/usr/bin/CMakeFiles': 文件已存在
ln: 无法创建符号链接'/usr/bin/cmake_install.cmake': 文件已存在
ln: 无法创建符号链接'/usr/bin/CPackConfig.cmake': 文件已存在
ln: 无法创建符号链接'/usr/bin/CPackSourceConfig.cmake': 文件已存在
ln: 无法创建符号链接'/usr/bin/CTestTestfile.cmake': 文件已存在
ln: 无法创建符号链接'/usr/bin/cyhair2pbrt': 文件已存在
ln: 无法创建符号链接'/usr/bin/imgtool': 文件已存在
ln: 无法创建符号链接'/usr/bin/libpbrt.a': 文件已存在
ln: 无法创建符号链接'/usr/bin/Makefile': 文件已存在
ln: 无法创建符号链接'/usr/bin/obj2pbrt': 文件已存在
ln: 无法创建符号链接'/usr/bin/pbrt': 文件已存在
ln: 无法创建符号链接'/usr/bin/pbrtlex.cpp': 文件已存在
ln: 无法创建符号链接'/usr/bin/pbrtparse.cpp': 文件已存在
ln: 无法创建符号链接'/usr/bin/pbrtparse.h': 文件已存在
ln: 无法创建符号链接'/usr/bin/pbrtparse.output': 文件已存在
ln: 无法创建符号链接'/usr/bin/pbrt_test': 文件已存在
ln: 无法创建符号链接'/usr/bin/src': 文件已存在

从报错的 log 可以看出,该指令为~/pbrt-v3/build/路径下的所有这些文件都在/usr/bin/路径中创建了软链接。 所以,为了删除该指令创建的软链接,需要逐一对具体文件的软链接进行删除。

sudo rm -rf /usr/bin/bsdftest 
sudo rm -rf /usr/bin/CMakeCache.txt 
sudo rm -rf /usr/bin/CMakeFiles
sudo rm -rf /usr/bin/cmake_install.cmake 
sudo rm -rf /usr/bin/CPackConfig.cmake 
sudo rm -rf /usr/bin/CPackSourceConfig.cmake 
sudo rm -rf /usr/bin/CTestTestfile.cmake 
sudo rm -rf /usr/bin/cyhair2pbrt 
sudo rm -rf /usr/bin/imgtool 
sudo rm -rf /usr/bin/libpbrt.a 
sudo rm -rf /usr/bin/Makefile 
sudo rm -rf /usr/bin/obj2pbrt 
sudo rm -rf /usr/bin/pbrt
sudo rm -rf /usr/bin/pbrtlex.cpp 
sudo rm -rf /usr/bin/pbrtparse.cpp 
sudo rm -rf /usr/bin/pbrtparse.h 
sudo rm -rf /usr/bin/pbrtparse.output 
sudo rm -rf /usr/bin/pbrt_test 
sudo rm -rf /usr/bin/src

实际操作

以安装 CMake 为例,通过以下方式创建了软链接:

sudo ln -sf /opt/cmake-3.18.2/bin/* /usr/bin/

再次输入上述语句,没有任何输出。修改为输入下述语句:

ln -sf /opt/cmake-3.18.2/bin/* /usr/bin/

得到反馈如下:

ln: cannot remove '/usr/bin/ccmake': Permission denied
ln: cannot remove '/usr/bin/cmake': Permission denied
ln: cannot remove '/usr/bin/cmake-gui': Permission denied
ln: cannot remove '/usr/bin/cpack': Permission denied
ln: cannot remove '/usr/bin/ctest': Permission denied

可以看出创建了ccmakecmakecmake-guicpackctest目录的软链接。(未尝试删除软链接操作)