Как отменить последнее действие линукс

Отмена действия в командной строке VIM

Командный режим vim позволяет использовать вставку из буфера. Бывает, пишешь строку замены %s/. и нечайно нажимаешь горячие клавиши для команды «вставить». После этого в командную строку валится огромное кол-во текста из буффера и команду замены приходится писать заново.

Как отменить это действие? Как вернуться на 1 шаг назад? Одним словом нужен «Ctrl+Z» для командной строки, извините за виндоподобную аналогию.

Хотя бы по какому слову искать, подскажите.

Re: Отмена действия в командной строке VIM

Re: Отмена действия в командной строке VIM

это отменит изменения в тексте , а не в command mode . насколько я понял мысль автора.

Re: Отмена действия в командной строке VIM

> . и нечайно нажимаешь горячие клавиши для команды «вставить».
Простите за назойливость, а это как?

Re: Отмена действия в командной строке VIM

>> Простите за назойливость, а это как?

Верно поняли мою мысль. Нужна отмена для строки для ввода команд vim (например где вы пишите %s/. )

Re: Отмена действия в командной строке VIM

>> Простите за назойливость, а это как?

Что ж вас так туго с фантазией, UVV ? 🙂 Я вам расскажу, если не придумали еще сами. Например сижу я под виндой и редактирую что-либо в виме. Нажимаю ^v при наборе команды. БАЦ! а в буфере было не то что мне надо. запамятовал. Как отменить сие действие?

Не верю что нельзя этого сделать в моем любимом редакторе !

Источник

Отменить команду утилиты Linux

Можно ли отменить операции, выполняемые в терминале, например, удаление файла через rm ?

  1. Искажения
  2. Утилиты Undelete
  3. Утилиты резервного копирования
  4. LibTrash
  5. Управление версиями (FUSE)

12 ответов

Для каждой операции в терминале нет общего «отмены». Если вы хотите восстановить файл после использования rm , вам нужно будет искать программное обеспечение для восстановления.

Опция предотвращения будущих ошибок заключается в том, чтобы сделать alias es для альтернативных команд для удаления файлов. Добавьте их в свой

/.bashrc и привыкнуть использовать их вместо rm .

Если вы используете rmi , вам будет предложено подтвердить удаление в будущем. Попытайтесь избежать привычки сразу нажать y после того, как вы внесете команду rmi , так как это победит цель.

Вы также можете перемещать файлы, удаленные командой trsh в терминале, в ваш корзину (в KDE и Gnome):

Если вы используете trsh , у вас будет ограниченная возможность «восстановить». Остерегайтесь, что

может по-прежнему вызывать неустранимую потерю данных.

В командной строке нет корзины.

Вы можете попробовать некоторые утилиты undelete, но нет гарантии, что они будут работать.

Вы можете использовать trash-cli , если вы используете KDE при запуске gui , Это утилита командной строки для удаления /восстановления с использованием средств утилизации KDE.

Вы можете сделать rm псевдоним для trash (сначала вам нужно установить trash ). Добавьте это в свой

Это предпочтительнее alias rm=’mv —target-directory=$HOME/.Trash’ , так как

/.Trash НЕ является папкой мусора для gnome. Лучше ИМХО позволить trash определить, где находится фактическая папка мусора.

btw Я бы разместил это в комментарии, но мне не хватает репутации.

Еще два технических решения еще не названы:

  1. libtrash : динамическая библиотека, которая может быть предварительно загружена в вашей оболочке, которая перехватывает удаление /удаление системных вызовов и перемещение файлов в папку для мусора (как и псевдоним, но работает для любого приложения при предварительной загрузке).
  2. Файловая система версий. Если вы удалите (или отредактируете или скопируете или . ) файл, вы можете просто вернуться к старому состоянию. Это можно сделать с файловой системой FUSE и одним из ее файловые системы версий .

Здесь есть большой вопрос, заслуживающий внимания. Команды Shell не чаты (они не проверяют, что вы хотите), и они ожидают, что вы знаете, что делаете. Это имеет фундаментальное значение для дизайна . Это особенность, а не ошибка.

Читайте также:  Msvcr120d dll что это за ошибка как исправить windows 10

Некоторые люди чувствуют себя мачо, когда они используют такие команды, которые, я думаю, довольно глупы, но важно понять опасности. Вы можете нанести большой урон в терминале, даже если вы не root. Я думаю, вы, вероятно, действительно заботились о rm , но, поскольку вы сказали «Можем ли мы отменить операции, выполняемые в терминале», я подумал об этом стоило сказать. Общий ответ — нет, вы не можете.

Вариант 1: см. Отменить файлы Linux из файловой системы ext2 . На этой странице указывается программа, написанная Себастьяном Хетце из компании LunetIX, которая (как следует из названия) удаляет недавно удаленные файлы из файловой системы ext2. Пример использования:

  • Исходный веб-сайт исчез. Ссылка, приведенная выше, относится к Интернет-архиву.
  • Сайт (ы) находятся в смеси английского и немецкого языков.
  • Как указано выше, инструмент разработан специально для файловой системы ext2. Это вряд ли будет работать на любой другой тип файловой системы; особенно не одни, кроме ext N .

Вариант 2: У меня на компьютере работает rsnapshot (rsync), который делает моментальные снимки по моим выбранным папкам. Он постепенно делает это каждый час, 2 часа или все, что вы скажете CRON. После полного дня он восстанавливает эти снимки в один дневной снимок и через 7 дней в неделю и так далее и так далее. Это заставляет меня возвращаться во времени около месяца или около того на каждый час! Это довольно хорошо с дисковым пространством, поскольку оно создает символические ссылки на файлы, которые никогда не менялись .

Источник

Как отменить и повторить в Vim / Vi

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

В этой статье объясняется, как отменить и повторить изменения в Vim / Vi.

Либо Vi, либо Vim устанавливается по умолчанию в macOS и почти во всех дистрибутивах Linux. Знание основ Vim может быть очень полезным, когда вы сталкиваетесь с ситуацией, когда ваш любимый редактор недоступен.

Отменить изменения в Vim / Vi

Vim отслеживает все изменения, внесенные вами в текущем сеансе. Команда отмены отменяет одно или несколько изменений в порядке их внесения.

Чтобы отменить изменения в Vim и Vi, используйте команды u :u или :undo :

  1. Если вы находитесь в режиме вставки или в любом другом режиме, нажмите Esc чтобы вернуться в нормальный режим, который также известен как командный режим.
  2. Введите u чтобы отменить последнее изменение. В Vim команда u также принимает квантификаторы. Например, если вы хотите отменить четыре последних изменения, вы должны использовать 4u .

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

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

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

Вернуть изменения в Vim / Vi

Функция повтора отменяет действие отмены.

Чтобы повторить изменение в Vim и Vi, используйте Ctrl-R или :redo :

  1. Нажмите Esc чтобы вернуться в нормальный режим.
  2. Используйте Ctrl-R (нажмите и удерживайте Ctrl и нажмите r ), чтобы повторить последнее изменение. В Vim вы также можете использовать квантификаторы. Например, если вы хотите повторить 4 последних изменения, введите 4Ctrl-R .

Каждую команду отмены можно отменить с помощью команды повтора.

Выводы

Чтобы отменить изменение в Vim / Vi, введите u , а для возврата отмененного изменения используйте последовательность Ctrl-R .

Vim также поддерживает ветки отмены .

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Источник

Можно ли отменить команду в оболочке bash?

Мне было интересно, есть ли (простая) возможность повторить / отменить команду, которая была выполнена в оболочке bash? (чтобы отменить это)

Есть ли что-то похожее на комбинацию ctrl +, z чтобы повторить какое-либо действие (например, в word или LibreOffice)?

Вы должны понимать, что bash это просто среда исполнения. Он выполняет команды, которые вы вызываете — дело не в том, чтобы оболочка даже знала, что делает команда, вы можете вызвать любой исполняемый файл, который захотите. В большинстве случаев даже неясно, что будет делать отмена — например, можете ли вы «разыграть» фильм? Можете ли вы «отослать» электронное письмо? Что бы, например, означало «отменить запуск firefox»? Вы можете закрыть его, но закладки, загрузки и история не будут одинаковыми.

Читайте также:  Linux java server mode

Если вы запускаете команду, она выполняется независимо от того, что она делает. Вам решать, что вы делаете. Обратите внимание, что это не означает, что отдельные команды не имеют «отмены» . они могут — вы даже можете написать функцию-обертку, которая защитит вас от глупых ошибок.

Например, mv он легко обратим, просто переместив файл туда, откуда он пришел, если вы что-то не перезаписали. Вот почему -i существует переключатель, чтобы спросить вас перед перезаписью. Технически, инверсия cp есть rm , если что-то не было перезаписано (опять же, -i спрашивает вас об этом). rm является более постоянным, чтобы попытаться вернуть файлы, вы должны на самом деле сделать более низкий уровень взлома (для этого есть инструменты). Если вы рассматривали файловую систему как черный ящик, технически это было бы невозможно вообще (только детали логического и физического расположения данных позволяют вам контролировать повреждения). rm означает rm , что если вы хотите «мусор» функциональность, это на самом деле просто mv в какой-то заранее подготовленный каталог (и, возможно, запланированный сервис для его обслуживания или очистки) — ничего особенного в этом нет. Но вы можете использовать, -i чтобы предложить вам перед удалением. Вы можете использовать функцию или псевдоним, чтобы всегда включать -i в эти команды.

Обратите внимание, что большинство приложений защищают вас от потери данных по-разному. Большинство (

всех) текстовых редакторов создают файлы резервных копий

в конце на случай, если вы захотите вернуть старую версию. В некоторых дистрибутивах ls по умолчанию используется псевдоним, поэтому он скрывает их ( -B ), но они есть. Большая защита обеспечивается путем правильного управления разрешениями: не будьте пользователем root, если вам это не нужно, делайте файлы доступными только для чтения, если вы не хотите, чтобы они менялись. Иногда полезно иметь среду «песочницы» — вы запускаете вещи на копии, проверяете, все ли в порядке, а затем объединяете изменения (или отказываетесь от изменений). chroot или lxc может помешать вашим скриптам выйти из каталога и нанести ущерб.

Когда вы пытаетесь выполнять вещи массово — например, если у вас есть сложная команда поиска, хотя цикл, длинный конвейер или что-то в этом роде, хорошей идеей будет сначала просто echo выполнить команды, которые будут выполнены. Затем, если команды выглядят разумно, удалите echo и запустите его по-настоящему. И, конечно, если вы действительно не уверены в том, что делаете, сначала сделайте копию. Иногда я просто создаю архив текущей директории.

Говоря о tarballs — к сожалению, tarbombs и zipbombs довольно распространены (когда люди создают архив без надлежащего подкаталога, а распаковка разбрасывает файлы вокруг, создавая огромный беспорядок). Я привык просто делать подкаталог сам перед распаковкой (я мог перечислить содержимое, но я ленив). Я думаю о создании сценария, который будет создавать подкаталог, только если содержимое было заархивировано без подкаталога. Но когда это происходит, ls -lrt помогает найти самые последние файлы и поместить их туда, где они должны быть. Я просто привел это в качестве примера — у программы может быть много побочных эффектов, о которых оболочка не может знать (как это могло быть? Это другая программа, вызываемая!) Единственный надежный способ избежать ошибок — быть осторожным (подумайте дважды, беги один раз).

Возможно, наиболее опасными являются команды, которые работают с файловой системой: mkfs, fdisk / gdisk и так далее. Они могут полностью уничтожить файловую систему (хотя при наличии надлежащего криминалистического программного обеспечения возможна хотя бы частичная обратная инженерия). Всегда дважды проверяйте устройство, которое вы форматируете, и правильное разбиение на разделы перед выполнением команды.

Источник

🐧 Различные способы повторить вашу последнюю команду в Linux

Привет ! Сегодня я научу вас, как повторить вашу последнюю команду в Linux.

Вам не нужно повторно вводить ранее выполненные команды в вашей командной консоли.

Конечно, мы используем клавишу со стрелкой ВВЕРХ, чтобы выбрать последние выполненные команды, и нажимаем ENTER, чтобы выполнить их.

Однако есть и другие способы сделать это.

Может быть много способов повторить последние команды в Unix-подобных системах, но это единственные способы, которые я знаю в данный момнет.

Читайте также:  Список всех шрифтов windows

Все эти команды были протестированы на моем настольном компьютере с Linux и Ubuntu 18.04 LTS с оболочкой BASH.

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

Как повторить вашу последнюю команду в Linux

Давайте сначала запустим несколько команд.

Как я упоминал ранее, мы можем выполнить последнюю команду, просто нажав стрелку ВВЕРХ и нажав клавишу Enter.

Это наиболее распространенный способ, используемый многими пользователями для выполнения предыдущей команды.

Этот метод будет работать во всех оболочках, независимо от используемого вами дистрибутива Linux.

Однако, как я уже сказал, есть несколько других способов сделать это.

Теперь позвольте мне показать вам, как выполнить последнюю команду с некоторыми практическими примерами.

Метод 1 – Использование восклицательных знаков:

Чтобы выполнить любую последнюю выполненную команду, просто введите двойной восклицательный зна к и нажмите клавишу Enter:

Добавьте «sudo» перед «!!» чтобы выполнить последнюю команду от имени пользователя root, как показано ниже.

Эта команда также выполнит предыдущую команду:

Круто, не правда ли?

Вам не нужно вводить последнюю команду полностью.

Это может быть полезно, когда вы уже выполнили очень длинную команду и не хотите вводить эту команду полностью.

Способ 2 – повторить N-ую команду:

Возможно, вы выполнили много команд и хотите повторить определенную команду.

Что вы будете делать?

Вы можете сделать это, набрав определенное слово предыдущей команды.

Чтобы повторить предыдущую команду, которая начинается с определенного слова / буквы, например, un, просто введите:

Приведенная выше команда выполнит последнюю команду, которая начинается с букв «un».

Пример вывода для вышеуказанной команды:

Как видите в приведенном выше примере, вам не нужно вводить всю команду (т.е. uname -r).

Вместо этого просто введите несколько букв команды, и любая предыдущая команда, содержащая слова, будет выполняться.

Кроме того, если вы знаете полное имя команды, просто введите его, как показано ниже:

Система выполнит последнюю команду.

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

Иногда вам не нужно запускать команду, а просто извлечь ее из истории.

Если это так, найдите префикс номера команды, которую вы хотите выполнить:

Метод 3 – Использование обратного поиска:

Другой способ сделать это – поиск в истории командной строки с помощью сочетания клавиш CTRL + R.

Нажмите клавиши CTRL + R для поиска по истории командной строки.

Я лично предпочитаю этот метод.

Он ищет историю в интерактивном режиме, что, на мой взгляд, безопаснее, чем слепое выполнение команд из истории BASH.

Посмотрите на следующий пример.

В следующем примере я искал «itsec», и система показала последнюю команду «sudo netctl restart itsecforu» в истории, которая содержала слово «itsec»

Затем я нажимаю клавишу Enter для немедленного выполнения команды или клавишу со стрелкой вправо для завершения команды и нажимаю клавишу Enter для ее выполнения.

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

Некоторые команды могут начинаться с одинаковых букв.

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

Метод 4 – Используя символ дефиса с номерами префикса команды:

Вот еще один способ выполнить предыдущую команду.

Способ 5 – Использование CTRL + p и CTRL + o:

Я не хочу вводить какие-либо команды вручную.

Есть ли способ повторить последнюю команду простым нажатием определенной клавиши (клавиш) на моей клавиатуре? Да, конечно!

Нажмите CTRL + P, чтобы перейти к последней команде, а затем нажмите CTRL + O, чтобы выполнить ее.

Вы можете использовать CTRL + O столько раз, сколько вы хотите, чтобы продолжить повторное выполнение последних команд.

Способ 6 – Использование команды «fc»:

Это еще один способ повторить последнюю выполненную команду.

Команда «fc» используется для просмотра, редактирования и повторного ввода ранее введенной команды.

Чтобы повторить последнюю команду, используя fc, просто запустите:

На это пока все.

Теперь вы знаете, как повторить последнюю команду, не вводя ее в терминале.

Если вы хотите просмотреть вывод ваших последних команд без необходимости их повторного ввода, эти методы вам помогут.

Если вы знаете какие-либо другие методы, пожалуйста, дайте мне знать в разделе комментариев ниже.

Я проверю и обновлю руководство с вашими дополнениями.

Источник

Оцените статью