홈 디렉토리 주소를 txt 파일에 저장하려면 다른 사용자로 sudo

홈 디렉토리 주소를 txt 파일에 저장하려면 다른 사용자로 sudo

사용자의 홈 디렉터리를 users.txt 파일에 저장하려고 하는데 내 홈 디렉터리만 계속 저장하고 있습니다. 스크립트를 사용하려면 사용자가 $username에 저장한 사용자 이름을 입력해야 합니다. 내가 달릴 때

ls ~ >> users.txt

표시됩니다 ls home/student/am1014(이것은 내 사용자 이름입니다).

저장하려면 sudo를 사용해야 할 것 같은데 어떻게 해야 할지 모르겠습니다.

답변1

존재하다:

sudo -u joe ls ~

~명령(여기)을 실행하기 sudo전에 셸에 의해 확장되므로 실제로는 다음을 실행합니다.

sudo -u joe ls /home/me

joe나열된 홈 디렉토리의 내용:

ls ~joe

또는 그의 홈 디렉토리에 대한 읽기 권한이 없는 경우:

sudo -u joe ls ~joe

또는 실행 중인 쉘의 경우~처럼joe확장 ~:

sudo -u joe sh -c 'ls ~'

csh사용자 이름이 변수에 있는 tcsh경우 //를 제외하고 는 zsh이 메서드를 사용할 수 없습니다 . ls ~joe쉘에 따라 다름

user=joe
echo ~$user

/home/mejoe또는 를 출력합니다 ~joe. bash사용자가 $user문자 그대로 호출하면 해당 홈 디렉터리가 반환됩니다.

여기에는 다음이 필요합니다.

eval "ls ~$user"

(미리 유효한 사용자 이름을 포함했는지 확인했습니다 $user.)

답변2

다음 명령은 읽고 /etc/passwd출력합니다.username : home-dir

awk -F: '{print $1":" $6}' /etc/passwd

출력은 다음과 유사합니다.

root:/root
daemon:/usr/sbin
bin:/bin
sys:/dev
sync:/bin
games:/usr/games

다음 명령을 사용하여 출력을 파일로 리디렉션할 수 있습니다.

awk -F: '{print $1":" $6}' /etc/passwd > result.txt

관련 정보