次の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.

注:最初の例は2つのセクション間の1行の間隔を示し、2番目の例は2行を示し、3番目の例は3行を示しています。

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

関連情報