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