짧은 대답 : 별칭을 쓰지 않을 때는 대신 echo
대신 함수를 사용하십시오.
긴 대답 : 즉각적인 문제는 따옴표가 중첩되지 않는다는 것입니다. 작은 따옴표가 포함 된 별칭을 작은 따옴표로 묶으려고하면 제대로 작동하지 않습니다. 셸이 작은 따옴표로 묶인 세그먼트 'touch index.php; echo "<?php \n\n require_once __DIR__ . $ '
을 포함하는 것으로 구문 분석하고 인용 부호가없는 세그먼트 /vendor/autoload.php
과 그 뒤에 작은 따옴표 ' ?>;" >> index.php; open/Applications/TextWrangler.app index.php;'
이옵니다. 따옴표를 제거하고 함께 뭉친 다음 결과를 별칭으로 할당합니다.
이 문제를 해결할 수있는 방법이 있지만 추한 것입니다. alias sp='touch ... $ '"'"'/vendor/...
과 같은 것 - 여기서 첫 번째 작은 따옴표는 작은 따옴표로 묶은 세그먼트를 끝내고 작은 따옴표가 들어있는 큰 따옴표로 묶은 다음 다른 작은 따옴표로 묶인 세그먼트의 시작 부분을 포함합니다. 블레.
별칭을 정의 할 때 복잡해 지므로 함수로 전환하는 것이 좋습니다. 이 모든 문제는 논쟁 그래서 무엇보다도 그들이 인용 할 필요가 없습니다 :
sp() {
touch index.php
echo "<?php \n\n require_once __DIR__ . $ '/vendor/autoload.php' ?>;" >> index.php
open/Applications/TextWrangler.app index.php
}
그러나만큼 내가 제안을 해요, 나는 다른 변화의 몇 가지를 만들 것입니다. 첫째, touch
명령은 리디렉션이 어쨌든하지 않으므로 아무 것도하지 않으므로 그대로 두십시오. 둘째, \n
을 echo
과 함께 사용하는 것은 예측할 수 없습니다. 일부 버전의 echo
은 개행 문자로 변환하지만 일부 문자는 개행하지 않습니다. OS X의 다른 버전간에 실제로 바뀌 었습니다. printf
을 사용하는 것이 더 낫습니다. 제대로 사용하는 것이 더 복잡하지만 훨씬 좋습니다. printf
의 첫 번째 인수는 나머지 인수가 인쇄되는 방식을 제어하는 데 사용되는 형식 문자열입니다. echo
과 다른 큰 차이점은 자동으로 마지막에 개행을 추가하지 않기 때문에 직접해야한다는 것입니다. 난 당신이 index.php 파일에이를 데려 가고 싶다는 있으리라 믿고있어 :
<?php
require_once __DIR__ . $ '/vendor/autoload.php'
?>
가 printf
이 작업을 수행하는 방법은 여러 가지가 있습니다.
printf '%s\n' "<?php" "" "require_once __DIR__ . \$ '/vendor/autoload.php'" "" "?>"
을하지만,이 경우 나는 여기-문서 cat
을 사용하십시오 : 아마 가장 간단한 각 줄 인수 만들고, 각각의 후 개행 문자를 넣어 형식 문자열을 사용하는 것입니다.당신이 청소기 들여 쓰기를 원하는 경우에, 당신은 또한 <<-"EOF"
을 사용할 수 있습니다
sp() {
cat <<"EOF" >>index.html
<?php
require_once __DIR__ . $ '/vendor/autoload.php'
?>
EOF
open/Applications/TextWrangler.app index.php
}
다음 탭 여기에-문서의 내용 (하지 공간)을 들여 : 당신은 (별명과는 달리) 함수 내에서 그렇게 할 수 있습니다.
위대한 답변! 모든 정보를 매우 감사합니다. –