No sé por qué, pero cuando ejecuto este comando:
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload
Funciona.
Используйтеcut -d "/" -f1-4
ebvjr@Maintenance:~$ echo /home/test/var/opt | cut -d "/" -f1-4
/home/test/var
Обычно пути изменяются с помощью двух утилит basename
и dirname
или с помощью подстановки параметров, а не с помощью утилит редактирования текста на основе строки -.
Это связано с тем, что технически пути могут содержать символы новой строки, что затруднит работу с надежными инструментами на основе строки -, такими как cut
(, sed
или awk
и т. д.)
Например, у вас есть путь к родительскому каталогу /home/test/var/opt
. Лучше всего это сделать с помощью
dirname /home/test/var/opt
Это вернет /home/test/var
. Это будет работать, даже если указанный путь имеет /
в конце.
Я сделал по методу ниже awk
команда
echo "/home/test/var/opt"| awk -F "/" 'OFS="/"{print $1,$2,$3,$4}'
выход
/home/test/var
cut
нормально, как говорит @ebvjr, просто помните, что вам нужно 4 поля, потому что первое пустое.
Если вы grep
, то код длиннее, но, возможно, более интуитивно понятен({3}
= 3-я подпапка -).
grep -Po "(/[^/]+){3}" <<<"/home/test/var/opt"
/home/test/var