cron 작업에서 다음 명령(이와 유사)을 실행하고 싶습니다. Cron 작업은 이 명령 패턴을 허용하지 않습니다. 또한 같은 줄의 쉘에서 실행할 수 없습니다.
cat > file << EOF
first line
second line
third line
EOF
한 줄로 할 수 있는 방법이 있다면 알려주세요.
나는 또한 성공하지 못한 채 각 줄의 끝 부분에 줄 바꿈을 시도했습니다.
답변1
이것이 파일에 텍스트를 넣는 유일한 방법은 아닙니다. 다음을 수행할 수 있습니다.
$ printf '%s\n' 'first line' 'second line' 'third line' > file
그 후에는 다음을 file
포함합니다:
first line
second line
third line
명령에 인수로 제공할 수 있는 문자열의 수와 길이에는 제한이 있습니다. 이러한 제한이 큰 경향이 있는 Linux에서는 문제가 되지 않지만 다른 Unix 시스템이나 임베디드 환경에서는 덜 관대할 수 있습니다.
답변2
$'\n'
Bash에서 새 줄을 나타내는 데 사용할 수 있습니다.
예를 들어 다음을 사용할 수 있습니다.
bash -c "cat <<< first\ line$'\n'second\ line$'\n'third\ line > file"
당신의 크론에.
Bash 매뉴얼 페이지에서:
$'string' 형식의 단어는 특별하게 처리됩니다. 단어는 ANSI C 표준에 지정된 대로 대체된 백슬래시 이스케이프 문자를 사용하여 문자열로 확장됩니다. 백슬래시 이스케이프 시퀀스가 있는 경우 다음과 같이 디코딩됩니다.
\a 경고(링)
\b 백스페이스
\e
\E 이스케이프 문자
\f
폼 피드\n 줄 바꿈
\r 캐리지 리턴
\t 가로 탭
\v 세로 탭
\ 백슬래시
\ ' 작은따옴표
\" 큰따옴표
\? 물음표
\ nnn 값이 8진수 값 nnn(1~3자리)인 8비트 문자
\xHH 값은 16진수 값입니다. HH(1~2개의 16진수) 8비트 문자
\uHHHH 유니코드(ISO/IEC 10646)에는 16진수 값이 있습니다. value HHHH(1~4자리 16진수) \UHHHHHHHH 문자
에는 16진수 값 HHHHHHHH(1~8자리 16진수)이 있습니다. 유니코드(ISO/IEC 10646) 문자
\cx control-x 문자