Что такое $PWD? (по сравнению с текущим рабочим каталогом)

Почему Вы заключили бы его в кавычки? Если Вы хотите ссылки, использовать \( и \) вместо этого,

Кроме того, отметьте g опция, так как тот шаблон появляется многократно

sed -i 's/\s*|/|/g' DataStats0914.txt

Тест:

echo 'data | num | num | num | num' | sed 's/\s*|/|/g'

Добрался:

data| num| num| num| num

29
13.06.2015, 12:07
2 ответа

$ PWD - это p athname текущего W orking D Iructory

, когда есть символические ссылки могут Будьте разными результатами чтения $ PWD для выполнения команды PWD .

16
27.01.2020, 19:38

Это зависит от того, что вы делаете. Прежде всего, $ PWD - это переменная среды, а pwd - это встроенная оболочка или фактический двоичный файл:

$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd

Теперь встроенная команда bash просто напечатает текущее значение ] $ PWD , если вы не используете флаг -P . Как объяснено в help pwd :

pwd: pwd [-LP]

    Распечатать имя текущего рабочего каталога.

    Параметры:

      -L
          распечатать значение $ PWD , если он называет текущий рабочий каталог
      -P
          распечатать физический каталог без каких-либо символических ссылок

    По умолчанию 'pwd' ведет себя так, как если бы была указана '-L'.

Бинарный файл pwd , с другой стороны, получает текущий каталог с помощью системного вызова getcwd (3) , который возвращает то же значение, что и readlink -f / proc. / self / cwd . Чтобы проиллюстрировать это, попробуйте перейти в каталог, который является ссылкой на другой:

$ ls -l
total 4
drwxr-xr-x 2 terdon terdon 4096 Jun  4 11:22 foo
lrwxrwxrwx 1 terdon terdon    4 Jun  4 11:22 linktofoo -> foo/
$ cd linktofoo
$ echo $PWD
/home/terdon/foo/linktofoo
$ pwd
/home/terdon/foo/linktofoo
$ /bin/pwd
/home/terdon/foo/foo

Итак, в заключение, в системах GNU (таких как Ubuntu), pwd и echo $ PWD эквивалентны, если вы не используете параметр -P , но / bin / pwd отличается и ведет себя как pwd -P .

Источник https://askubuntu.com/a/476633/291937

24
27.01.2020, 19:38

Теги

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