두 호스트 파일 간을 전환하는 간단한 명령

두 호스트 파일 간을 전환하는 간단한 명령

나는 /etc/host를 사용하여 localhost를 웹 도메인에 매핑하고 있습니다. 매번 검색하고 바꾸지 않고도 이 작업을 수행할 수 있는 빠른 방법을 원합니다. 내 .bashrc 파일에 넣었습니다.

alias hostchange='
nowdir=$PWD;
cd /etc;
mv hosts hoststempname;
mv hostssecondary hosts;
mv hoststempname hostssecondary;
cd $nowdir'

이 오류가 발생합니다. y나 n이 모두 진행되지 않습니다.

mv: rename hosts to hoststempname: Permission denied
override rw-r--r--  root/wheel for hosts? (y/n [n]) 

sudo를 추가해서 작동하게 만들었습니다.

alias hostchange='
nowdir=$PWD;
cd /etc;
sudo mv hosts hoststempname;
sudo mv hostssecondary hosts;
sudo mv hoststempname hostssecondary;
cd $nowdir'

이것이 합법적인가요? 내가 어둠 속에서 촬영하고 있는 걸까?

답변1

당신은 올바른 길을 가고 있습니다! 이에 대한 몇 가지 의견이 있습니다. 일반적으로 이러한 여러 줄 작업은 함수에 맡기는 것이 좋습니다. 다음과 같이 쓸 수도 있습니다.

change_etc_hosts_file() {
  set -e # stop running if we encounter an error
  sudo \mv -f /etc/hosts /etc/hoststempname
  sudo \mv -f /etc/hostssecondary /etc/hosts
  sudo \mv -f /etc/hoststempname /etc/hostssecondary
  set +e
}
alias changehosts=change_etc_hosts_file

또한 디렉터리를 변경하는 대신 절대 경로를 사용했음을 알 수 있습니다. 일반적으로 이것이 더 나은 생각입니다(절대 경로 사용). 친척을 계속 사용하려면 일반적으로 하위 쉘에서 이 작업을 수행하는 것이 가장 좋습니다. 그러면 디렉토리를 $PWD로 다시 변경하는 작업을 처리할 필요가 없습니다(중단하면 이상한 상태가 됩니다). 서브쉘로 실행하려면 다음과 같습니다:

change_etc_hosts_file() {
  ( # use subshell
    cd /etc
    set -e # stop running if we encounter an error
    sudo \rm -f hoststempname # the \ escapes aliases which might cause prompting
    sudo \cp -f hosts hoststempname
    sudo \cp -f hostssecondary hosts
    sudo \cp -f hoststempname hostssecondary
  )
}

CD는 새로운 프로세스인 () 내부에서 발생하므로 현재 작업 디렉터리에는 영향을 미치지 않습니다.

답변2

이 명령에 대해 질문이 있다는 사실은 sudo유닉스 사용자 개념에 대한 기본 지식 없이도 유닉스 세계에서 어떻게든 살아남았음을 시사합니다(뿌리특히). 저는 이러한 상황을 이해할 수 없지만 귀하의 질문과 의견을 통해 이것이 사실임을 분명히 알 수 있습니다.

, 귀하가 달성한 결과는 sudo정확히 귀하가 기대했던 것과 같습니다. 이 때문입니다:

  • 유닉스 시스템에는 여러 가지가 있습니다.시스템 사용자- "가상"이라고 부를 수 있습니다.아니요인간으로 착각하다컴퓨터 사용자).
  • 모든 파일과 디렉토리에는소유자, 항상 (가상) 사용자 중 한 명입니다.
  • 이것뿌리사용자, 호출됨뿌리모든 Unix가 가지고 있어야 하는 특별한 시스템 계정입니다. 그는 무엇이든 할 수 있습니다. 시스템의 모든 힘을 가지고 있습니다.
  • sudo"일반" 사용자 권한을 일시적으로 악용하는 데 사용되는 명령입니다.뿌리그래서 몇 가지 특별한 작업을 수행할 수 있습니다.

더 읽어보세요sudo다음 예시 사이트의 루트 및 파일 권한과 관련하여:1,2,,4,5,6

관련 정보