Попробовать grep -o
с этим минимальным шаблоном:
grep -o '..././..' file
Я не могу воспроизвести это, но предполагаю, что проблема в том, что вы уже один раз сняли элисинг ls
, поэтому вы не можете снова unalias. Однако я также почти уверен, что команда source
работала отлично. Ты проверил? Скорее всего, он был получен правильно, и вы можете просто проигнорировать сообщение об ошибке.
Более конкретно, почему вы используете source ~ / .bashrc
? В любом случае этот файл должен быть прочитан, когда вы запускаете новую интерактивную оболочку без входа в систему.Если нужно перезагрузить его, потому что вы внесли изменение, то все в порядке, ваше изменение было загружено. Игнорируйте ошибку.
Вы должны пытаться удалить псевдоним, только если это на самом деле псевдоним: измените
unalias ls
на
[[ $(type -t ls) == "alias" ]] && unalias ls
Попробуйте вместо этого поместить unalias ls 2> / dev / null
в свой ~ / .bashrc
- таким образом оно не будет отображать сообщение об ошибке, которое вы видите, даже если для ls
уже был отменен псевдоним.
Подумайте также о том, чтобы не входить в корневую оболочку - если вы не понимаете, о чем вам говорит эта ошибка, я бы сказал, что вход в корневую оболочку не очень хорошая идея. При использовании обычной учетной записи очень сложно сделать ошибку, которая нарушит работу системы, и еще труднее исправить ее так, чтобы ее не удалось исправить путем перезагрузки. С корневой оболочкой сломать систему очень легко.
[ -t 0 ] && unalias ls
Esto no prueba directamente si ls
tiene realmente un alias, sino que prueba si está en una terminal, lo cual es un poco más simple, especialmente si hay más código en su ~/.bashrc
que desea tratar de la misma manera:
if [ -t 0 ]; then
unalias ls
#... any other terminal-only actions
fi