예를 들어 다음과 같은 명령을 실행할 때 tail ~/SOMEFILE
:
testenv@vps_1:~# tail ~/SOMEFILE
This is the content of SOMEFILE.
그러나 testenv@vps_1:~#
:와 출력 사이에 캐리지 리턴을 원하면 어떻게 될까요?This is the content of SOMEFILE.
따라서 최종 결과는 다음과 같을 것입니다.
testenv@vps_1:~# tail ~/SOMEFILE
This is the content of SOMEFILE.
아니면 이거:
testenv@vps_1:~# tail ~/SOMEFILE
This is the content of SOMEFILE.
아니면 이거:
testenv@vps_1:~# tail ~/SOMEFILE
This is the content of SOMEFILE.
참고: 첫 번째 예는 두 섹션 사이의 간격 한 줄을 보여주고, 두 번째 예는 두 줄을 보여주고, 세 번째 예는 세 줄을 보여줍니다.
tail
예제에 표시된 것처럼 출력(또는 다른 출력)의 간격을 보장하는 방법이 있습니까?이 특정 명령에 대해서만(물론 모든 명령은 아님) Bash에서?
답변1
tail
이를 통제할 주장은 없습니다.
사람으로서 무엇을 할 수 있습니까?해결책인쇄빈 줄tail 명령을 실행하기 전에.
echo && tail ~/SOMEFILE
여러 줄의 경우:
yes
명령도 사용할 수 있습니다.응 매뉴얼 페이지여기에 제안된 것처럼:bash: x 빈 줄 수를 인쇄합니다.
yes '' | sed 5q && tail ~/SOMEFILE
5를 원하는 빈 줄 수로 바꾸세요.
참고: 터미널 프롬프트 편집을 살펴볼 수도 있습니다. 그러나 특정 명령에만 연결되는 것이 아니라 터미널 범위가 적용됩니다.
답변2
가장 쉬운 옵션은 다음과 같이 추가 줄바꿈을 수동으로 인쇄하는 것입니다.
printf '\n\n\n'; tail ~/SOMEFILE
그러나 원하는 경우:
- 그냥 이렇게 해라
tail
- 전화할 때 마다
tail
추가 명령을 작성하지 마세요. - 개행 수에 대한 간단하고 포괄적인 제어
그런 다음 aliases/rc 파일에 함수를 추가하는 것이 좋습니다.
예를 들어:
# Bash version
# In Bash we can override commands with functions
# thanks to the `command` builtin
tail() {
# `local` limit the scope of variables,
# so we don't accidentally override global variables (if any).
local i lines
# `lines` gets the value of the first positional parameter.
lines="$1"
# A C-like iterator to print newlines.
for ((i=1; i<=lines; i++)); do
printf '\n'
done
# - `command` is a bash builtin, we can use it to run a command.
# whose name is the same as our function, so we don't trigger
# a fork bomb: <https://en.wikipedia.org/wiki/Fork_bomb>
#
# - "${@:2}" is to get the rest of the positional parameters.
# If you want, you can rewrite this as:
#
# # `shift` literally shifts the positional parameters
# shift
# command "${@}"
#
# to avoid using "${@:2}"
command tail "${@:2}"
}
#===============================================================================
# POSIX version
# POSIX standard does not demand the `command` builtin,
# so we cannot override `tail`.
new_tail() {
# `lines` gets the value of the first positional parameter.
lines="$1"
# `i=1`, `[ "$i" -le "$lines" ]` and `i=$((i + 1))` are the POSIX-compliant
# equivalents to our C-like iterator in Bash
i=1
while [ "$i" -le "$lines" ]; do
printf '\n'
i=$((i + 1))
done
# Basically the same as Bash version
shift
tail "${@}"
}
그래서 당신은 그것을 호출할 수 있습니다:
tail 3 ~/SOMEFILE
답변3
단일 빈 줄의 경우
sed '{x;1p;x;}' filename | tail
시작 부분에 빈 줄 5개
sed '{x;1p;1p;1p;1p;1p;x;}' filename | tail