bash/Cygwin에서 graphViz를 사용하고 있는데 어떻게든 호출하면 bash 탭 자동 완성이 아무 작업도 수행하지 않습니다.
예시 파일:
myGraph.graphviz
입력 파일입니다myGraph.graphviz.png
출력 파일이어야 합니다.
그래픽을 만드는 명령은 다음과 같습니다.
dot -T png -o myGraph.graphviz.png myGraph.graphviz
물론 입력하고 싶습니다.
도트 -T png -o 내 Tab.png 내Tab
파일 이름을 자동 완성하려고 해도 아무 일도 일어나지 않습니다! 입력 하면 제공되지만 이후에는 왜 작동하지 않습니까 ? Bash에는 입력할 수 있는 모든 명령에 대해 추가 자동 완성 모듈이 필요합니까?cat myTab
cat myGraph.graphviz
dot
답변1
Debian에서 예제 파일을 만들었습니다. 실제로 작동하지 않습니다. 그런 다음 (수동으로 완료한 후) 도 작동하지 않습니다. 두 가지 별도의 문제가 있습니다.dot -T png -o myTab
dot -T png -o myGraph.graphviz.png myTab
일반 매뉴얼Graphviz 프로그램의 경우 다음을 지정합니다.
-ooutfile
파일에 출력 쓰기아웃파일. […]
내 데비안의 Bash 완성은 문자 그대로 다음을 따릅니다. 지원하는 것이 아니라 입니다 . 후자가 작동하더라도 (그리고 나는 이것을 모른다) 완성은 그것을 지원하지 않습니다. 다음과 같이 진행해야 합니다:-ooutfile
-o outfile
dot
도트 -T png -omyTab
뒤에는 공백이 없습니다 -o
. 내 테스트에서는 위의 작업이 작동합니다.
두 번째 작품을 만들기 위해 Tab검사를 했습니다 /usr/share/bash-completion/completions/dot
. 끝 부분의 관련 줄은 다음과 같습니다.
_filedir dot
이것은 하위 디렉터리와 지정할 파일을 제공하지만 이름이 .dot
또는 로 끝나는 파일만 제공합니다 .DOT
. 아마도 당신은 할 수수동으로이 패턴과 일치하지 않는 파일을 제공하면 아무 문제도 발생하지 않을 것입니다. 그러나 완성 메커니즘에 의존한다면 파일 이름은 올바르게 끝나야 합니다.
사실 저는 전혀 모릅니다 dot
. Bash 완성에 대해서는 조금 알고 있습니다. 어쩌면 요구 사항이 의미가 없을 수도 있으며 dot
허용되는 경우 완성이 더 도움이 될 것입니다.어느파일. 이 경우 원본 파일을 복사하고 /etc/bash_completion.d/
복사본을 수정하므로 해당 줄은
_filedir dot
함수가 끝나면
_filedir
이는 시스템 전반에 걸친 변경 사항입니다. 변경 사항은 기존 셸에 영향을 주지 않으므로 새 셸을 시작하여 bash
테스트해 보세요. 수정할 수 없거나 수정하고 싶지 않은 경우 /etc/bash_completion.d/
다음을 참조하세요.이 답변. 이는 개인(사용자별)을 갖는 방법을 제공합니다 bash_completion.d/
.
이 변경 사항을 사용하면 입력이 가능 하고 완성 기능이 작동합니다. 그러나 이 특별한 경우에는 내부적으로 아무 관련이 없으며 피연산자의 일반적인 완성이며 예상치 못한 또는 잘못된 옵션(예: ) 후에도 작동합니다 .dot -T png -o myTab
-o
dot -T png -: myTab
답변2
dot
실제 자동 완성 정의가 설치된 시스템에 다른 명령이 있고 해당 명령이 해당 시점에 파일을 기대하지 않는 경우 이런 일이 발생할 수 있습니다 . 알 수 없는 명령의 경우 기본적으로 모든 매개변수에 대해 파일 자동 완성이 제공되지만 특정 명령은 자체 특정 자동 완성을 설정할 수 있습니다. 확인 /etc/bash_completion
하고 /etc/bash_completion.d/
.
추신: 또 다른 설명은 dot
자동 완성 스크립트가 문서와 일관되지 않거나 주장에 실수가 있다는 것입니다.