Я нажимаю Ctrl + D для завершения стандартного ввода, но он работает только, если я на новой строке. И это требует от меня сначала нажать Enter, что помещает ненужный новый символ линии. Есть ли способ обойти это?
Ctrl-D работает не только по новой строке, как вы говорите. Возьмите rev, например, который меняет направление на каждую строку ввода.
Обычно вы нажимаете Enter после ввода и меняете эту строку:
$ rev
asdf
fdsa
Если вы не хотите добавьте новую строку к вашему вводу, просто нажмите Ctrl-D два раза после ввода asdf, он будет отменен в той же строке:
$ rev
asdffdsa
Различные программы обрабатывают это по-другому; например, bc не ведет себя так, как указано выше.