Bash의 이전 줄에 연결

Bash의 이전 줄에 연결

다음 명령을 실행하면 파일 끝에 행(현재 날짜 포함)이 추가 되도록 aliasmy에 추가하려고 합니다 ..bashrc> push 1232017-08-29/push/123

별칭 추가: alias push='date +%F/push/ >> log.txt ; echo $1 >> log.txt' 문제가 거의 해결되었습니다. 그러면 아래와 같이 두 줄이 추가됩니다.

2017-08-29/push/
123

이것을 한 줄로 바꾸도록 도와주세요.

답변1

push () { date "+%F/push/$1" >> /tmp/pushlog.txt; }

이는 /tmp/pushlog.txt파일에 문자열을 추가하는 쉘 함수를 정의합니다.

사용된 형식 문자열에는 date쉘 함수에 대한 첫 번째 명령줄 인수가 포함되어 있습니다.

bash-4.4$ push 123
bash-4.4$ push "hello world"
bash-4.4$ push "%s"
bash-4.4$
bash-4.4$ cat /tmp/pushlog.txt
2017-08-29/push/123
2017-08-29/push/hello world
2017-08-29/push/1504041277

push이전 예와 같이 해석될 수 있는 문자열 푸시를 사용하려고 하는데 date이것이 원하는 것이 아닌 경우 대신 다음을 사용하십시오.

push () { printf '%s/push/%s\n' "$(date '+%F')" "$1" >> /tmp/pushlog.txt; }

파일에 원치 않는 개행 문자가 있는 이유는 date개행 문자가 출력 끝에 출력되기 때문입니다. 이 개행 문자는 위의 쉘 함수의 두 번째 구현에서 했던 것처럼 in을 사용할 때 date제거됩니다 .$(...)

관련 정보