测试断掉的连接

xiaoxiao2026-06-10  12

1 #!/bin/bash 2 # broken-link.sh 3 # 由Lee bigelow所写<ligelowbee@yahoo.com> 4 # 已经征得作者的同意. 5 6 #一个用于发现死符号链接并且输出它们的链接文件的纯shell的脚本。 7 #所以它们能把输出提供给xargs并处理 :) 8 #例如: broken-link.sh /somedir /someotherdir|xargs rm 9 # 10 #下面是更好的发现死符号链接的办法: 11 # 12 #find "somedir" -type l -print0|\ 13 #xargs -r0 file|\ 14 #grep "broken symbolic"| 15 #sed -e 's/^\|: *broken symbolic.*$/"/g' 16 # 17 #但这不是纯bash脚本,下面的则是. 18 #注意: 谨防在/proc文件系统和死循环链接中使用! 19 ############################################################## 20 21 22 #如果没有参数被传递给脚本作为搜索目录,则使用当前目录 23 # 24 # 25 #################### 26 [ $# -eq 0 ] && directorys=`pwd` || directorys=$@ 27 28 #Setup the function linkchk to check the directory it is passed 29 #for files that are links and don't exist, then print them quoted. 30 #If one of the elements in the directory is a subdirectory then 31 #send that send that subdirectory to the linkcheck function. 32 ########## 33 linkchk () { 34 for element in $1/*; do 35 [ -h "$element" -a ! -e "$element" ] && echo \"$element\" 36 [ -d "$element" ] && linkchk $element 37 # Of course, '-h' tests for symbolic link, '-d' for directory. 38 done 39 } 40 41 #Send each arg that was passed to the script to the linkchk function 42 #if it is a valid directoy. If not, then print the error message 43 #and usage info. 44 ################ 45 for directory in $directorys; do 46 if [ -d $directory ] 47 then linkchk $directory 48 else 49 echo "$directory is not a directory" 50 echo "Usage: $0 dir1 dir2 ..." 51 fi 52 done 53 54 exit 0
转载请注明原文地址: https://www.6miu.com/read-5049916.html

最新回复(0)