나는 date \+%F\-%T
날짜와 시간을 다음 형식으로 표시하는 데 사용합니다 2019-08-15-21:34:58
.
에서 man date
:
%F
전체 날짜, %Y-%m-%d
%T
시간과 동일, %H:%M:%S와 동일
나는 이해하지 못 \+
하거나 설명이 없습니다 \-
.
나중에 백슬래시가 이스케이프되고 더하기 기호는 매개변수 접두사이며 하이픈은 문자열과 같은 구분 기호(날짜-시간),
일부 사람들은 더 간단한 것을 사용 +'%F-%T'
하거나 +"%F-%T"
대신 사용합니다.
날짜 매개변수에 + 또는 -를 사용하는 이유가 있나요?
답변1
백슬래시는 아무 작업도 수행하지 않습니다.
-
문자는 +
쉘 구문에 특별한 내용이 없기 때문에 이스케이프할 필요가 없습니다.
$ set -o xtrace
$ date +%F-%T
+ date +%F-%T
2019-08-15-11:51:46
$ date \+%F\-%T
+ date +%F-%T
2019-08-15-11:51:50
위의 추적 출력에서 볼 수 있듯이 셸에서 실행되는 명령은 백슬래시와 관계없이 동일합니다. 또한 추적 출력은 셸의 "디버그 출력"일 뿐이며 출력되는 모든 명령입니다.일반적으로 말하면케이스에 맞지 않음입력하다.
형식 사양이 도입되었습니다 +
. date
이는 -
형식 지정 사양의 일부인 문자 그대로의 대시입니다(출력에서도 대시로 표시됩니다).
명령은 date \+%F\-%T
와 동일합니다 date +%F-%T
. 또한 일반적으로 에 표시된 것처럼 인용된 날짜 형식을 볼 수 있습니다 date +'%F-%T'
. 형식은 단일 단어이므로 여기서는 차이가 없지만 date +'%F %T'
쉘이 공백의 형식을 두 개의 별도 인수로 분할하는 것을 방지하기 위해 인용해야 합니다 date
.
무엇하다다른 점은 %
캐릭터다. crontab 사양에서 사용하는 경우 이스케이프를 원할 수 있습니다. 예를 들어 참조하십시오.cron 탭 작업에서 "날짜"를 실행하는 방법은 무엇입니까?
이 %
문자는 3.0 이전 셸 구문 fish
(작업 확장용)에서는 특별했지만 단어의 첫 번째 문자로만 사용되었습니다(따라서 a 다음은 아님 +
). 마찬가지로 에서 zsh
선행 문자는 그 뒤의 문자가 전역 연산자로 간주되지 않는다는 %
점에서 특별하지만 ( 인용 부호를 사용하지 않고도 유사한 작업을 허용하기 위해 ) 여기에서는 동일하게 적용되지 않습니다.?
kill %?cmd
?