Теперь, когда вы работаете в cshell, вы должны знать, что псевдонимы должны быть определены только в одной строке. следовательно, псевдоним, который показан выше нормальной длины строки. Это cshell для вас.
alias latest_log 'find "$LOG/tr/`date +%Y%m%d`" -name "xtest*" -printf "%Ts\t%p\0" | sort -z -k 1,1nr -k 2 | head -z -n 1 | cut -z -f2 | xargs -0 less -F'
Разбить его на части, чтобы показать, что он делает:
find
печатает имена файлов, разделенные нулем -, с числовой меткой времени вместе с именем файла. Обратите внимание, что кавычки в команде date
были удалены, так как date
может работать очень хорошо без них, плюс их наличие сделало бы кавычки излишне громоздкими для псевдонима. \0
)двойные (метки времени TAB-файла )затем сортируются, начиная с первого поля в обратном числовом порядке и заканчивая вторым полем. Параметр -z
в команде sort
предназначен для разделения входных фрагментов вокруг нулевого символа, а не новой строки по умолчанию. head -z -n 1
мы удаляем самый верхний фрагмент, который будет содержать имя файла с последней отметкой времени. cut
берет верх и удаляет метку времени, так как ее работа завершена и она больше не нужна. Мы используем опцию -z
для обработки ввода, разделенного нулями, до cut
.Опция -f2
должна передать filename + \0
следующему конвейеру. xargs -0
будет читать имя файла, разделенное нулем, и передавать имя файла в less -F
в своей командной строке. Кажется, я нашел причину. ModemManager.service конфликтует с ttyS0. При отключении этой службы процесс загрузки восстанавливался.