Родительский каталог — это каталог, содержащий элемент:
.
, потому что именно туда помещается файл. Сам файл ./file
. ..
, а .
— это сам каталог. Это общее обозначение для Linux, и оно широко распространено. Теоретически некоторые языки могут использовать другую нотацию, но я не могу привести пример.
Вот иллюстрация с использованием абсолютных путей, из которых вы можете легко вывести относительные пути силой своего мозга.
$ echo 'readlink -f "$0"' > script
$ ln -s script link
$ chmod +x script
$./script
/home/tomas/x/script
$./link
/home/tomas/x/script
$ readlink -f.
/home/tomas/x
$ readlink -f..
/home/tomas
Вы прямо заявили, что хотите найти решение, используя vi
. Но этого также можно добиться с помощью однострочной -инструкции sed
sed -i -e 's/.*CPU_check/# &/' -e 's/.*Memory_check/# &/' crontab
Это решение изменяет встроенный файл. Вы можете сохранить резервную копию файла, изменив флаг -i
на -i.bak
в вызове sed.
в VI,
:g/CPU_check/s/^/#/
где
:
скажите vi перейти в командный режим g
применить «глобально» (для нескольких строк )без g будет применяться только к первой строке.
/CPU_check/
сопоставление адресной строкиCPU_CHECK
s
замена /^/
начало строки (с)/#/
#
знак выполнить другую замену
сохранить и выйти
:x
Предполагая, что под "vi
" вы подразумеваете фактическое vi
(, а неvim
):
:set extended
:g/(CPU|Memory)_check/s/^/#/
Это сначала включает расширенные регулярные выражения в шаблонах поиска с set extended
, а затем применяет заменуs/^/#/
(вставляет символ#
-в начале строки )ко всем строкам, содержащим строку CPU_check
или Memory_check
.
В vim
вы можете использовать
:g/\(CPU\|Memory\)_check/s/^/#/
или
:g/\v(CPU|Memory)_check/s/^/#/
сделать то же самое.
Экранирование \v
в vim
позволяет vim
использовать распознавание шаблона как расширенное регулярное выражение. v
это \v
сокращение от «очень волшебное» (см. :help magic
вvim
).
В ed
без поддержки расширенных регулярных выражений можно было использовать две отдельные команды редактирования
g/Memory_check/s/^/#/
g/CPU_check/s/^/#/
С sed
, который поддерживает расширенные регулярные выражения через параметр -E
:
sed -E '/(CPU|Memory)_check/s/^/#/'
Или со стандартными sed
,
sed -e '/CPU_check/s/^/#/' -e '/Memory_check/s/^/#/'