Который является самым портативным из sed, awk, жемчуга и sh?

Цвета линии питания энергии должны быть расположены в Вашем .vim каталог. При использовании сменного менеджера, это может быть .vim/bundle/, сопровождаемый vim-powerline/autoload/Powerline/Colorschemes дерево. Файл, который Вы ищете, должен быть default.vim.

Настройка цветов, которую Вы ищете:

 .   \ Pl#Hi#Segments(['mode_indicator'], {¬        
 .   .   \ 'n': ['base03', 'green', ['bold']],¬     
 .   .   \ 'i': ['darkestcyan', 'white', ['bold']],¬
 .   .   \ 'v': ['white', 'orange', ['bold']],¬     
 .   .   \ 'r': ['white', 'violet', ['bold']],¬     
 .   .   \ 's': ['white', 'gray5', ['bold']],¬      
 .   .   \ }),¬                                     

n для нормального, i для вставки, v для визуального, r для замены и s для выбора (?). Дополнительные цвета могут быть определены в call Pl#Hi#Allocate({¬ раздел.

15
04.04.2014, 18:51
2 ответа

startx -- :5

Какие из этих инструментов являются наиболее переносимыми (sed, awk, perl и sh?

sed[1123630], [1123631]sh[1123632] и [1123633]awk[1123634]), которые указаны POSIX, [1123635]perl[1123636] не настолько переносимы, насколько не поддерживаются стандартом.

Может ли кто-нибудь привести эти инструменты в порядок их переносимости?

Если вы придерживаетесь совместимого кода, то порядок переносимости для трех команд POSIX не должен быть.

Какие из них наверняка найдутся даже на самых минимальных *nix-системах?Три POSIX вместе со многими другими утилитами обязательны для того, чтобы ОС стала POSIX. На самом деле, большинство (если не все) свободных и открытых Unix-систем, подобных операционным системам, вероятно, не пройдут процесс согласования, если попытаются, и никогда не попробуют.

Есть ли какая-нибудь из них на 100% уверенная?

Я был бы удивлен, если бы обнаружил *nix-систему, подобную ОС, без оболочки, основанной на синтаксисе Bourne, но все возможно, особенно на встраиваемых системах.

Мое предположение, что порядок следующий: Некоторые оболочки будут присутствовать по умолчанию, они всегда будут в /bin/sh?

/bin/sh[1123646] скорее всего будут оболочкой семейства Bourne, но не гарантированно будут совместимы с POSIX, даже на POSIX-совместимых системах. Например, [1123647]/usr/xpg4/bin/sh[1123648] на Solaris 10 и более ранних версиях, в то время как [1123649]/bin/sh[1123650] является старой оригинальной оболочкой Bourne, которая не является POSIX.[1123196].

15
27.01.2020, 19:49

Воспользуйтесь подсказкой Autotools: придерживайтесь наименьшего общего знаменателя оболочки Борна и POSIX - возможно, дополненного sed - если вы нужно написать что-то, что должно работать везде . Могут существовать системы, в которых что-то ломается, но вы можете обойти такие проблемы, переписав.

Например, в некоторых древних системах есть проблемы с ошибками раскрытия в test , также известном как [:

 if [ $foo = bar ] ; then...

, поэтому практика Autoconf состоит в том, чтобы переписать его в двойные кавычки с односимвольным префиксом, например:

 if [ x"$foo" = "xbar" ] ; then...

Вы также можете использовать здесь "x $ foo" . Это защищает от возможности того, что $ foo может быть допустимым вариантом для test (1) , и поскольку [ является псевдонимом для test ], это может неверно истолковать выражение. Решение состоит в том, чтобы создать ситуацию, когда неизвестный аргумент [ всегда начинается с x , что означает, что он не может иметь особого значения для [].

(Autoconf также рекомендует использовать test вместо [, но этот совет является реакцией на возможные конфликты с M4 , который также использует ] [ в его синтаксисе.)

awk - это POSIX , поэтому теоретически он доступен везде. Он есть даже в Busybox , поэтому у вас будет реализация awk даже в некоторых очень ограниченных встроенных системах Linux. Тем не менее, я был бы менее удивлен, встретив систему без awk , чем sed . Полагаю, дело в сложности: более простые инструменты с большей вероятностью переживут агрессивную сортировку.

Perl не является частью какого-либо широко распространенного стандарта, POSIX или другого, поэтому вы просто не можете рассчитывать на него, если ничего заранее не знаете о целевой среде. Perl не устанавливается по умолчанию в:

  • Cygwin
  • FreeBSD и NetBSD
  • «минимальные» установки для некоторых Linux, включая Slackware
  • , многие встроенные Linux-системы, которые в основном полагаются на Busybox для своей пользовательской среды

Autoconf В руководстве есть глава по программированию переносимой оболочки , которая должна быть вам полезна. В последнем разделе рассматриваются такие инструменты, как sed , awk и многие другие.

12
27.01.2020, 19:49

Теги

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