Сегодня утром я создал псевдоним, чтобы помочь найти последний файл журнала в каталоге. Мой псевдоним выглядит так:
alias latest="ls -lat | grep ^- | awk '{print \$8}' | head -1"
В своем сегодняшнем утреннем исследовании я читал блог - ParsingLS , в котором говорится, что это, вероятно, не лучший способ сделать это - давайте проигнорируем что сейчас я могу взглянуть на создание лучшего псевдонима, используя find
позже. Пока предположим, что у меня есть отлично работающая команда, которая должна вывести имя файла из текущего каталога.
Я думал, что смогу сделать latest | vi
, чтобы открыть последний измененный файл в каталоге, но, похоже, это не сработает - vi жалуется, что вывод не является терминалом. Я видел вопрос переполнения стека, в котором предполагалось, что проблема связана с подоболочками и трубопроводами, и поэтому попытался
latest | vi < `tty` > `tty`
Но это меня просто достает
`tty`:ambiguous redirect
не рассуждаю о трубах - я только недавно начал пытаться использовать их всерьез, есть идеи?
Это просто. Если latest
создает имя файла на stdout
, $()
является ответом:
vim $( latest )
См. man bash
.
Я полагаю, что пейджера недостаточно?
Я не думаю, что vi поддерживает это (по крайней мере, nvi или недавний FreeBSD vi), однако vim делает:
latest | vim -
] Один из обходных путей - использовать именованный канал:
mkfifo vi.fifo
latest > vi.fifo & vi vi.fifo
rm vi.fifo
Не очень красиво, и FreeBSD vi, кажется, требуется дополнительный :e
, прежде чем он читает fifo.