たとえば、次のコマンドを実行すると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