HOWTO_Find_broken_links
| Installation • Kernel & Hardware • Networks • Portage • Software • System • X Server • Gaming • Non-x86 • Emulators • Misc |
Contents |
Quick Start
| Code: (Bash) |
find . -type l | (while read FN ; do test -e "$FN" || ls -ld "$FN"; done) |
| Code: (Just using findutil and test) |
find / -type l ! -exec test -r {} \; -print
|
| Code: (Just "find") |
find -L . -type l |
Description
The find command finds all symbolic links in the current directory, “.”, and writes their names to its standard output. That gets piped into the parenthesized while loop, which tests each link. If the link points to an existing file, nothing happens, but if the link's target does not exist, the ls command gets executed and detailed information about the link and its intended target are sent to the standard output.
Variations
Sometimes emerge fails when there are broken links in system directories. To find broken links in the system directory /usr, give yourself root access and then issue this related command:
| Code: (Bash) |
find /usr -type l | (while read FN ; do test -e "$FN" || ls -ld "$FN"; done) |
Another directory where broken links can be a problem is /var.
Alternate using symlinks and qfile.
| Code: (install prerequsites) |
emerge -uav app-portage/portage-utils app-misc/symlinks |
Find all dangling symlinks:
| Code: (Bash) |
symlinks -rv / | grep "dangling:" | awk '{print $2}' | sort
|
Find all dangling symlinks and what package (if any) owns them.
| Code: (Bash) |
symlinks -rv / | grep "dangling:" | awk '{print $2}' | xargs qfile | sort
|
Both in a script with error checking:
| Code: (Shellscript) |
#!/bin/bash
SYMLNBIN="/usr/bin/symlinks"
QFILEBIN="/usr/bin/qfile"
NO=$'\x1b[0;0m'
BR=$'\x1b[0;01m'
RD=$'\x1b[31;01m' Rd=$'\x1b[00;31m'
GR=$'\x1b[32;01m' Gr=$'\x1b[00;32m'
YL=$'\x1b[33;01m' Yl=$'\x1b[00;33m'
BL=$'\x1b[34;01m' Bl=$'\x1b[00;34m'
FC=$'\x1b[35;01m' Fc=$'\x1b[00;35m'
CY=$'\x1b[36;01m' Cy=$'\x1b[00;36m'
echo ""
# check to see if /usr/bin/symlinks exists.
if [[ ! -f $SYMLNBIN ]]; then
echo ${RD}"Please emerge: ${BL} (app-misc/symlinks)"${NO}
exit
fi
# check to see if /usr/bin/qfile exists.
if [[ ! -f "$QFILEBIN" ]]; then
echo ${RD}"Please emerge: ${BL} (app-portage/portage-utils)"${NO}
exit
fi
echo ${RD} "Dangling symlinks found:"${NO}
echo ""
symlinks -rv / | grep "dangling:" | awk '{print $2}' | sort
echo ""
echo ${YL} "Packages owning dangling symlinks:"${NO}
echo ""
symlinks -rv / | grep "dangling:" | awk '{print $2}' | xargs qfile | sort
echo ""
|
Created by NickStallman.net, Luxury Homes Australia
Real estate agents should be using interactive floor plans and real estate agent tools.
