Работа в каталоге с символическими ссылками идентична работе непосредственно в каталоге? [дубликат]

Consed

sed 's/^%/%%/' infile

reemplaza el comienzo %con %%para las líneas si comienza con.
El ^es un ancla que apunta al comienzo de la línea; hay $que apunta al final de la línea.
para cambiar la escritura en el archivo en el lugar -, use la opción -ide sed .

Hay otra forma que reemplazará más rápido que la anterior (si su archivo es lo suficientemente grande, notará la diferencia)

sed '/^%/ s/^/%/' infile
0
18.07.2018, 22:24
3 ответа

Да. Работа в каталоге A аналогична работе в каталоге B.

Симлинк — это специальный файл, указывающий на другой файл. ~/symlinks/FarAwayDirectoryна самом деле не имеет собственных данных (, кроме основных метаданных файловой системы ). Скорее, он буквально указывает на каталог, на который у вас есть символическая ссылка.

Вы можете проверить это, создав файл в ~/symlinks/FarAwayDirectoryи убедившись, что файл существует в полном пути к фактическому каталогу.

0
28.01.2020, 04:17

Да, если вы используете версию pwd, встроенную -в bash, вы получите результат A.

Но попробуйте явным образом вызвать бинарную версию -одиночной версииpwd:

$ /bin/pwd

Я думаю, вы увидите свой вывод B.

В основном это происходит потому, что bashпомнит, что вы пришли в каталог по символической ссылке, и поэтому представляет путь к вам в "логической" форме (вашего вывода A )по умолчанию. Если вы хотите, чтобы «физический» путь (вашего вывода B )был представлен во всех подобных случаях, вы можете использовать set -P, чтобы сделать это так.

Или, если вы хотите сделать это в случае -на основе -случая, bashвстроенная -в cdкоманда также поддерживает ' -L' и ' -Варианты P.

0
28.01.2020, 04:17

Каталог А отсутствует.

Это символическая ссылка, не каталог . Рабочий каталог один и тот же единственный каталог в обоих случаях. Единственная разница заключается в значении переменной PWD, которая, в свою очередь, влияет на то, что некоторые команды сообщают как имя текущего каталога. Встроенная команда -в pwdв нескольких оболочках, например,сообщит значение переменной оболочки PWD, если не будет указано игнорировать его. Внешняя команда pwd(, если она указана с опцией -L), проверит, что значение переменной среды PWD, которую она унаследовала, и если она проверяется как имя для текущий каталог также использует его.

Дополнительная литература

0
28.01.2020, 04:17

Теги

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