bash: прокомментируйте длинный конвейер - PullRequest
5 голосов
/ 24 февраля 2011

Я обнаружил, что создание длинных конвейеров в bash-скриптах весьма полезно, но главный недостаток, который я вижу, заключается в том, что, похоже, нет способа вставлять комментарии.

Например, есть ли хороший способ добавить комментарии к этому сценарию?

#find all my VNC sessions
ls -t $HOME/.vnc/*.pid                  \
    | xargs -n1                         \
    | sed 's|\.pid$||; s|^.*\.vnc/||g'  \
    | xargs -P50 --replace vncconfig -display {} -get desktop \
    | grep "($USER)"                    \
    | awk '{print $1}'                  \
    | xargs -n1 xdpyinfo -display       \
    | egrep "^name|dimensions|depths"

Ответы [ 4 ]

20 голосов
/ 24 февраля 2011

Позвольте каналу быть последним символом каждой строки и использовать # вместо \, например:

ls -t $HOME/.vnc/*.pid | #comment here
   xargs -n1 | #another comment 
   ...
4 голосов
/ 14 февраля 2017

Это тоже работает:

# comment here
ls -t $HOME/.vnc/*.pid |
 #comment here
 xargs -n1 |
 #another comment
 ...

на основе https://stackoverflow.com/a/5100821/1019205. сводится к s/|//;s!\!|!.

0 голосов
/ 24 февраля 2011
#!/bin/bash

for pid in $HOME/.vnc/*.pid; do
    tmp=${pid##*/}
    disp=${tmp%.*}
    xdpyinfo -display "$disp" | # commment here
    egrep "^name|dimensions|depths"
done

Я не понимаю необходимости в vncconfig, если все, что он делает, это добавляет '(пользователя)', который вы впоследствии удалите для вызова на xdpyinfo.Кроме того, все эти каналы занимают много времени, если вы time ваш сценарий против моего, я думаю, вы найдете производительность сопоставимой, если не быстрее.

0 голосов
/ 24 февраля 2011

Если они не длинных конвейеров , вам не нужно комментировать, просто комментируйте сверху:

# Find all my VNC sessions.
#   xargs does something.
#   sed does something else
#   the second xargs destroys the universe.
#   :
#   and so on.

ls -t $HOME/.vnc/*.pid                  \
    | xargs -n1                         \
    | sed 's|\.pid$||; s|^.*\.vnc/||g'  \
    | xargs -P50 --replace /opt/tools/bin/restrict_resources -T1 \
            -- vncconfig -display {} -get desktop 2>/dev/null \
    | grep "($USER)"                    \
    | awk '{print $1}'                  \
    | xargs -n1 xdpyinfo -display       \
    | egrep "^name|dimensions|depths"

Пока комментарии относительно локализованы, это нормально. Поэтому я не стал бы помещать их в верхнюю часть файла (если, конечно, ваш файл не был первым в файле) или записывал на туалетной бумаге и запирал на рабочем столе.

Но первое, что я делаю при просмотре блока, - это поиск комментариев, непосредственно предшествующих блоку. Даже в коде C я не комментирую каждую строку, так как цель комментариев - в основном показать why и высокоуровневый how.

...