Команда "sed delete" в bash не всегда работает - PullRequest
0 голосов
/ 24 января 2020

С кодом:

#!/bin/bash
echo 'if [ -f /etc/skel/.bashrc ]; then . /etc/skel/.bashrc; fi' >> ~/.bashrc
echo 'enable -n echo' >> ~/.bashrc
echo "alias cls=\"echo -en '\033c\033[3J'\"" >> ~/.bashrc
echo "alias cmdlist='compgen -c | sort -b'" >> ~/.bashrc
sed -i '/if [ -f /etc/skel/.bashrc ]; then . /etc/skel/.bashrc; fi/d' ~/.bashrc
sed -i '/enable -n echo/d' ~/.bashrc
sed -i "/alias cls=\"echo -en '\033c\033[3J'\"/d" ~/.bashrc
sed -i "/alias cmdlist='compgen -c | sort -b'/d" ~/.bashrc

Я ожидаю пустой файл .bashr c, вместо этого он содержит:

if [ -f /etc/skel/.bashrc ]; then . /etc/skel/.bashrc; fi
alias cls="echo -en '\033c\033[3J'"

Почему?

1 Ответ

1 голос
/ 24 января 2020

Я решил это благодаря Поши!

#!/bin/bash
echo 'if [ -f /etc/skel/.bashrc ]; then . /etc/skel/.bashrc; fi' >> ~/.bashrc
echo 'enable -n echo' >> ~/.bashrc
echo "alias cls=\"echo -en '\033c\033[3J'\"" >> ~/.bashrc
echo "alias cmdlist='compgen -c | sort -b'" >> ~/.bashrc
sed -i '/if \[ -f \/etc\/skel\/.bashrc \]; then . \/etc\/skel\/.bashrc; fi/d' ~/.bashrc
sed -i '/enable -n echo/d' ~/.bashrc
sed -i "/alias cls=\"echo -en '\\\033c\\\033\[3J'\"/d" ~/.bashrc
sed -i "/alias cmdlist='compgen -c | sort -b'/d" ~/.bashrc
...