Как регулярному выражению сопоставлять имена файлов в bash? то есть хвост -f /var/log/ (syslog|mail.log)

Эта ошибка является нормальной в данном контексте и просто означает, что дело сделано. /dev/urandomбесконечно, а ваша карта microSD — нет. Вы получаете эту ошибку, потому что ddхотел записать в нее больше данных, но не хватило места (, потому что все уже было стерто ). Если вам нужно больше уверенности, чем это, вы можете вместо этого использовать команду shred, которая лучше предназначена для этого и не вызовет ошибки.

0
21.11.2020, 19:45
3 ответа

Вbash:

shopt -s extglob ## enable extend-glob if not enabled; default is "on"
tail -f /var/log/+(syslog|mail.+(log|err))

или видимо:

tail -f /var/log/+(syslog|mail*)

Пожалуйста, обратите внимание, что это универсальные имена файлов и применимы только к файлам, поэтому вы не должны ожидать расширения пути , как в nginx/*, как вы сказали; вместо этого вы можете предпочесть использовать решение на основе расширения скобки -и ответ, данный Quasímodo , или просто явно отделить это как еще один параметр от команды:

tail -f /var/log/+(syslog|mail*) /var/log/nginx/*
1
18.03.2021, 22:48

Используйте фигурную скобку -.

tail -f /var/log/{mail*,syslog,nginx/*}

Пример:

$ tree
├── mail.err
├── mail.log
├── nginx
│   ├── a
│   ├── b
│   └── c
├── notthis
└── syslog
$ echo {mail*,syslog,nginx/*}
mail.err mail.log syslog nginx/a nginx/b nginx/c
2
18.03.2021, 22:48

Выполнение tail -f file1 file2последует за file1до тех пор, пока не будет выполнено (никогда )до file2. Однако multitailобрабатывает несколько файлов одновременно. sudo apt install multitail;man multitail.

0
18.03.2021, 22:48

Теги

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