bash가 물고기처럼 구문을 강조 표시하는 방법이 있습니까?


41

에서 물고기 쉘 , 실제 명령 줄 구문 강조입니다 :

여기에 이미지 설명을 입력하십시오

bash에서 이와 동일한 동작을 수행하는 방법이 있습니까?

같은 것이 있지만 zsh에는 bash가 아닙니다. 이것이 bash로 이식 될 수 있습니까?

스크린 샷, 설명 또는 제공된 링크를 이해하지 못하는 사람들을 명확히하기 위해 터미널에 입력 된 실제 텍스트를 강조하고 싶습니다. 명령, 괄호, 따옴표 등


bash는 zsh와 같은 플러그인을 허용한다고 생각하지 않으므로 bash 쉘 / 바이너리의 사용자 정의 빌드가 필요할 수 있습니다. 물고기를 대신 사용하지 않는 이유는 무엇입니까? 또한 다른 쉘을 사용하여 놀아 주셔서 감사합니다. 하하의 고급 기능을 배울 수 있는지 확인하십시오.
Matrix Mole

1
@Matrix : 포기할 수없는 매우 복잡한 bash 구성이 있기 때문에 물고기를 사용할 수 없습니다.
Wuffers

불행히도, 이것은 현재 bash에서 가능하다고 생각하지 않습니다. 나는 당신이 한 연구가 그 점을 지적한다고 확신합니다. zsh로 절대 전환 할 수 없다면 이해할 수 있지만, 2 월 이후 업데이트되지 않았지만 일부 물고기와 유사한 기능을 zsh에 통합하는 fizsh 를보고 싶을 수도 있습니다. 따라서 zsh-syntax-highlighting 링크 당신이 제공 한 것이 더 강력 할 것입니다.
voithos

1
이것은 완전히 다른 방식으로 놀 수 있기 때문에 배쉬를 배우는 데 큰 도움이 될 것입니다. 특별한 캐릭터를 피하는 것을 잊어 버린 것을 쉽게 발견하는 것은 가치가 있습니다.
Sirap

답변:


8

Bash는 readline대화식 입력에 사용하므로 해당 프로그램에서 구문 강조를 구현해야합니다. 이러한 기능을 코딩하는 방법에 대한 Google 그룹스 토론을 찾았습니다 .

피쉬 쉘은 해당 프로그램에 고유 한 자체 라인 편집기를 사용 하며 직접 이식 할 수 없습니다.

zshbash와 매우 유사하고 라인 편집기가 확장 가능 하다는 것을 알 수 있습니다 . zsh 에서이 기능을 활성화하기 위해 zsh-syntax-highlighting 을 찾았습니다 .


1

GNU Bash (또는 GNU Readline)에서 구문 강조를 얻는 간단한 방법 은 없지만 기본적으로 내장 명령을 사용하여 모든 사용자 입력을 쉘 함수에 바인딩하여 Bash 스크립트에서 고유 한 라인 편집기를 구현할 수 있습니다 bind -x 'BYTE: SHELL-COMMAND'. 물론 구문 강조 기능을 자신의 라인 편집기에 통합 할 수 있습니다.

실제로 ble.sh구문 강조 및 자동 제안과 같은 기능을 갖춘 라인 편집기 를 구현했습니다 . Bash 3.0--5.0을 지원합니다. (거의) 순수한 Bash 스크립트로 작성 되었기 때문에 source의 스크립트 만 사용할 수 있습니다 ~/.bashrc. 다음은 ble.shbashrc 에서 설정하는 샘플 입니다 (자세한 내용 은 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

참고 : 때로는 자체 제품 링크와 함께 질문에 대답하는 것이 자체 홍보 및 바람직하지 않은 것으로 간주 되므로이 질문에 대한 답변을 자제했습니다. 그러나 다른 해결책은 오랫동안 나타나지 않았 으며이 질문에는 많은 견해가 있습니다 (이는 상당한 수요를 반영합니다). 그래서 저는 오늘이 질문에 답하기로했습니다. 다음과 같은 메타 질문 / 답변을 참조하여 아이디어를 먼저 설명하고 다음으로 예제 구현으로 내 프로젝트에 대한 링크를 제공했습니다.

예, 이것이 실제로 자체 프로모션 임을 인정해야 하지만, 이것이 기능을 원하는 사람들에게 도움이된다고 생각합니다. 문제가 있으면 의견으로 알려 주시면 감사하겠습니다.


-1

나는 구문 강조 쉘 수준에서하지만 인터페이스 수준 (그냥 내 생각 - 그리고 일어날해야한다고 생각 해달라고 다른 사람의 내가 예를 들어, 터미널 또는 당신의 마음에 드는 콘솔의 "플러그인"으로 보일 것이다, 그래서이 seems-) 이 플러그인 을위한의 Kate가 도움을 줄 수도 있고 nano에서 구문 강조를 제공하는 다른 것

터미널에서 하이라이트를 구 문화하는 방법에 대한 자세한 내용은 다음과 같습니다 .

.bash_profile에 별명 ls = 'ls -G'를 추가하십시오.

여기 에 방법을 더 잘 설명 하지만

그것이 도움이되기를 바랍니다.


11
셸이 아닌 편집기에서 구문 강조를 설정하는 방법에 답하는 것 같습니다. ls-colorization은 "구문"강조 표시조차되지 않습니다.
Kyle Strand

링크의 코드와 제안 된 솔루션을 사용하여 솔루션보다 의미론에 중점을두고 있다고 생각합니다. OP가 알고 싶어하는 것으로 bash에서 색상을 얻습니다.
Purefan

10
원래 질문은 실제로 실제 구문 강조에 관한 것입니다. 이것은 물고기 껍질의 스크린 샷과 마지막 문장 "모두 터미널에 입력 된 실제 텍스트를 강조하고 싶습니다. 명령, 괄호, 따옴표 등"으로 표시됩니다.
Kyle Strand

9
내가 말했듯이, 그것은 "구문"하이라이트가 아닙니다. 이들은 ls파일 형식을 기반으로 명령 의 출력을 강조 표시하며 셸 구문과 관련이 없습니다.
Kyle Strand

2
Zsh ( github.com/zsh-users/zsh-syntax-highlighting ) 및 Fish ( fishshell.com/docs/current/tutorial.html )에는 구문 강조 표시가 있으므로이 질문은 분명히 bash의 유사한 기능에 대해 묻습니다. 다른 쉘에 이미 존재하는 경우 "구현하기 어렵고 일관성을 유지하기 어려운"기능을 요청하는 것은 완전히 유효한 요청입니다
Brandon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.