Intereting Posts
Пульсаудио по сети – мгновенно меняет мощность Как узнать, что я могу сделать с / proc и / sys REGEX и GREP – строка поиска, включая необязательные и статические слова Есть ли разница между запуском программы в качестве демона и использованием nohup с & для запуска программы? x11vnc оконный менеджер С помощью «find /» пропустите каталоги, такие как «/ proc», «/ sys» и аналогичные Настройка разрешений с помощью FTP Могу ли я использовать команду find для передачи аргументов perl? Объединить две команды с выводом в строке sam Ansible shell shell Подключение к университетскому WiFi с использованием wpa_supplicant с использованием идентификатора и пароля xdg user dirs: не перемещение, хотя установлено? Сплит PDF в документы с несколькими страницами каждый Вирс висит при попытке подключения Gnome3 +: Как удалить избранное из Dash через терминал? возможно ли запустить работу на переднем плане после выхода пользователя из системы

Как сохранить введенную команду без ее выполнения?

Каждый пользователь Linux испытывал эту неприятную вещь: вы начинаете набирать длинную и скучную команду, а затем понимаете, что раньше вы должны были выполнить другую. Как сохранить первый, чтобы выполнить его позже?

пример

Вы начинаете печатать

mycommand -a -F --conf /very/long/path --and /another/one /input/file.txt 

Но прежде чем нажимать «Enter», вы понимаете, что сначала нужно сделать cp f.txt /input/file.txt .

Итак, вы застряли в своей команде, и если вы не нажмете Enter, вы не сможете вернуть ее, используя свою историю bash.

Каков наилучший способ справиться с этим?

Hit CTRLU (kill line – это сохраняет строку в kill-ring оболочки), сделайте то, что вам нужно сделать, а затем в новом приглашении нажмите CTRLY (yank from kill-ring), чтобы вернуть исходную команду ,

В качестве альтернативы, и это особенно полезно, если вы находитесь в вложенной команде, например while или loop, нажмите CTRL- C , которая добавляет команду в историю без ее выполнения и очищает строку, поэтому вы можете ее вызвать с помощью когда вы готовы его использовать.

Прокомментируйте строку и нажмите клавишу ввода.

CtrlA
#
Войти

поэтому вы держите линию в истории

Esc# как положить # в начале и нажатие Enter :

Пример:

 $ find /{,usr/}{,s}bin/ -type f -ls | awk '$3~/^...s/' | nl 

( Esc# )

 $ #find /{,usr/}{,s}bin/ -type f -ls | awk '$3~/^...s/' | nl $ _ 

Работает в Баше и оболочке Корна.

С zsh в режиме emacs, Alt + Q или Ctrl + Q ( push-line widget), толкает текущую командную строку в стек (сохраняет для более позднего) и очищает текущий входной буфер.

Затем вы можете ввести другую команду, после чего возвращается последняя нажатая команда ( выталкивается из этого стека).

Если вы специально хотите сохранить команду, я обычно делаю то, что предложил Эммануил. Но если вы просто хотите ввести другую команду перед текущей, вам не нужно ее сохранять. Перейдите к началу строки, введите другую команду и добавьте точку с запятой.

Ctrlcp f.txt /input/file.txt ; Войти

Это должно выполнять обе команды в том порядке, в котором вы хотите. Более того, он будет сохранен в вашей истории вместе, поэтому, если в будущем вы захотите снова выполнить вторую команду, и вы достигнете ее с помощью Ctrl- R , вы увидите там первую команду и напомните, что она должна быть выполнена до (в случае, когда вам всегда нужно выполнять оба действия).

Вы также можете использовать && вместо точки с запятой, если вы хотите, чтобы вторая команда выполнялась только в том случае, если первая выполнена успешно.