연결 셸 명령의 차이점

연결 셸 명령의 차이점

내 탭이 완료되었습니다 BASH(debian)는 두 명령을 결합하는 다른 숫자를 보여줍니다. 어떤 면에서는 권한이 많을수록 더 많은 명령을 실행할 수 있습니다(예: sudo.

;분명히 와 연결되는 방식 &&은 약간 다릅니다.

  • 그들 사이의 차이점은 무엇입니까?
  • 권한이 있는 사용자가 액세스할 수 있는 명령 수의 차이가 줄어드는 이유는 무엇입니까 root? 나는 숫자가 증가할 것으로 예상한다(차이). (가장 가능성이 높음/일반적인 이유)
nepumuk@nepumuk:~$  
Display all 2216 possibilities? (y or n)
nepumuk@nepumuk:~$ date ; 
Display all 2214 possibilities? (y or n)
nepumuk@nepumuk:~$ date && 
Display all 2216 possibilities? (y or n)
nepumuk@nepumuk:~$ date ; sudo 
Display all 2729 possibilities? (y or n)
nepumuk@nepumuk:~$ date && sudo 
Display all 2730 possibilities? (y or n)
nepumuk@nepumuk:~$ date ; man 
Display all 8127 possibilities? (y or n)
nepumuk@nepumuk:~$ date && man 
Display all 8127 possibilities? (y or n)

편집 1:또한 이 쿼리를 수행하고 다시 시작하면 "가능성의 수"가 한두 개 증가한다는 사실도 발견했습니다(어느 정도 예측 가능한 매뉴얼 수에 더해)..... .

재현 가능한 동작이 발생한 이후로 몇 번 그렇게 했습니다.

nepumuk@nepumuk:~$
Display all 2221 possibilities? (y or n)
nepumuk@nepumuk:~$ date ;
Display all 2221 possibilities? (y or n)
nepumuk@nepumuk:~$ date &&
Display all 2221 possibilities? (y or n)
nepumuk@nepumuk:~$ date ; sudo
Display all 2735 possibilities? (y or n)
nepumuk@nepumuk:~$ date && sudo
Display all 2735 possibilities? (y or n)

편집 2sudo: "enable"을 사용하여 일부 명령을 실행할 수도 없습니다 .

nepumuk@nepumuk:~$ sudo alias
sudo: alias: command not found

sudo따라서 명령 수(더 정확하게는 명령 집합)를 사용하는지 여부에 따라 차이가 발생합니다.

답변1

나는 표시된 "가능성"이 반드시 실행할 수 있는 프로그램은 아니라고 생각합니다. 예를 들어 를 입력하면 man실행할 수 있는 작업이 많이 있다고 표시될 수 있습니다 man(예 man ls: ). 루트인지 여부에 관계없이 실행할 수 있는 명령 수는 매우 유사해야 합니다. 루트가 아닌 경우에도 동일한 프로그램을 실행할 수 있습니다. 프로그램이 루트 권한을 얻을 수 없으면 오류가 보고됩니다.

&&와 의 차이점 은 ;간단합니다. &&오른쪽 명령은 왼쪽 명령이 성공적으로 완료된 경우에만 실행됩니다. ;오른쪽 명령은 왼쪽 명령이 완료되는 방식에 관계없이 실행됩니다. 행동은 &&소위 말하는 것 때문에 발생합니다.단락 평가.

더 구체적으로 말하면 &&오른쪽 명령은 다음과 같은 경우에만 실행됩니다.종료 코드왼쪽 명령의 값은 0입니다. 대조적 &&으로 ||, 오른쪽 명령은 왼쪽 명령이 0이 아닌 종료 코드를 반환하는 경우에만 실행됩니다.

관련 정보