Запустить процесс в фоновом режиме по нажатию клавиши (добавьте `& disown` по нажатию Ctrl+Enter)

Запустить процесс в фоновом режиме по нажатию клавиши (добавьте `& disown` по нажатию Ctrl+Enter)

Допустим, я хочу открыть Chrome, Sublime Idea и т. д. из командной строки, сохранив при этом контроль над терминалом.

Есть ли способ добавить & disownкоманду в Bash при нажатии Ctrl+ Enterили другой удобной комбинации?

Я пытался сделать для них псевдоним, например alias subl='subl & disown', но передача аргументов больше не будет работать, а необходимость писать псевдонимы для всех программ, которые я хочу использовать таким образом, слишком хлопотна. Должен быть более умный способ.

решение1

Из вашего комментария:

Я добавил "\C-e": ' & disown\n'и .inputrcон делает то, что мне нужно на Ctrl+ e. По какой-то причине он не работает с \nвместо e.

Я не думаю, \nчто это правильная строка для использования, но есть более серьезная проблема: в Enterсамой консоли есть \C-Mie Ctrl+ M, поэтому Ctrl+ Enter— это просто Enterи вы не можете их отличить.

Однако вы можете отличить Enterи Meta (aka Alt)+ Enter. Поместите эту строку в свой .inputrc:

"\C-\M-M":' & disown\n'

и нажимайте Meta (aka Alt)+ Enterвсякий раз, когда захотите его использовать.

решение2

Я узнал, чтоимеет тот же код ASCII, что и Ctrl+ M, что означает, что Ctrl+ Enterэквивалентно Ctrl++ Ctrl. Двойное Mнажатие Ctrlне имеет смысла, поэтому Ctrlи Enterне могут использоваться вместе в терминале без некоторого xtermперевод.

Мне удалось проделать этот трюк с Ctrl+ , Eдобавив ."\C-E": ' & disown\n '.inputrc

Связанный контент