我已经为 Git 创建了一个别名:
alias gtbs='echo on Branch; git rev-parse --abbrev-ref HEAD; echo last Modified; git status -s;'
但这会在换行符上打印每个输出
喜欢
on Branch:
develop
Added/Modified:
M scripts/myscript
而相反,我只想在一行中
on Branch: develop, Added/Modified: M scripts/myscript
echo
命令添加一个隐式换行符,您正在观察该换行符。
要么将-n
命令行选项传递给echo
(但这不符合 POSIX,尽管许多 shell 实现了它,以及来自 GNU/Linux 系统上的 coreutils
项目的/bin/echo
),或者像这样使用 printf
命令:
printf 'on branch: %s, last modified: %s'
$(git rev-parse --abbrev-ref HEAD) $(git status -s)
(此处\
用于格式化目的。
您还可以使用反引号`...`
而不是$(...)
。
另请注意,git status
本身可能会产生跨越多行的输出,因此我认为最明智的做法是要求printf
在git status
输出之前插入换行符,因此整个编码将变为:
printf 'printf 'on branch: %s, last modified:n'
$(git rev-parse --abbrev-ref HEAD) && git-status -s
如果出于某种原因,您确实想让git status -s
输出一行,则可能需要从中删除任何换行符:
printf '...last modified: %s' $(git status -s | paste -sd ,)
...如果你想要多字符分隔符,最后一个编码会变得更加复杂:
$(IFS=n git-status -s | while read line; do printf '%s; ' "$line"; done)