Вместо использования команды tail
используйте awk
для получения идеального вывода.
Last = tail -F "$FILE" ===> Last=$(awk '/./{line=$0} END{print line}' $FILE)
Можно использовать функцию:
function cd() {
builtin cd "$@"
if [[ -d .git ]]; then
git fetch &
fi
}
Добавьте это в файл запуска вашей оболочки.
Здесь происходит несколько вещей:
функцию cd() {
для переопределения встроенного cd
поведения с нашим собственным кодом. builtin
*, чтобы оболочка использовала встроенный cd
вместо рекурсивного вызова нашей пользовательской функции cd()
, и предоставляем ей $@
в качестве аргументов, которые оболочка расширит до всех аргументов, предоставленных функции. .git
, и если существует, запускаем git fetch
, сообщая оболочке, чтобы она поместила его в фоновый режим, добавляя &
. Обратите внимание, что вывод git fetch
все еще будет отправлен на терминал. Если вы хотите отбросить его, вы можете использовать следующее:
git fetch & 2>&1 >/dev/null
Это перенаправляет stderr в stdout, а затем отправляет stdout в /dev/null
.
[*]: Обратите внимание, что builtin
отсутствует в POSIX, и поэтому это решение не переносится на все оболочки
[^]: Это не сработает, если git-репозиторий пустой, но почти наверняка у вас на диске не будет пустого репозитория, так что кому какое дело