Используйте read
, чтобы получить имя файла из канала, а затем передать его как переменную вашей команде.
Например, использование шелл-функции (, вероятно, не лучшее название для этого, возможно, вы можете придумать что-нибудь получше):
emacspipe () {
local filename
read filename
emacs -nw "$filename" -f org-mode
}
Затем вы можете использовать:
$ echo foo | emacspipe
Но использование подстановки команд $(...)
, как предлагает другой ответ, определенно является более подходящим способом сделать то же самое. Если у вас есть команда, которую вы можете передать чему-то, вы можете просто запустить ее в блоке $(...)
и передать полученное имя файла в качестве аргумента сценарию или функции, запускающей emacs...
<
в выводе lvdisplay
просто означает, что размер был округлен. По умолчанию все команды LVM печатают «удобочитаемые» размеры, и если размер не может быть точным с точностью до двух знаков после запятой, он будет округлен, на что указывает знак «меньше» -. Если вам нужно точное число, вы можете указать единицу измерения вручную, наиболее точным всегда будет --units=B
для байтов.
Обратите внимание, что lvdisplay
печатает размер LV (блочного устройства ), а не файловой системы, которая может иметь другой размер. Если вы хотите увидеть размер несмонтированной файловой системы, вам нужно использовать специальные инструменты файловой системы, такие как dumpe2fs
для Ext.
Также размер вашей корневой файловой системы не 6 ГБ, а 137 ГБ согласно df
, используется размер 6 ГБ.