Вот пример использования параметров echo без новой строки-n
и возврата каретки \r
.
#!/bin/bash
CHECK_MARK="\033[0;32m\xE2\x9C\x94\033[0m"
echo -e "\n\e[4mDoing Things\e[0m"
echo -n "doing thing 1..."
sleep 1
echo -e "\\r${CHECK_MARK} thing 1 done"
Вариант этого ответа на связанный вопрос перечисляет все отслеживаемые файлы в текущем каталоге в обратном хронологическом порядке на основе их последнего зафиксированного изменения:
git log --pretty='' --name-only | awk '/^[^/]*$/ { if (!seen[$0]++) print }'
Если zsh
является опцией, вы можете использовать ееoe
(или Oe
в зависимости от того, хотите ли вы, чтобы самые новые -до -самые старые или самые старые -до -самые новые в порядке )с a git log
, который возвращает время эпохи(%ct
)самой последней фиксации.
Пр.
print -rl *(Noe:'REPLY=$(git log -1 --format=%ct $REPLY)':)
Чтобы избежать необходимости запоминать и вводить команду, вы можете определить вспомогательную функцию, например
ct() { REPLY=$(git log -1 --format=%ct $REPLY); }
, а затем используйте
print -rl *(Noe:ct:)
Это работает с использованием квалификатораzsh
glob формыoC
:
oC
specifies how the names of the files should be sorted.
в частности
oe and o+ are special cases; they are each followed by shell code, delimited as for the e glob qualifier and the + glob qualifier respectively. The code is executed for each matched file with the parameter REPLY set to the name of the file on entry and globsort appended to zsh_eval_context. The code should modify the parameter REPLY in some fashion. On return, the value of the parameter is used instead of the file name as the string on which to sort.
Ссылки: