에서 물고기 쉘 , 실제 명령 줄 구문 강조입니다 :
bash에서 이와 동일한 동작을 수행하는 방법이 있습니까?
이 같은 것이 있지만 zsh에는 bash가 아닙니다. 이것이 bash로 이식 될 수 있습니까?
스크린 샷, 설명 또는 제공된 링크를 이해하지 못하는 사람들을 명확히하기 위해 터미널에 입력 된 실제 텍스트를 강조하고 싶습니다. 명령, 괄호, 따옴표 등
에서 물고기 쉘 , 실제 명령 줄 구문 강조입니다 :
bash에서 이와 동일한 동작을 수행하는 방법이 있습니까?
이 같은 것이 있지만 zsh에는 bash가 아닙니다. 이것이 bash로 이식 될 수 있습니까?
스크린 샷, 설명 또는 제공된 링크를 이해하지 못하는 사람들을 명확히하기 위해 터미널에 입력 된 실제 텍스트를 강조하고 싶습니다. 명령, 괄호, 따옴표 등
답변:
Bash는 readline
대화식 입력에 사용하므로 해당 프로그램에서 구문 강조를 구현해야합니다. 이러한 기능을 코딩하는 방법에 대한 Google 그룹스 토론을 찾았습니다 .
피쉬 쉘은 해당 프로그램에 고유 한 자체 라인 편집기를 사용 하며 직접 이식 할 수 없습니다.
zsh
bash와 매우 유사하고 라인 편집기가 확장 가능 하다는 것을 알 수 있습니다 . zsh 에서이 기능을 활성화하기 위해 zsh-syntax-highlighting 을 찾았습니다 .
GNU Bash (또는 GNU Readline)에서 구문 강조를 얻는 간단한 방법 은 없지만 기본적으로 내장 명령을 사용하여 모든 사용자 입력을 쉘 함수에 바인딩하여 Bash 스크립트에서 고유 한 라인 편집기를 구현할 수 있습니다 bind -x 'BYTE: SHELL-COMMAND'
. 물론 구문 강조 기능을 자신의 라인 편집기에 통합 할 수 있습니다.
실제로 ble.sh
구문 강조 및 자동 제안과 같은 기능을 갖춘 라인 편집기 를 구현했습니다 . Bash 3.0--5.0을 지원합니다. (거의) 순수한 Bash 스크립트로 작성 되었기 때문에 source
의 스크립트 만 사용할 수 있습니다 ~/.bashrc
. 다음은 ble.sh
bashrc 에서 설정하는 샘플 입니다 (자세한 내용 은 README 참조).
$ git clone https://github.com/akinomyoga/ble.sh.git
$ cd ble.sh
$ make
$ make INSDIR="$HOME/.local/share/blesh" install
# bashrc
# Add the following line at the beginning of bashrc
[[ $- == *i* ]] &&
source "$HOME/.local/share/blesh/ble.sh" --attach=none
# ... other bashrc settings ...
# Add the following line at the end of bashrc
((_ble_bash)) && ble-attach
참고 : 때로는 자체 제품 링크와 함께 질문에 대답하는 것이 자체 홍보 및 바람직하지 않은 것으로 간주 되므로이 질문에 대한 답변을 자제했습니다. 그러나 다른 해결책은 오랫동안 나타나지 않았 으며이 질문에는 많은 견해가 있습니다 (이는 상당한 수요를 반영합니다). 그래서 저는 오늘이 질문에 답하기로했습니다. 다음과 같은 메타 질문 / 답변을 참조하여 아이디어를 먼저 설명하고 다음으로 예제 구현으로 내 프로젝트에 대한 링크를 제공했습니다.
예, 이것이 실제로 자체 프로모션 임을 인정해야 하지만, 이것이 기능을 원하는 사람들에게 도움이된다고 생각합니다. 문제가 있으면 의견으로 알려 주시면 감사하겠습니다.
나는 구문 강조 쉘 수준에서하지만 인터페이스 수준 (그냥 내 생각 - 그리고 일어날해야한다고 생각 해달라고 다른 사람의 내가 예를 들어, 터미널 또는 당신의 마음에 드는 콘솔의 "플러그인"으로 보일 것이다, 그래서이 seems-) 이 플러그인 을위한의 Kate가 도움을 줄 수도 있고 nano에서 구문 강조를 제공하는 다른 것
터미널에서 하이라이트를 구 문화하는 방법에 대한 자세한 내용은 다음과 같습니다 .
.bash_profile에 별명 ls = 'ls -G'를 추가하십시오.
여기 에 방법을 더 잘 설명 하지만
그것이 도움이되기를 바랍니다.
ls
파일 형식을 기반으로 명령 의 출력을 강조 표시하며 셸 구문과 관련이 없습니다.