Fish Shell에서 bash 스타일 문자열 조작을 어떻게 할 수 있나요?
특히 bash에서는
read branch < ".git/HEAD"
branch=${branch#ref: refs/heads/}
변수 에 지점 이름을 넣습니다 $branch
.
생선 껍질에서도 같은 작업을 어떻게 수행할 수 있나요?
물고기에 대한 문서를 훑어봤지만 아무것도 찾지 못했습니다.
답변1
이제 물고기 껍질에 string
내장된 명령이 있습니다.
귀하의 경우 string
대신 사용하려면 다음을 수행하십시오 .sed
set branch (string replace 'ref: refs/heads/' '' <.git/HEAD)
주어진 인수 또는 표준 입력에 대해 작동할 수 있습니다.
할 수 있는 일이 더 많습니다 string
. 로부터문자열 명령 문서:
Synopsis
string length [(-q | --quiet)] [STRING...]
string sub [(-s | --start) START] [(-l | --length) LENGTH] [(-q | --quiet)]
[STRING...]
string split [(-m | --max) MAX] [(-r | --right)] [(-q | --quiet)] SEP
[STRING...]
string join [(-q | --quiet)] SEP [STRING...]
string trim [(-l | --left)] [(-r | --right)] [(-c | --chars CHARS)]
[(-q | --quiet)] [STRING...]
string escape [(-n | --no-quoted)] [STRING...]
string match [(-a | --all)] [(-i | --ignore-case)] [(-r | --regex)]
[(-n | --index)] [(-q | --quiet)] [(-v | --invert)] PATTERN [STRING...]
string replace [(-a | --all)] [(-i | --ignore-case)] [(-r | --regex)]
[(-q | --quiet)] PATTERN REPLACEMENT [STRING...]
답변2
fish는 미니멀리즘에 관한 것입니다. 작업을 쉽게 수행하는 공통 유틸리티가 있다면 그것은 fish에 있지 않습니다. 그래서 당신이 말했듯이 sed를 사용하면 다음과 같습니다.
set branch (sed 's#^ref: refs/heads/##' .git/HEAD)