Ctrl+C обрабатывают завершение без Терминального уничтожения

В то время как канонический способ решения этой проблемы включает пасту , Здесь я предлагаю awk альтернативу, где выходной разделитель записей устанавливается в пробел на нечетной и новой строках на четных строках

awk '{ORS=NR%2?" ":"\n";print}' file

-121--119412-

Ищите справочные страницы

При поиске команд, вместо сопоставления имен двоичных файлов команд в качестве альтернативы можно сопоставить имена человеко-страниц; Это может иметь смысл, поскольку man уже предоставляет эту функцию по умолчанию:

$ man --sections=1,8 --where --all --regex '^mkdi' 
/usr/share/man/man1/mkdir.1.gz
/usr/share/man/man1/mkdirhier.1.gz
/usr/share/man/man1/mkdiskimage.1.gz

Использование sed для извлечения только имен команд:

$ man --sections=1,8 --where --all --regex '^mkdi' | \
    sed -r 's/.*\/([^/]+)\.[^.]+\.[^.]+$/\1/'
mkdir
mkdirhier
mkdiskimage

И выполнение , которые для имен команд тоже:

$ man --sections=1,8 --where --all --regex '^mkdi' | \
    sed -r 's/.*\/([^/]+)\.[^.]+\.[^.]+$/\1/' | xargs which 
/bin/mkdir
/usr/bin/mkdirhier
/usr/bin/mkdiskimage

узоры являются регулярными выражениями, поэтому ^ добавляется для соответствия только в начале имени.
В синтаксисе образца, подобном оболочке glob, замените -regex на --wildcard ,
как человек... --wildcard 'mkdi *' |... .

В качестве функции оболочки:

whichmatch() {       
    man --sections=1,8 --where --all --regex "$@" |
        sed -r 's/.*\/([^/]+)\.[^.]+\.[^.]+$/\1/' |
        xargs which
}

используется как

whichmatch '^mkdi'

Для приблизительного совпадения имен команд , который может использоваться вместо man .

-121--77994-

Я думаю, что ваша лучшая ставка, вероятно, обернуть сценарий (например, сценарий оболочки) вокруг pacman, который заботится о настройке вещей.

В вашем вопросе отсутствуют некоторые детали, но я предполагаю, что ваш репозиторий недоступен из Интернета и только вашей локальной сети, но программное обеспечение лицензировано для каждого пользователя (а не для всего сайта), поэтому вам нужно ограничить, какие пакеты могут быть установлены разными пользователями.

1
17.03.2015, 00:29
1 ответ

CTRL + C Убивает оболочку, а также подпроцесс FreeFem, поскольку сигнал SIGINT отправлено на весь процесс на переднем плане. Поскольку оболочка не интерактивна, подпроцесс работает в той же группе процесса. См. Почему Сигинт не распространяется на детский процесс, когда отправляется в его родительский процесс? и Какова цель абстракций, сеанса, лидера сессии и групп процессов? для некоторого фона на процессы Отказ

Вы можете вызвать, чтобы оболочка не умереть, когда она получает SIGINT, установив ловушку для него. (Не игнорируйте сигнал: это также приведет к тому, что он будет игнорироваться подпроцессором.)

"shell_cmd": " gnome-terminal -x sh -c \"trap echo INT; FreeFem++ $file ; exec bash\""
0
28.01.2020, 01:43

Теги

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