как открыть последний созданный текстовый файл?

Это тоже должно работать:

sudo apt-get install python-virtualenv
virtualenv -p python3 myvenv

Или еще лучше:

sudo apt-get install python3-pip
sudo pip3 install virtualenv
virtualenv myvenv
1
задан 29 June 2017 в 21:57

3 ответа

Простой случай. Если вы знаете, что имена ваших файлов являются правильными (без пробелов, символов подстановки, строк и т. Д.), Вы можете просто сделать:
cat $(ls -t | head -n1)
Чтобы справиться с пробелами и символами глобуса, просто укажите:
cat "$(ls -t | head -n1)"
Если ваши имена файлов являются произвольными, и вам нужно для выполнения этой работы для любого имени файла, в том числе с новыми символами в их имени, используйте:
cat "$(stat --printf '%n/%Y\0' * | sort -rz -t'/' -k 2 | head -z -n 1 | cut -d'/' -z -f 1 )"
Объяснение stat --printf '%n/%Y\0': напечатайте имя файла и дату его изменения (в секундах с эпохи), разделенные символами / и затем NUL (\0). Я использую / и \0, потому что они являются единственными двумя символами, недопустимыми в имени файла / каталога. sort -rz -t'/' -k 2: сортировать по второму / -отделимому полю. [F13] делает sort считанные данные с нулевым ограничением. head -z -n 1: сохранить только тупик, ограниченный нулем (-z). cut -d'/' -z -f 1: напечатать только первое поле / -delimited, имя файла. Опять же, -z делает cut сделкой с данными, разделенными NUL. Используйте zsh вместо bash в качестве вашей оболочки и просто запустите:
cat *(om[1])

Вы можете установить любой из них (желательно 3, поскольку он является самым надежным) в качестве псевдонима, добавив эту строку к вашему ~/.bashrc:

alias cat_last='cat "$(stat --printf "%n/%Y\0" * | sort -rz -t"/" -k 2 | head -z -n 1 | cut -d"/" -z -f 1 )" 2>/dev/null'

Я добавил /dev/null, потому что в моей системе оболочка жалуется на то, что во входной строке находится байт NUL. Это не блокирует команду, хотя нет причины продолжать эту ошибку.

2
ответ дан 22 May 2018 в 21:02
  • 1
    ls -tr отобразит несколько имен файлов в одной строке. Лучше использовать ls -tr1. Или используйте ls -t1 | head -1 и сохраните несколько нажатий клавиш. – Jos 29 June 2017 в 15:48
  • 2
    @ Нет, нет причин использовать -1 при передаче вывода ls в трубу. Он делает это автоматически. Хороший вопрос об использовании -r, хотя я привык к этому, и я добавил его автоматически, не задумываясь. Также упоминаются псевдонимы. – terdon♦ 29 June 2017 в 15:57
  • 3
    благодаря! не могли бы вы объяснить, что делает $(ls -t | head -n1)? – ℕʘʘḆḽḘ 29 June 2017 в 15:58
  • 4
    @Noobie это все объяснено в man ls и man head. [F3] просто делает файлы сортировки ls по дате, а head -n1 печатает первую строку своего ввода. – terdon♦ 29 June 2017 в 15:58
  • 5
    @terdon Спасибо, не знал, что многопользовательский макет уходит при использовании канала. – Jos 29 June 2017 в 15:58
Простой случай. Если вы знаете, что имена ваших файлов являются правильными (без пробелов, символов подстановки, строк и т. Д.), Вы можете просто сделать: cat $(ls -t | head -n1) Чтобы справиться с пробелами и символами глобуса, просто укажите: cat "$(ls -t | head -n1)" Если ваши имена файлов являются произвольными, и вам нужно для выполнения этой работы для любого имени файла, в том числе с новыми символами в их имени, используйте: cat "$(stat --printf '%n/%Y\0' * | sort -rz -t'/' -k 2 | head -z -n 1 | cut -d'/' -z -f 1 )" Объяснение stat --printf '%n/%Y\0': напечатайте имя файла и дату его изменения (в секундах с эпохи), разделенные символами / и затем NUL (\0). Я использую / и \0, потому что они являются единственными двумя символами, недопустимыми в имени файла / каталога. sort -rz -t'/' -k 2: сортировать по второму / -отделимому полю. [F13] делает sort считанные данные с нулевым ограничением. head -z -n 1: сохранить только тупик, ограниченный нулем (-z). cut -d'/' -z -f 1: напечатать только первое поле / -delimited, имя файла. Опять же, -z делает cut сделкой с данными, разделенными NUL. Используйте zsh вместо bash в качестве вашей оболочки и просто запустите: cat *(om[1])

Вы можете установить любой из них (желательно 3, поскольку он является самым надежным) в качестве псевдонима, добавив эту строку к вашему ~/.bashrc:

alias cat_last='cat "$(stat --printf "%n/%Y\0" * | sort -rz -t"/" -k 2 | head -z -n 1 | cut -d"/" -z -f 1 )" 2>/dev/null'

Я добавил /dev/null, потому что в моей системе оболочка жалуется на то, что во входной строке находится байт NUL. Это не блокирует команду, хотя нет причины продолжать эту ошибку.

2
ответ дан 18 July 2018 в 10:56
Простой случай. Если вы знаете, что имена ваших файлов являются правильными (без пробелов, символов подстановки, строк и т. Д.), Вы можете просто сделать: cat $(ls -t | head -n1) Чтобы справиться с пробелами и символами глобуса, просто укажите: cat "$(ls -t | head -n1)" Если ваши имена файлов являются произвольными, и вам нужно для выполнения этой работы для любого имени файла, в том числе с новыми символами в их имени, используйте: cat "$(stat --printf '%n/%Y\0' * | sort -rz -t'/' -k 2 | head -z -n 1 | cut -d'/' -z -f 1 )" Объяснение stat --printf '%n/%Y\0': напечатайте имя файла и дату его изменения (в секундах с эпохи), разделенные символами / и затем NUL (\0). Я использую / и \0, потому что они являются единственными двумя символами, недопустимыми в имени файла / каталога. sort -rz -t'/' -k 2: сортировать по второму / -отделимому полю. [F13] делает sort считанные данные с нулевым ограничением. head -z -n 1: сохранить только тупик, ограниченный нулем (-z). cut -d'/' -z -f 1: напечатать только первое поле / -delimited, имя файла. Опять же, -z делает cut сделкой с данными, разделенными NUL. Используйте zsh вместо bash в качестве вашей оболочки и просто запустите: cat *(om[1])

Вы можете установить любой из них (желательно 3, поскольку он является самым надежным) в качестве псевдонима, добавив эту строку к вашему ~/.bashrc:

alias cat_last='cat "$(stat --printf "%n/%Y\0" * | sort -rz -t"/" -k 2 | head -z -n 1 | cut -d"/" -z -f 1 )" 2>/dev/null'

Я добавил /dev/null, потому что в моей системе оболочка жалуется на то, что во входной строке находится байт NUL. Это не блокирует команду, хотя нет причины продолжать эту ошибку.

2
ответ дан 24 July 2018 в 19:41

Другие вопросы по тегам:

Похожие вопросы: