사용자의 홈 디렉터리를 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