Традиционный grep ориентирован на линию. Чтобы выполнять многострочные совпадения, вам нужно либо обмануть его, чтобы вырезать весь файл, указав, что ваш вход завершен нулем, например
grep -zPo '(?s)\nif.*\nendif' file
, либо используйте более гибкий инструмент, такой как pcregrep [!d1 ]
pcregrep -M '(?s)\nif.*?\nendif' file
или perl self
perl -00 -ne 'print if m/^if.*?endif/s' file
В качестве альтернативы для сопоставления структурированного ввода по grep-подобному способу существует sgrep
sgrep '"if" .. ("endif") containing "SOME CODE"' file
Помимо создания псевдонимов для ваших программ, на самом деле невозможно setsid
автоматически префикс перед каждой командой , введенной в терминал. Тем не менее, я считаю, что очень полезно создать .inputrc
в вашей домашней папке и разместить в нем (наблюдая за цитированием):
Control-o: "setsid "
Теперь вы можете нажать Ctrl + o в терминале, а затем введите команду; это экономит много времени, если вам нужно продолжать повторять его. В размещении кавычек нет ошибки: он позволяет сразу же вводить команду после использования ярлыка. Эта функциональность и многое другое предоставляется библиотекой bash's readline
: см. man bash
или Ubuntu manpages online .
Что касается вашего второго вопроса, неплохо использовать setsid
много и просто зависит от ваших конкретных потребностей. На самом деле это чрезвычайно полезно, потому что, как отмечено в kernel.org ,
setsid создает новый сеанс, если вызывающий процесс не является лидером группы процессов. Вызывающий процесс является лидером нового сеанса, лидером группы процессов новой группы процессов и не имеет управляющего tty ... Вызывающий процесс будет единственным процессом в этой новой группе процессов и в этом новом сеансе.
blockquote>Следовательно, программа, запущенная с
setsid
, имеет полную независимость от терминала, с которого он был запущен, поскольку новый процесс был раздвоен.Существуют также другие подобные, но разные способы отсоединения программы от терминала, такие как
nohup
илиdisown
. (Следует сказать, чтоsetsid
является программой из пакетаutil-linux
, тогда какdisown
является встроенным bash.) Этот вопрос может представлять большой интерес, поскольку он затрагивает такие смежные темы:
Помимо создания псевдонимов для ваших программ, на самом деле невозможно setsid
автоматически префикс перед каждой командой , введенной в терминал. Тем не менее, я считаю, что очень полезно создать .inputrc
в вашей домашней папке и разместить в нем (наблюдая за цитированием):
Control-o: "setsid "
Теперь вы можете нажать Ctrl + o в терминале, а затем введите команду; это экономит много времени, если вам нужно продолжать повторять его. В размещении кавычек нет ошибки: он позволяет сразу же вводить команду после использования ярлыка. Эта функциональность и многое другое предоставляется библиотекой bash's readline
: см. man bash
или Ubuntu manpages online .
Что касается вашего второго вопроса, неплохо использовать setsid
много и просто зависит от ваших конкретных потребностей. На самом деле это чрезвычайно полезно, потому что, как отмечено в kernel.org ,
setsid создает новый сеанс, если вызывающий процесс не является лидером группы процессов. Вызывающий процесс является лидером нового сеанса, лидером группы процессов новой группы процессов и не имеет управляющего tty ... Вызывающий процесс будет единственным процессом в этой новой группе процессов и в этом новом сеансе.
blockquote>Следовательно, программа, запущенная с
setsid
, имеет полную независимость от терминала, с которого он был запущен, поскольку новый процесс был раздвоен.Существуют также другие подобные, но разные способы отсоединения программы от терминала, такие как
nohup
илиdisown
. (Следует сказать, чтоsetsid
является программой из пакетаutil-linux
, тогда какdisown
является встроенным bash.) Этот вопрос может представлять большой интерес, поскольку он затрагивает такие смежные темы:
Помимо создания псевдонимов для ваших программ, на самом деле невозможно setsid
автоматически префикс перед каждой командой , введенной в терминал. Тем не менее, я считаю, что очень полезно создать .inputrc
в вашей домашней папке и разместить в нем (наблюдая за цитированием):
Control-o: "setsid "
Теперь вы можете нажать Ctrl + o в терминале, а затем введите команду; это экономит много времени, если вам нужно продолжать повторять его. В размещении кавычек нет ошибки: он позволяет сразу же вводить команду после использования ярлыка. Эта функциональность и многое другое предоставляется библиотекой bash's readline
: см. man bash
или Ubuntu manpages online .
Что касается вашего второго вопроса, неплохо использовать setsid
много и просто зависит от ваших конкретных потребностей. На самом деле это чрезвычайно полезно, потому что, как отмечено в kernel.org ,
setsid создает новый сеанс, если вызывающий процесс не является лидером группы процессов. Вызывающий процесс является лидером нового сеанса, лидером группы процессов новой группы процессов и не имеет управляющего tty ... Вызывающий процесс будет единственным процессом в этой новой группе процессов и в этом новом сеансе.
blockquote>Следовательно, программа, запущенная с
setsid
, имеет полную независимость от терминала, с которого он был запущен, поскольку новый процесс был раздвоен.Существуют также другие подобные, но разные способы отсоединения программы от терминала, такие как
nohup
илиdisown
. (Следует сказать, чтоsetsid
является программой из пакетаutil-linux
, тогда какdisown
является встроенным bash.) Этот вопрос может представлять большой интерес, поскольку он затрагивает такие смежные темы:
Помимо создания псевдонимов для ваших программ, на самом деле невозможно setsid
автоматически префикс перед каждой командой , введенной в терминал. Тем не менее, я считаю, что очень полезно создать .inputrc
в вашей домашней папке и разместить в нем (наблюдая за цитированием):
Control-o: "setsid "
Теперь вы можете нажать Ctrl + o в терминале, а затем введите команду; это экономит много времени, если вам нужно продолжать повторять его. В размещении кавычек нет ошибки: он позволяет сразу же вводить команду после использования ярлыка. Эта функциональность и многое другое предоставляется библиотекой bash's readline
: см. man bash
или Ubuntu manpages online .
Что касается вашего второго вопроса, неплохо использовать setsid
много и просто зависит от ваших конкретных потребностей. На самом деле это чрезвычайно полезно, потому что, как отмечено в kernel.org ,
setsid создает новый сеанс, если вызывающий процесс не является лидером группы процессов. Вызывающий процесс является лидером нового сеанса, лидером группы процессов новой группы процессов и не имеет управляющего tty ... Вызывающий процесс будет единственным процессом в этой новой группе процессов и в этом новом сеансе.
blockquote>Следовательно, программа, запущенная с
setsid
, имеет полную независимость от терминала, с которого он был запущен, поскольку новый процесс был раздвоен.Существуют также другие подобные, но разные способы отсоединения программы от терминала, такие как
nohup
илиdisown
. (Следует сказать, чтоsetsid
является программой из пакетаutil-linux
, тогда какdisown
является встроенным bash.) Этот вопрос может представлять большой интерес, поскольку он затрагивает такие смежные темы:
Помимо создания псевдонимов для ваших программ, на самом деле невозможно setsid
автоматически префикс перед каждой командой , введенной в терминал. Тем не менее, я считаю, что очень полезно создать .inputrc
в вашей домашней папке и разместить в нем (наблюдая за цитированием):
Control-o: "setsid "
Теперь вы можете нажать Ctrl + o в терминале, а затем введите команду; это экономит много времени, если вам нужно продолжать повторять его. В размещении кавычек нет ошибки: он позволяет сразу же вводить команду после использования ярлыка. Эта функциональность и многое другое предоставляется библиотекой bash's readline
: см. man bash
или Ubuntu manpages online .
Что касается вашего второго вопроса, неплохо использовать setsid
много и просто зависит от ваших конкретных потребностей. На самом деле это чрезвычайно полезно, потому что, как отмечено в kernel.org ,
setsid создает новый сеанс, если вызывающий процесс не является лидером группы процессов. Вызывающий процесс является лидером нового сеанса, лидером группы процессов новой группы процессов и не имеет управляющего tty ... Вызывающий процесс будет единственным процессом в этой новой группе процессов и в этом новом сеансе.
blockquote>Следовательно, программа, запущенная с
setsid
, имеет полную независимость от терминала, с которого он был запущен, поскольку новый процесс был раздвоен.Существуют также другие подобные, но разные способы отсоединения программы от терминала, такие как
nohup
илиdisown
. (Следует сказать, чтоsetsid
является программой из пакетаutil-linux
, тогда какdisown
является встроенным bash.) Этот вопрос может представлять большой интерес, поскольку он затрагивает такие смежные темы: