나는 내 시스템에서 사용자가 가질 수 있는 모든 별칭을 확인하려고 노력해 왔으며 루트를 사용하고 있습니다. 나열하는 명령이 있나요?
답변1
별칭은 사용자가 로그인되어 있는 동안에만 "존재"하기 때문에 실제로는 불가능합니다. .profile과 같은 로그인 스크립트가 일부 별칭을 정의하는 경우 처음 로그인할 때 해당 별칭을 갖게 되지만 source
다른 스크립트를 사용하여 더 많은 별칭을 정의하거나 명령줄에서 정의할 수도 있습니다.
그러나 각 사용자가 갖게 될 별칭을 나열할 수 있습니다.로그인하는 순간이 같은:
#! /bin/bash
for user in $(getent passwd | cut -d: -f1) ; do
uid=$(getent passwd "$user" | cut -d: -f3)
if [ "$uid" -ge 1000 ] ; then
ushell=$(getent passwd "$user" | cut -d: -f7)
[ -z "$ushell" ] && ushell='/bin/sh'
echo "aliases for $user:"
if [[ "$ushell" =~ /s?bin/(true|false|sync|ftponly|nologin) ]] ; then
:
elif [[ "$ushell" =~ /s?bin/(t?csh|zsh|s?ash) ]] ; then
su - "$user" $ushell -c 'alias'
elif [[ "$ushell" =~ /s?bin/([bd]ash|m?ksh|sh) ]] ; then
su - "$user" $ushell -c 'alias -p'
fi
echo ; echo
fi
done
이는 1000 미만의 모든 UID를 건너뜁니다. 데비안 시스템에서는 일반(즉, 시스템이 아닌) 사용자 ID가 1000에서 시작합니다. 일부 다른 시스템에서는 500부터 시작합니다. 귀하의 시스템에 맞게 조정하십시오.
alias
일부 쉘은 인수 없이 실행하라는 지시를 받을 때 별칭을 나열하지 않을 수 있습니다. 제가 테스트한 모든 셸(bash, dash, pdksh, mksh, tcsh, zsh)은 이 셸에서 작동하지만, 그렇지 않은 셸을 찾으면 다음과 같은 것을 사용하여 처리해야 합니다.if [ "$ushell" = "/bin/oddshell" ; then ... fi