스크립트를 방탄으로 만들지 않는 경우에만 줄을 추가하여 파일을 제자리에서 편집하고 싶습니다.
일반적으로 다음과 같은 작업을 수행합니다.
cat >> ~/.bashrc <<EOF
export PATH=~/.composer/vendor/bin:\$PATH
EOF
ansible ( line
+ insertafter=EOF
+ regexp
)을 통해 할 수도 있지만 또 다른 이야기입니다.
vi / ex에서는 다음과 같은 작업을 수행 할 수 있습니다.
ex +'$s@$@\rexport PATH=\~/.composer/vendor/bin:$PATH@' -cwq ~/.bashrc
그러나 동일한 라인을 반복하지 않고 라인이 이미 있는지 (따라서 아무것도하지 않는지) 어떻게 확인합니까?
아니면 Ex 편집기에서 더 쉬운 방법이 있습니까?
ex ~/.bashrc -c "if search('export PATH=\~\/.composer\/vendor\/bin:\$PATH')>0 | norm quit | endif | norm Aexport PATH=~/.composer/vendor/bin:$PATH"
export
A는 명령 행의 나머지 쉘 단어, NOT 할당하므로. 따라서 변수 할당과 달리 (사용하지 않는 export
) 큰 따옴표가 필요하거나 공백에서 깨집니다 . PATH에 경로를 올바르게 추가하는 방법 도 참조하십시오 .
grep -Fq 'export PATH=~/.composer/vendor/bin:$PATH' ~/.bashrc || ex ...
(또는cat
그 문제)?