.scss
명령을 사용하여 sass() 파일의 형식을 지정 하는 웹사이트가 있습니다 sass-convert
. 구문은 다음과 같습니다.
$> sass-convert original.scss formatted.scss
저는 git 저장소에 있기 때문에 별도의 출력 파일을 갖는 것은 완전히 중복됩니다. 나의 다음 단계는 입니다 mv formatted.scss original.scss
. 두 번째 단계를 피하기 위해 뭔가를 하고 싶습니다. 그것은 마치
$> sass-convert original.scss %^&
%^&
내가 원하는 것을 수행하는 마법의 쉘/bash 구문이 있습니까 ?
bash(또는 다른 쉘) 구문을 사용하여 한 줄로 출력 파일을 입력 파일로 자동으로 바꾸는 방법이 있습니까?
내 문제는 다음과 다릅니다.이 문제iconv
출력 파일이 먼저 생성되어 입력 파일이 비어 있게 되므로 아래 나열된 솔루션 중 어느 것도 작동하지 않습니다 . 이 두 질문에 대한 답변을 보면 서로 다르다는 것을 알 수 있습니다. 이 질문에 대한 대답은 출력 파일을 즉시 생성하지 않는 모든 명령에 적용됩니다.
답변1
Unix 프로그램에는 -i inplace
스위치가 있을 수 있습니다(예: 이전 버전 sed
에는 없었지만 현재 대부분은 에서 플래그를 훔칩니다 perl
). man
자세한 내용은 페이지를 확인하세요. 이로 인해 일반적으로 프로그램이 출력을 임시 파일에 쓴 다음 rename(2)
원래 이름에 새 출력을 쓰기 위한 호출을 수행하게 됩니다(이 이름 변경으로 인해 selinux 컨텍스트나 프로세스의 다른 멋진 ACL이 손상될 수도 있습니다. 당신은 그런 것들을 사용합니다).
write-to-tmp-file-and- 모드 rename(2)
에 대한 또 다른 솔루션은 sponge
다음에서 제공됩니다 moreutils
.
$ echo hi > file
$ tr h b < file | sponge file
$ cat file
bi
$
답변2
배시 사용역사 연산자:
sass-convert original.scss !#:$
!#
현재 행, :$
마지막 인수(지금까지)를 지정합니다.
이것은 잘 작동 sass-convert
하지만 보다 일반적인 용도에서는 입력 처리를 마치기 전에 출력을 자르는 프로그램이 이 접근 방식을 사용할 수 없다는 점에 유의할 가치가 있습니다.
답변3
tcsh
또는 모드 zsh
( emacs
일반적으로 기본 모드) 에서는 다음을 입력할 수 있습니다.
sass - 원시 .scss 변환Ctrl+Alt+_
Ctrl+Alt+_이전 단어( copy-prev-word
위젯)를 복사합니다.
이전 공백으로 구분된 단어를 복사하고 따옴표 또는 유사한 내용을 이해하지 못합니다( !#:$
csh 스타일 기록 확장과 반대).
bash
다른 readline 기반 셸 에서도 작동하는 또 다른 접근 방식은 여전히 emacs
패턴을 유지하고 있습니다.
sass - 원시 .scss 변환Ctrl+WCtrl+Y Ctrl+Y
zsh를 사용하면 다음 작업도 수행할 수 있습니다.
(){sass-convert $1 $1} original.scss
(t)csh/ksh/zsh/bash의 경우 중괄호 확장을 사용합니다.
sass-convert original.scss{,}