Блок ACPI зависит от включаемого PCI.
Symbol: ACPI [=y]
...
Depends on: !IA64_HP_SIM && (IA64 || X86 [=y]) && PCI [=y]
Если Вы отключили PCI (или не включил его), или выбрал другую архитектуру, Вы не будете видеть опций, связанных с ACPI.
Использовать xargs
:
$ command ls /proc | grep -v "^[0-9].*" | xargs
command
часть необходима потому что если Ваш ls
искажается к ls --color
например, это добавляет непечатаемые escape-последовательности к своему выводу это grep
так или иначе перерывает и приводит к нежелательным результатам.
Другие опции
Если Вы не возражаете против Вашего PWD
изменение:
$ cd /proc && echo [^0-9]*
Если Вы не хотите изменять Ваш PWD
:
$ pushd . &>/dev/null && cd /proc && echo [^0-9]* && popd &>/dev/null
Или:
$ echo /proc/[^0-9]* | sed 's!/proc/!!g'
Используя grep
Вы могли просто использовать расширение оболочки на /proc
и передайте его по каналу к grep
:
$ echo /proc/* | grep -oP "(?<=/proc/)\D.*? " | paste -s -d ''
$ echo /proc/* | grep -oP "(?<=/proc/)\D.*? " | paste -s -d ''
acpi asound buddyinfo bus cgroups ....
Вышеупомянутое использует grep
способность использовать механизм регулярного выражения Perl (PCRE). Это -P
переключатель к grep
. -o
говорит grep
только возвратить строки, которые соответствуют шаблону. Мы затем используем способность Perl к lookbehinds. Таким образом, когда мы находим строку этим существа с /proc
, мы затем заботимся /proc
для любых строк, которые не запускаются с цифры (\D
). Это строки, которые являются возвратом (нецифра стартовые).
Вставка делает некоторую очистку для нас путем удаления всех символов новой строки что grep
добавленный, когда это запуск, отображающий его результаты.
Используя sed
Альтернатива этому методу должна была бы использовать sed
вместо этого (эй, который рифмует).
$ echo /proc/* | sed 's@/proc/[0-9]\+ @@g;s@/proc/@@g'
Этот подход находит все строки, запускающиеся с /proc/
И цифры и пространство и заменяют ими ни с чем, эффективно удаляя их. После этого мы делаем другого sed
команда, которая делает то же к /proc/
строки, и нас оставляют только с начальными строками нецифры.
Для "сопоставления" вывода в столбцы, paste
команда делает это довольно легко. Здесь я делаю 2 столбца, но можно измениться paste
команда для генерации более или менее путем добавления дополнительных тире (-
). column -t
в конце вынуждает вывод выстроиться в линию на столбцах.
$ ls /proc | grep -v "^[0-9].*" | paste - - | column -t
Сначала 5 строк вывода благодаря head -5
.
$ ls /proc | grep -v "^[0-9].*" | paste - - |column -t | head -5
acpi asound
buddyinfo bus
cgroups cmdline
cpuinfo crypto
devices diskstats
Вот то же самое с 4 столбцами:
$ ls /proc | grep -v "^[0-9].*" | paste - - - - |column -t | head -5
acpi asound buddyinfo bus
cgroups cmdline cpuinfo crypto
devices diskstats dma dri
driver execdomains fb filesystems
fs interrupts iomem ioports
Примечание: На ответ @JosephR., если Вы встречаетесь с какими-либо проблемами с вышеупомянутыми командами, которые анализируют вывод от ls
, можно снабдить префиксом его команду Bash, command
, который обойдет любые псевдонимы, можно иметь в распоряжении для ls
.
$ command ls /proc | grep -v "^[0-9].*" | paste - - - - |column -t | head -5
acpi asound buddyinfo bus
cgroups cmdline cpuinfo crypto
devices diskstats dma dri
driver execdomains fb filesystems
fs interrupts iomem ioports
ls
искажается к ls --color
который добавляет непечатаемые escape-последовательности к colorize вывод, это так или иначе закончилось на grep
радар. command ls ...
обработанный. Еще одна причина не проанализировать ls
.
– Joseph R.
11.09.2013, 15:57
echo
все запускается с /proc
таким образом, ничто не будет соответствовать ^[0-9]
. Взгляните на вывод, который Вы отправили, все запускается с числа. И, в любом случае при использовании эха непосредственно все будет на той же строке так grep
будет или соответствовать всему или ничему. Наличие плохого дня? :)
– terdon♦
11.09.2013, 16:01
Как насчет того, чтобы использовать в своих интересах удар IFS
- основанное разделение слова в сочетании с заменой команды (принимающий значение по умолчанию IFS
)
echo $(ls /proc | grep -v "^[0-9].*")
acpi buddyinfo bus cmdline cpuinfo.....
ls
только отображает его вывод в столбцах, когда он печатает к терминалу. Когда его вывод является файлом или каналом, ls
печать один объект на строку.
Можно использовать опцию -C
для печати в столбцах независимо от типа потока вывода но это лишит возможности (или по крайней мере, трудно) фильтровать вывод с grep
.
Можно сказать ls
проигнорировать файлы, имя которых начинается с цифры. Это - самый простой способ быть произведенным, который похож на вывод от ls /proc
только без рабочих каталогов.
ls -I '[0-9]*'
С другой стороны, можно указать, какие записи Вы хотите перечислить.
(cd /proc && ls -d [!0-9]*)
Если Вы просто хотите записи и не заботитесь о презентации или цветах, используйте подстановочные знаки оболочки вместо ls
. Вторая команда характерна для zsh.
(cd /proc && echo [!0-9]*)
echo /proc/[^0-9]*(:t)
ls
. – Joseph R. 11.09.2013, 16:00ls
искажается кls --color
попробоватьls /proc|grep --color ';'
– Joseph R. 11.09.2013, 16:09[01;34mtty
!! – Joseph R. 11.09.2013, 16:12echo
послеxargs
? В моей системе,xargs
отдельно производит тот же вывод. – iruvar 11.09.2013, 19:13