Как извлечь определенные значения узла без обхода через xmlstarlet

Все символические ссылки являются -односторонними. Что касается ядра, после входа в /D/S1и запуска chdir("ls2")вы попадаете в /D/S2, поэтому, если вы запустите chdir(".."), вы окажетесь в /D.

Если вы сделаете это в оболочке, после

cd /D/S1
cd ls2
cd..

вы попадаете в /D/S1. Причина в том, что оболочка самостоятельно отслеживает текущий каталог и запоминает символические ссылки.

Вы не можете отключить это поведение оболочки для ссылки -по ссылке -, но вы можете отключить ее при выполнении команды cd. После запуска cd ls2оболочка запоминает текущий каталог как /D/S1/ls2:

.
$ pwd
/D/S1
$ cd ls2
$ pwd
/D/S1/ls2
$ cd..
$ pwd
/D/S1

Чтобы заставить оболочку забыть свою символическую ссылку -с учетом отслеживания текущего каталога, передайте параметр -Pв cd. Команда pwdтакже имеет параметр -P.

$ pwd
/D/S1
$ cd ls2
$ pwd
/D/S1/ls2
$ pwd -P
/D/S2
$ cd -P..
$ pwd
/D

Вы также можете забыть о логическом отслеживании при переходе на символическую ссылку:

$ pwd
/D/S1
$ cd -P ls2
$ pwd
/D/S2
$ cd..
$ pwd
/D
0
18.11.2020, 04:18
1 ответ

Вы можете распечатать значения hostXPATH, которые не имеют атрибута hostname:

$ xmlstarlet sel -t -v '//host[not(hostname)]' -n file.xml
cdn.cutshort.io
www.cutshort.io
blogdata.cutshort.io
cdn.cutshort.io

(//host[not(ip)]подойдет и здесь ).

1
18.03.2021, 22:48

Теги

Похожие вопросы