Проверьте, достаточно ли строк file
с помощьюwc -l
(подсчета строк ).
Отображать предупреждение, если в файле недостаточно строк.
[ $(cat file | wc -l) -ge 4 ] && sed -i '4s pattern' file || echo "not enough lines"
Если ваша оболочка zsh
(, которая, насколько мне известно, используется по умолчанию в более новых версиях macos ), вы можете установить параметр autopushd
(set -o autopushd
в своем ~/.zshrc
), что заставит zsh
запоминать все мест (текущие рабочие каталоги, измененные с помощью cd
/ pushd
/popd
)вы были.
Затем вы можете увидеть этот стек с:
dirs
Или dirs -v
, чтобы увидеть индекс каждого каталога в стеке, который вы можете использовать, например, в cd +5
или ls -ld ~+5
для 5-й записи (, переданной верхней строкой, которая является текущим каталогом в выводе dirs
).
или:
print -rC1 $dirstack
($dirstack
предоставление этого стека в виде массива без текущего рабочего каталога ).
Или,если у вас включено расширенное завершение с описаниями (, см.compinstall
)со списком завершения на:
cd +<Tab>
или
cd -<Tab>
Или для любой команды после ~-
или~+
:
any cmd ~+<Tab>
Например, с
set -o autopushd
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' menu select=2
autoload -Uz compinit
compinit -i
в ~/.zshrc
, после того, как я посетил несколько каталогов, при двойном нажатии вкладки я получаю меню, такое как:
% cd +1
Completing directory stack
[1 -- ~/Videos]
2 -- ~/Downloads
3 -- ~/
4 -- /usr
5 -- /tmp
По которому я могу перемещаться с помощью клавиш со стрелками.
Функция стека каталогов сама по себе не зависит -от zsh. Он и команды pushd
/ popd
/ dirs
для управления им были введены csh
в 1980 году, скопированыbash
(1.02 в 1989 году )иzsh
(1.0 в 1990 году )позже. cd +5
, cd -5
также взяты из csh
(, добавленного в zsh в версии 2.0 в 1991 году ). ~+
/ ~-
взяты изbash
(1989 )скопированы позжеzsh
(1991 ), а ~+5
взяты изzsh
(1996 ), скопированы позжеbash
(1997 ). Толькоautopushd
(для cd
, чтобы также использовать этот стек, например молчание pushd
), являетсяzsh
-специфическим, и его структура завершения намного опережает bash
, а теперь также tcsh
(, но догоняетfish
).