가끔씩 실행 권한이 없는 디렉터리에 있는 파일을 나열해야 하는 경우가 있습니다. 그래서 저는 sudo를 했습니다:
>sudo ll /opt/mydir
[sudo] password for civfan:
sudo: ll: command not found
그리고 저는 "아!"라고 말하고 ...로 전환한 ls
후 제가 정말 하고 싶었던 일이 생각났습니다 ls -l
. 그리고 내가 정말로 그것을 원한다는 것을 기억하십시오 ls -al
.
누군가 나를 나에게서 구해줄 수 있나요?
ll
내 사용자의 별칭은 다음과 같습니다 .
>alias ll
alias ll='ls -alF'
sudo ll
나는 어떻게 일을 합니까 ? 아마도 루트에 대한 별칭이 필요할 것 같습니다. 그렇다면 루트에 대한 별칭을 어떻게 설정합니까?
편집: 내 생각엔 실행을 시도하는 것이 sudo ll
너무 일반적이어서 이 질문은 제안된 중복과 분리되어야 할 것 같습니다.
업데이트: 루트에는 이미 ll
별칭이 있습니다!
civfan@civfan:~>sudo -s
root@civfan:~>alias ll
alias ll='ls -alF'
하지만 여전히 sudo ll
작동하지 않습니다 ...
업데이트 2 - 답변:
정답은제안된 중복 질문내 작업 흐름에 가장 적합하며 어떤 단점도 보이지 않습니다. 여기서 한 가지 언급하고 싶습니다.
alias sudo="sudo "
남자 배쉬에서 :
별칭 값의 마지막 문자가 비어 있으면 별칭 뒤의 다음 명령 단어에서도 별칭 확장이 확인됩니다.
답변1
-성인 사용자를 위한 편집- 친구에게 깊은 인상을 주고 싶지만 그렇지 않은 경우, 이 별칭 설명은 약간 마법처럼 느껴지고 멋져 보입니다! 쉘이 멋져 보이고 결합할 수 있는 멋진 명령이 많기 때문에 대화식으로 쉘을 사용하고 있다는 점을 기억하십시오. 하지만 성장하거나 소프트웨어가 성장함에 따라 몇 가지 사항을 자동화하고 싶을 수도 있습니다.
sudo를 사용하여 작업을 자동화할 때 대화형 세션에서 사용자를 bash하는 데 도움이 되는 트릭에 의존하지 않는 것이 가장 좋습니다.
물론 sudo 명령에 다음 기능을 직접 추가할 수도 있습니다.
mv /usr/bin/sudo /usr/bin/sudo_orig
ed /usr/bin/sudo
a
#!/bin/sh
cmd="$*"
if [ $1.cmd = "ll.cmd" ]
then
shift
cmd="ls -alF $*"
elif [ $1.cmd = ...more definitions... ]
then ...
fi
sudo_orig $cmd
.
w
q
chmod 755 /usr/bin/sudo
정말로 이런 방식이 필요하다고 생각한다면, 필요에 맞는 도구 세트를 만드는 방법은 다음과 같습니다. ;) -편집 종료-
쉘 별칭은 쉘의 대화형 부분으로 사용됩니다. sudo를 호출하면 셸을 종료하고 명령을 실행합니다.
를 사용하여 대화형 셸에 들어가 sudo -s
별칭을 정의하고 사용할 수 있습니다. 또는 별칭을 명령이나 함수로 다시 작성해야 합니다. 예를 들어 /root/alias-cmds 폴더를 사용하고 다음 명령을 작성해야 합니다 /root/alias-cmds/ll
.
echo "ls -alF" > /root/alias-cmds/ll; chmod 700 /root/alias-cmds/ll;
이제 다음을 사용할 수 있습니다.
sudo 'PATH=$PATH:/root/alias-cmds ll'
또 다른 옵션은 다음을 정의하는 것입니다.
alias sudoll='sudo ls -alF'
sudoll
대신 사용하십시오 sudo ll
.