Можно сделать это с довольно маленькой модификацией любого ответа от последнего вопроса:
rename s/ras\.// sw.ras.*
или
for file in sw.ras.*; do
mv "$file" "${file/ras./}"
done
Объяснение:
rename
a perl
сценарий, который берет a perl
регулярное выражение и список файлов, применяют regex к имени каждого файла в свою очередь и переименовывают каждый файл к результату применения regex. В нашем случае, ras
подобран буквально и \.
соответствует литералу .
(как .
один указывает на любой символ кроме новой строки), и он ничем заменяет это.
for
цикл берет все файлы, которые запускаются с sw.ras.
(стандарт окружает шарик), и циклы по ним. ${var/search/replace}
поиски $var
для search
и заменяет первое вхождение replace
, так ${file/ras./}
возвраты $file
с первым ras.
удаленный. Команда таким образом переименовывает файл к тому же имени минус ras.
. Обратите внимание на это с этим поиском и заменой, .
взят буквально, не как специальный символ.
Как другие ответы уже объяснили, Ctrl+C не уничтожает Нано потому что вход nano
все еще прибывает из терминала, и терминал тих nano
управление терминалом, таким образом, Nano помещает терминал в режим без предварительной обработки, куда управляющие символы, такие как Ctrl+C передаются к программе и не прерываются терминалом, чтобы сгенерировать сигналы.
При прерывании терминалом Ctrl+C генерирует сигнал SIGINT. Если Вы знаете идентификатор процесса nano
(можно узнать с ps u -C nano
(Linux ps
синтаксис) или pgrep nano
или другая утилита списка процессов), можно отправить этот сигнал с kill -INT 12345
где 12345 PID. Однако SIGINT традиционно значит “возврат для основного цикла”, и Нано не выходит, когда он получает SIGINT. Вместо этого отправьте SIGTERM, что означает “оконечный корректно”; это - сигнал по умолчанию, таким образом, можно просто работать kill 12345
. Другая возможность kill -HUP 12345
; SIGHUP означает, что “Вы больше не имеете терминал, выходите корректно, если Вы не можете жить без”. Если все остальное перестало работать, отправьте SIGKILL (kill -KILL 12345
, или заметно kill -9 12345
), который закрывает программу, хочет ли она умереть или нет.
Много программ, включая Нано, распознают, что Ctrl+Z приостанавливает. Это - та же последовательность, которая отправляет сигнал SIGTSTP. Если программа распознает эту клавишу CTRL, Вы возвращаете приглашение оболочки, и так как программа становится фоновым заданием, можно легко уничтожить его с kill %%
(который отправляет сигнал в задание, которое было в последний раз помещено в фон).
С Нано существует альтернативный путь: отправьте ему его последовательность клавиши выхода, т.е. Ctrl+X, сопровождаемые при необходимости N для “, не сохраняют”. Но как общий вопрос, помните это:
kill %%
, и если это не закрывает программу kill -9 %%
.ps -t pts/42
перечислять процессы, работающие на терминале /dev/pts/42
) и уничтожьте его.Символ вертикальной черты отправляет ouput nano
к входу uniq
команда.
Однако nano
все еще выполняет и получает Ваш ввод с клавиатуры. Это просто, что Вы не видите его ouput как uniq
не будет ouput он быть результатами, пока это не будет видеть Конец Файла (это не важно для вопроса).
Когда Вы нажимаете ctrl-c
это 'поймано' нано, но это не заставляет это выходить.
Способ выйти из нано состоит в том, чтобы нажать ctrl-x
, однако nano
не выйдет, если модификации были сделаны, например, при нажатии каких-либо других клавиш начиная с ввода. В этом случае нано предложит Вам со следующим:
Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?
Y Yes
N No ^C Cancel
Нажатие 'n' ключа выйдет, не сохраняя изменения.
Возможно, что Вы поражаете несколько сочетаний клавиш прежде, чем понять, что Вы были в нано, в этом случае можно быть несколькими меню глубоко. К счастью в нано нажатии ctrl-x
также выйдет из большинства меню (но не отменит вышеупомянутую подсказку), это означает нажимать ctrl-x
многократно никогда не будет брать Вас еще дальше от выхода.
Если Вы 'захватываетесь' несколько меню 'глубоко', можно обычно выходить путем нажатия ctrl-x
несколько раз, сопровождаемый n
ключ. Если это не работает, который означает, что Вы нажали ctrl-x
одно время слишком многие - просто нажимают ctrl-x
еще раз, сопровождаемый n
ключ - это будет всегда работать.
Ctrl+Z
и kill %1
как предложено в комментарии к начальному вопросу @ire_and_curses не требуется.
– Nikos Alexandris
20.12.2012, 10:41
Оболочка не принимает Вас Ctrl+C
, nano
делает. Программы могут определить пользовательское поведение для сигналов прерывания и nano
одна такая программа. Видеть то, что пользовательское поведение открыто nano
без перенаправления и отправляют ему a Ctrl+C
.
Забастовка Ctrl
+X
.
Нано получает весь ввод с клавиатуры и в Нано Ctrl
+C
имеет совершенно другое значение, чем в оболочке. Если Вы выполняете a nano
в отдельном окне можно легко видеть, какие ключи необходимо ввести в выход. Ctrl
+X