다음 1개 이상의 콘솔 출력 라인을 표시합니다.

다음 1개 이상의 콘솔 출력 라인을 표시합니다.

예를 들어 다음과 같은 명령을 실행할 때 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

관련 정보