오류 메시지의 마지막 줄을 명령으로 실행

오류 메시지의 마지막 줄을 명령으로 실행

예를 들어, 설치되지 않은 패키지를 실행하려고 하면 다음과 같습니다.

me ~: gparted 

The program 'gparted' is currently not installed. You can install it by typing:
sudo apt-get install gparted

sudo apt-get install gparted이 줄을 명령으로 어떻게 실행할 수 있나요 ? 분명히 입력하지 않습니다.

답변1

이 작업은.bashrc

export COMMAND_NOT_FOUND_INSTALL_PROMPT=1

당신을 위한:

$ foo
The program 'foo' is currently not installed. You can install it by typing:
sudo apt-get install blah-blah
Do you want to install it? (N/y)

다음과 같은 Python 오류가 발생하는 경우:

...
  File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 217, in install_prompt
    answer = answer.decode(sys.stdin.encoding)
AttributeError: 'str' object has no attribute 'decode'

당신은 할 수 있습니다:

적용하다이번 패치우분투의 경우여기.
또는:
215,216,217 줄 시작 부분에 공백 4개를 추가하여 수정합니다.CommandNotFound.py(노트:아니요상표):

    ...
    213 기타:
    214화
    215 4 spaces
    216 4 spaces
    217 4 spaces
    218화
    ...

또 다른 방법은 확장그렉 휴길댓글은 다음과 같습니다.

$(!! 2>&1 | tail -n1)

스크립트로 래핑하려고 시도했지만 작동하지 않았습니다.상자 밖에오류 메시지가 표시되지 않기 때문입니다.

이것을 스크립트에 넣으려는 경우 다소 해킹적인 접근 방식은 다음과 같습니다.

x=$(/usr/lib/command-not-found $(tail -n1 "$HOME/.bash_history") 2>&1 | tail -n1)
echo "$x"

일부 옵션은 다음을 확인하세요.

/usr/lib/command-not-found -help

및/또는 스크립트 자체를 확인하세요.

답변2

제가 아는 한, 이 문제를 해결할 수 있는 방법은 없습니다. 두 가지 옵션이 있습니다:

  1. 입력하세요
  2. 복사하여 붙여넣기(기술적으로는 입력하는 것입니다)

자동 설치

세 번째 방법으로 이 도구를 사용할 수 있습니다 auto-apt.

   $ auto-apt run <command_string>

호출되면 파일 액세스가 누락된 경우 auto-apt 명령이 자동으로 패키지를 설치합니다. 프로그램이 제거된 패키지에 속하는 것으로 알려진 파일에 액세스하려고 시도하면 auto-apt는 apt-get을 사용하여 패키지를 설치합니다. 이 기능이 작동하려면 apt와 sudo가 필요합니다.

그러나 이 접근 방식은 "입력하지 않음" 요구 사항에 실패합니다.

다른 아이디어

설치 제안을 제공하는 도구는 gparted"완료"라는 도구를 사용하여 셸에 번들로 포함되어 있다고 생각합니다. 해당 규칙이 일치할 때 다양한 활동이 발생하도록 일부 규칙을 확장할 수 있습니다.

이러한 규칙을 확장하거나 apt-get -y install <package X>자동으로 실행되도록 규칙 1개를 확장할 수도 있습니다.

관련 정보