![오류 메시지의 마지막 줄을 명령으로 실행](https://linux55.com/image/3768/%EC%98%A4%EB%A5%98%20%EB%A9%94%EC%8B%9C%EC%A7%80%EC%9D%98%20%EB%A7%88%EC%A7%80%EB%A7%89%20%EC%A4%84%EC%9D%84%20%EB%AA%85%EB%A0%B9%EC%9C%BC%EB%A1%9C%20%EC%8B%A4%ED%96%89.png)
예를 들어, 설치되지 않은 패키지를 실행하려고 하면 다음과 같습니다.
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
제가 아는 한, 이 문제를 해결할 수 있는 방법은 없습니다. 두 가지 옵션이 있습니다:
- 입력하세요
- 복사하여 붙여넣기(기술적으로는 입력하는 것입니다)
자동 설치
세 번째 방법으로 이 도구를 사용할 수 있습니다 auto-apt
.
$ auto-apt run <command_string>
호출되면 파일 액세스가 누락된 경우 auto-apt 명령이 자동으로 패키지를 설치합니다. 프로그램이 제거된 패키지에 속하는 것으로 알려진 파일에 액세스하려고 시도하면 auto-apt는 apt-get을 사용하여 패키지를 설치합니다. 이 기능이 작동하려면 apt와 sudo가 필요합니다.
그러나 이 접근 방식은 "입력하지 않음" 요구 사항에 실패합니다.
다른 아이디어
설치 제안을 제공하는 도구는 gparted
"완료"라는 도구를 사용하여 셸에 번들로 포함되어 있다고 생각합니다. 해당 규칙이 일치할 때 다양한 활동이 발생하도록 일부 규칙을 확장할 수 있습니다.
이러한 규칙을 확장하거나 apt-get -y install <package X>
자동으로 실행되도록 규칙 1개를 확장할 수도 있습니다.