почему мы получаем shell-init: ошибка получения текущего директора при использовании egrep

Это количество дней, а не секунд, начиная с эпохи.

$ date -I -d '1970-01-01 + 17050 days'
2016-09-06

(В качестве примечания: технически вы не можете представить «через 365 дней» в секундах; дни не имеют фиксированной или даже известной длины за пределами 6 месяцев из-за високосных секунд.)

0
16.12.2019, 13:49
1 ответ

egrep— это сценарий оболочки в некоторых системах, и, по крайней мере, оболочки в Debian не любят запускаться в удаленном каталоге:

$ mkdir /tmp/z
$ cd /tmp/z
$ rm -r /tmp/z
$ egrep
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.

Это с Bash как /bin/sh, Dash даетsh: 0: getcwd() failed: No such file or directory

Используйте grep -Eнапрямую, чтобы обойти запуск этого сценария оболочки, или не запускайте его в удаленном каталоге.

Связано:Что происходит, когда текущий каталог удаляется?


Совершенно другое дело, что, вероятно, есть лучший способ делать то, что вы делаете, который не страдает от проблем с разбиением слов и подстановкой.

В Bash можно было использовать массивы:

names=(abba begiz altonzon music aolala)
newnames=()
for x in "${names[@]}"; do
    if [[ ! $x =~ ^(abba|begiz)$ ]]; then
        newnames+=("$x")
    fi
done
# do something with newnames
1
28.01.2020, 02:38

Теги

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