Ошибка с командой cut: разделитель должен быть одним символом

2764
ReynierPM

Я пытаюсь запустить эту команду из консоли:

# HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1` 

Но получил эту ошибку:

Попробуйте `cut --help 'для получения дополнительной информации.

Я попробовал ответ на этот пост, но у меня не работает, так как команды после (перечисленные ниже) не работают должным образом.

sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs 

Как я могу решить проблему, которая у меня возникла?

1
Вы пытаетесь использовать пробел в качестве разделителя? (как в `| cut -d" "-f1`)? Hennes 9 лет назад 0
Он пытается разобрать пользователя для http-демона, поэтому я бы сказал «да, пытаясь использовать пробел». Почему это не работает, используя ответ на другой вопрос? каково значение `$ HTTPDUSER` в этом случае? Felipe Lema 9 лет назад 0
Он пытается использовать это, но не имеет его в посте с неработающим кодом. @Rschulze уже ответил более многословно. Я просто указал на это косвенным образом. (И оба `-d \` или `-d" "` будут работать). Hennes 9 лет назад 1

1 ответ на вопрос

2
RSchulze

Вам не хватает пробела в вашей команде вырезать.

cut -d\ -f1 

должно быть

cut -d\ -f1 

так как вы используете \ для выхода из следующего пробела (используя пробел в качестве разделителя), а аргументы разделяются пробелом, между -d и -f отсутствует пробел (для вырезки похоже, что вы пытаетесь использовать " -f1 "в качестве разделителя, который является более чем одним символом).

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