sh -v <<< 'pytest /awesome_tests -k test_quick_tests -n auto' \
&> test_output_$(date -u +"%FT%H%MZ").txt
sh -v
приводит к тому, что sh
отображает каждую командную строку в stderr
, поэтому, поскольку вы уже записываете stderr
в выходной файл, все, что необходимо, — это использовать параметр -v
и предоставить sh
с командой, которую вы хотите запустить.
Обратите внимание, что в моем тестировании sh -v -c 'your-command-here'
не работал.
echo 'pytest /awesome_tests -k test_quick_tests -n auto' | \
sh -v &> test_output_$(date -u +"%FT%H%MZ").txt
работает, но echo... |
— это то, для чего предназначен bash
<<<
.
Потому что ls
по умолчанию сортирует лексикографически.
Вы можете попробовать одно из двух:
№1:
ls -v
это будет рассматривать числа как номера версий, и это обычно решает подобные проблемы.
№2 (как описано здесь):
ls *{1..73}*pdf
ls -v
можно заменить alias
просто на ls
, чтобы сделать это поведением по умолчанию. Расширение скобок bash будет перечислять по порядку, но я бы не рекомендовал его, так как он требует кучу служебной информации, например, максимальное число и т. д.
Если вам нужна еще более качественная сортировка, я бы предложил передать ls
в sort
и точно -настроить поведение сортировки таким образом.
По лексикографическому весу эта сортировка действительна:
a1
a10
a100
a2
a200
b1
b10
b100
b2
b20
...
Однако, если вы думаете об этом в более хронологическом смысле, он ищет во всем мире аналогичную нумерацию версий, поэтому ls -v
часто заботится об этом.