Россия |
Командные процессоры
Средства редактирования командной строки
Редактировать командную строку приходится для того, чтобы исправить что-то в только что набранной строке. В sh нельзя передвинуть курсор в любую позицию в строке, в остальных командных процессорах - можно. Удобнее всего редактировать командную строку в bash.
В каждом командном процессоре реализована возможность стирания последнего символа клавишей "backspace" и стирания строки целиком комбинацией клавиш "Ctrl-U".
В самых первых реализациях командных процессоров средства редактирования были еще более примитивными (например, удаление всей строки целиком выполнялось вводом @ и последующим вводом строки заново, при этом все набранные символы все равно оставались на экране). Сейчас такие архаические приемы редактирования не применяются ни в одном командном процессоре.
В bash и tcsh можно перемещаться вперед и назад по уже введенным символам в строке с помощью "стрелок", переместить курсор в середину и в начало строки. Командный процессор bash после нажатия Enter принимает всю строку целиком, независимо от того, в какой позиции строки находился курсор при нажатии Enter. Например, можно вернуть курсор к середине строки, если ввод оказался неверным, исправить ошибку и тут же нажать Enter, чтобы запустить команду на выполнение. В некоторых старых версиях командных процессоров в этом случае следует исправить строку, перейти к ее концу для ввода команды и только после этого нажать Enter.
В ksh редактирование по умолчанию выключено, его надо включить нажанием клавиши Esc. После этого командная строка будет редактироваться средствами того редактора, имя которого задано в переменной среды окружения VISUAL или EDITOR. По умолчанию это редактор vi. Трудно найти такого системного администратора, которому такой громоздкий и неудобный способ исправления команд покажется удачным: ведь ко всему прочему ему придется помнить о переключении режимов редактирования строки ввода!
В csh и tcsh редактирование командной строки выполняется так же, как и в bash.
Повторение и модификация ранее введенных команд
Иногда бывает удобно повторить команду, которую вы недавно уже вводили; особенно это помогает при вводе длинных команд с одинаковыми аргументами. В тех случаях, когда повторяемая команда должна немного отличаться от оригинала, следует модифицировать запись о ранее введенной команде и запустить на выполнение свежий вариант.
Например, введя
lyxn -p proxy.spb.edu:3128 www.macropulos.cam.ac.uk
вы получите в ответ "command not found", потому что, собираясь запустить lynx, вы допустили опечатку в имени программы. Не повторять же теперь ввод всей длинной строки! Если бы опечатка была в конце строки, можно было бы вызвать строку с предыдущей командой клавишей "стрелка вверх", но здесь опечатка в начале строки, и после вызова выполненной строчки придется еще двигать курсор в ее начало. Есть более короткий вариант, доступный в csh, tcsh и bash:
^xn^nx
Эта конструкция требует у командного процессора повторить предыдущую команду, заменив первой вхождение подстроки xn на nx. И это все!
В csh, tcsh, bash есть и другие средства модификации командной строки. Они перечислены ниже:
- !n ( n - число) повтор n-ной команды из истории команд1Список (историю) введенных команд можно получить по команде history. Используйте tail для просмотра нескольких последних команд: history | tail ;
- !! повтор последней команды;
- !str выполнение последней команды, начинающейся на str.
Командные процессоры csh и tcsh по-разному интерпретируют конструкцию !nstr, например, `!67r'. Для csh это - команда номер 67, в конец которой добавляется r перед выполнением, а для tcsh это - последняя начинающаяся на 67r команда. Такой синтаксис введен в tcsh для удобства повторения команд, имена которых начинаются с цифр. Чтобы заставить tcsh вести себя подобно csh, нужно перед числом поставить обратный слэш, экранирующий его специальное значение: `!\6\7r'.
В bash повторение команд выполняется так же, как и в csh. Дополнительно можно использовать клавиши "вверх" и "вниз" для переходов между командами, введенными раньше или позже.
В ksh для повторения команд используют встроенную команду r, а в sh - команду fc, при этом в sh можно вызвать только такую команду, которая была введена в текущем сеансе, потому что sh не ведет файл истории.