나는 경험이 많지 않은 우분투 사용자이며 사용하고 sudo
있습니다.
무엇을 sudo !!
하고 어떻게합니까?
!!
명령 의 일부에 대해 더 묻습니다 .
!!
입니다. 다른 하나는이를 수행하는 방법을 원합니다.
sudo !!
가 많은 두 가지 답변은 구체적으로 무엇을 설명하고 실제로 실제로 무엇을 설명하는 두 가지 답변 !!
이 있습니다.
나는 경험이 많지 않은 우분투 사용자이며 사용하고 sudo
있습니다.
무엇을 sudo !!
하고 어떻게합니까?
!!
명령 의 일부에 대해 더 묻습니다 .
!!
입니다. 다른 하나는이를 수행하는 방법을 원합니다.
sudo !!
가 많은 두 가지 답변은 구체적으로 무엇을 설명하고 실제로 실제로 무엇을 설명하는 두 가지 답변 !!
이 있습니다.
답변:
sudo bang bang
명령 행 인터페이스에서 작업 할 때 매우 유용한 명령입니다.
일부 Linux 배포판에서는 관리자 대신 사용자로 로그인해야합니다.
따라서 관리자 단위로 무언가를 수행하려면 sudo
(수퍼 유저 DO)로 명령을 진행해야합니다 . 시스템에“내가 그렇게 말했기 때문에 그렇게 할 것입니다.”라는 메시지가 표시됩니다. / bang-bang (! = bang)은 기본적으로 이전 명령을 반복하는 데 사용할 수있는 바로 가기입니다.
따라서 일반적인 시나리오는 명령을 시도하고이를 수행하려면 관리자 여야한다는 메시지를 시작하는 것입니다. 따라서 sudo
해당 명령을 수퍼 유저 / 관리자로 실행 하도록 입력 하거나 시스템이 이전에 시도한 명령을 사용하도록 지시하는 sudo !!
위치 를 입력 할 수 있습니다 !!
. UfH
다른 많은 명령이 있습니다. 그것들에 대한 설명과 그것들에 대한 설명은 Linux Bang Commands 를 확인하십시오 .Bash history 및 bang 명령 도 참조하십시오.
sudo
명령 줄 을 입력 하고 보는 것이 거의 항상 안전합니다 .
sudo
뭔가 오류가 있으므로 즉시 원하는 sudo
그것
sudo
의미하지 않는 한, 그것은 간다 "슈퍼 유저를 수행" 할 명령을 것처럼 내가했던 su
(SU 의미 스위치 사용자 [아니라 슈퍼 유저]); 즉, 루트 ( -u
스위치) 뿐만 아니라 모든 사용자로서 명령을 sudo 할 수 있습니다 . 동일su [user] [-c command]
su
는 그런 것을 의미 하지 않습니다. linux.die.net/man/1/su , gnu.org/software/coreutils/manual/html_node/su-invocation.html , linfo.org/su.html을 참조하십시오 . 대체 사용자를 의미해야합니다 .
이 bang bang (!!)
명령은 터미널에 입력 한 이전 명령 을 반복하고 실행 하는 바로 가기 입니다. 이 명령은 특정 작업을 수행하기 위해 관리자 권한이 필요하다는 것을 잊었을 때 매우 유용하며, 입력만으로도 슈퍼 사용자 권한으로 반복 할 수 있습니다.
sudo !!
!!
마지막 실행 명령을 얻습니다.
apt-get update
출력은
E : 잠금 파일 / var / lib / apt / lists / lock을 열
수 없음 -열림 (13 : 권한 거부) E : / var / lib / apt / lists / 디렉토리를 잠글 수 없음 E : / var / lib
잠금 파일을 열 수 없음 lib / dpkg / lock-열기 (13 : 권한 거부)
E : 관리 디렉토리 (/ var / lib / dpkg /)를 잠글 수 없습니다. 루트입니까?
그 후에 sudo !!
명령 을 실행 하면 출력은
Hit http://extras.ubuntu.com saucy/main amd64 Packages
Get:3 http://mirror.sov.uk.goscomb.net saucy-updates Release.gpg [933 B]
Hit http://ppa.launchpad.net saucy Release
Hit http://extras.ubuntu.com saucy/main i386 Packages
Hit http://mirror.sov.uk.goscomb.net saucy Release
99% [Waiting for headers] [Waiting for headers] [Waiting for headers]
이는 !!
부분이 이전 실행 명령을 잡고 apt-get update
선행 sudo
부분이 명령이 수퍼 유저 권한으로 실행되도록하는 것을 의미합니다.
그리고 어떻게sudo !!
수퍼 유저 권한으로 이전 명령의 의미 실행, 우리가에 저장되어있는 터미널에 입력 일반적으로 모든 명령 command history
.RUN history
터미널에 명령을, 당신이이 들어온 모든 명령을 보여줍니다 !!
에 참여를 sudo !!
챙기고을 마지막 명령이 저장 명령 기록에서 전체 sudo !!
는 관리자 권한으로 마지막 명령을 실행합니다.
다른 bang 명령어 는이 블로그 게시물에 설명되어 있습니다.
mkdir LongDirectoryName
하고 cd !$
하지 않는 일에 개별적으로 실행해야합니다 LongDirectoryName
앞의 명령의 마지막 말이었다 발생합니다. 쉘 히스토리 목적으로 mkdir LongDirectoryName; cd !$
하나의 명령이 있습니다. 역사의 상호 작용 !!
, !^
그리고 !$
쉘이 실제로 완전히보기 전에 마지막으로 처리 명령을 사용합니다 !
. 다음은 예입니다. 실행 history
하면 연결된 행의 ;
명령이 하나의 명령으로 기억되는 것을 볼 수 있습니다.
이 대답에 두 부분은 다음 !!
과sudo
!!
"history expansion"이라고 불리는 쉘의 기능 중 일부입니다 (우분투의 경우 아마도 bash이지만 zsh 또는 csh와 같은 다른 쉘도이를 지원합니다). 쉘이 '자리 표시 자'를 단어 집합으로 확장한다는 점에서 다른 확장과 비슷한 방식으로 작동합니다. foo*
'foo'로 시작하는 모든 파일 목록으로 확장 되지만 !!
이전 명령 줄의 내용으로 확장됩니다.
$ echo foobar
foobar
$ echo !!
echo foobar
$ !!
echo foobar
다른 확장과 마찬가지로 이것은 전적으로 쉘에 의해 수행되므로 !!
다른 명령 뒤에 입력하면 이 명령은을 인식하지 !!
못하지만 이전 명령 행 만 볼 수 있습니다. (다른 확장과 달리, 기록 확장은 명령이 기록에 저장되기 전에 발생합니다. 즉 !!
, 대체 된 명령 줄 대신 기록에 저장됩니다.)
sudo
명령은 다른 사용자로 명령을 실행 허용 권한 (기본값이에 구성되어있는 보안 정책에 의해 부여 아칸소 제공 /etc/sudoers
).
기본적으로 루트 암호는 Ubuntu에서 설정되어 있지 않습니다. 시스템 관리 작업을 수행하기 위해 설치 중에 생성 된 사용자에게 sudo 권한이 부여됩니다. 이 사용자는을 앞에 추가하여 쉘에서 모든 명령을 루트로 실행할 수 있습니다 sudo
. 일부 GUI 프로그램은 패키지 관리와 같은 sudo 메커니즘도 사용합니다.
sudo
다른 명령을 루트 (또는 다른 사용자)로 실행할 수 있는 이유 는 sudo 바이너리 ( /usr/bin/sudo
)에 권한에 setuid 비트가 설정되어 있고 루트에 속해 있기 때문입니다. setuid 비트가 설정된 모든 (이진) 실행 파일은 소유자의 권한으로 실행됩니다. 즉, sudo는 실제로 어떤 사용자가 호출했는지에 상관없이 루트 권한으로 효과적으로 실행됩니다. sudo의 내부 보안 정책 만이 어떤 사용자에게 허용되는 것을 관리하고 임의의 사용자가 임의의 작업을 수행하지 못하게합니다.
그래서의 경우에 sudo !!
이것은 의미
$ mount /dev/sdb1 /mnt
mount: only root can do that
$ sudo !!
기본적으로
$ mount /dev/sdb1 /mnt
mount: only root can do that
$ sudo mount /dev/sdb1 /mnt
타이핑이 적습니다. 두 경우 모두 sudo는 mount /dev/sdb1 /mnt
루트 권한으로이를 보고 실행합니다.
!!
히스토리 확장을 위한 구문 상 가장 단순하고 아마도 가장 일반적인 표현입니다 .
알다시피,에 대해 실행 된 마지막 명령을 대체 한 후 !!
bash는 두 가지 작업을 수행합니다 (기본 구성).
대체 된 텍스트가 포함 된 전체 명령이 표시됩니다.
예를 들어, 명령이 lshw -c video
있고 다음에 실행하는 경우 sudo !!
히스토리 확장 후 명령은 sudo lshw -c video
입니다.
해당 명령이 실행됩니다.
일반적으로이 두 단계 shopt histverify
는 기본적으로 설정되어 있지 않기 때문에 중단없이 사용자 상호 작용의 기회없이 발생합니다 ( shopt -u histverify
).
그러나 shopt histverify
( shopt -s histverify
)을 활성화하면 기록 확장이 다르게 작동합니다.
( histverify
쉘 옵션 은 readline 라이브러리 를 사용 하는 경우에만 적용 되지만 Ubuntu 또는 다른 GNU / Linux 시스템에서 대화식으로 bash를 사용하는 경우에만 항상 적용됩니다.)
histverify
쉘 옵션 사용 여부에 상관없이 히스토리 확장은 다른 많은 쉘 확장과 유사하지 않습니다. 다른 쉘 확장은 확장 명령이 실행되기 전에 표시되지 않습니다. 대화식 및 비 대화식으로 (예를 들어, 셸 스크립트에서) 사용되는 다른 확장과 달리 기록 확장은 거의 항상 대화식으로 사용됩니다.