Некоторые версии grep
(например, на невстроенном Linux или BSD или Mac OS X), имеют a -r
опция сделать рекурсивный поиск. На OpenBSD использовать -R
(и существует нет --exclude
как в примере ниже). Это покрывает простые комбинации find
с grep
.
Если Ваша реализация не имеет -R
флаг, или если Вы хотите более необычные критерии соответствия файла, можно использовать -exec
основной из find
заставить его выполниться grep
. Некоторые более старые find
реализации не поддерживают -exec
… +
; в этих системах используйте a ;
вместо +
(это будет звонить grep
однажды на файл, таким образом, это будет медленнее, но иначе результатом будет то же). Отметьте /dev/null
обманите для порождения grep
показать имя файла, даже если это, оказывается, называют на единственном файле (GNU grep и FreeBSD/NetBSD/OSX grep имеют a -H
опция достигнуть того же эффекта).
find . -type f -name '*.o' -prune -o -exec grep 'needle' /dev/null {} +
grep -r --exclude='*.o' 'needle' .
Это смотрит из http://www.turnkeylinux.org/redmine как Redmine, в отличие от Ubuntu, не использует sudo по умолчанию. В каком имени пользователя Вы используете для SSH? Если это root
, затем Вы не должны использовать sudo
, как все Вы делаете, когда SSHed в к системе Redmine сделан как root
. Если это - что-то еще, как admin
, затем Вы могли попытаться использовать su
команда для получения a root
оболочка, в который к командам выполнения как root
.
Возможно, это не установлено? Откройте свой диспетчер пакетов и установите sudo пакет.
попытайтесь использовать полный путь
/usr/bin/sudo
если та работа команды затем включает/usr/bin/в Ваш огибающий путь переменной в ~/.bashrc
echo "export PATH="$PATH:/usr/bin"" >> ~/.bashrc
надо надеяться, работы..
/usr/bin
почти наверняка будет в Вашем пути по умолчанию. Проблема, как обозначено другими ответами и комментариями, состоит в том что sudo
команда не была установлена вообще.
– Keith Thompson
30.10.2011, 01:25
El error ocurre porque el binario al que intenta llamar desde la línea de comando es solo parte de la variable PATH del usuario actual, pero no es parte de la PATH del usuario raíz.
Puede verificar esto localizando la ruta del binario al que intenta acceder. En mi caso, estaba tratando de llamar a "bettercap -ng". Así que corrí,
$ which bettercap-ng
output: /home/user/work/bin/bettercap
Verifiqué si esta ubicación es parte de la RUTA de mi usuario raíz.
$ sudo env | grep ^PATH
salida:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Entonces, Sudo no puede encontrar el binario que estoy tratando de llamar desde la línea de comandos. Por lo tanto, devuelve el comando de error no encontrado.
Puede indicar a sudo que use la RUTA del usuario actual cuando llame a un binario como el que se muestra a continuación.
$ sudo -E env "PATH=$PATH" [command] [arguments]
De hecho, uno puede convertirlo en un alias:
$ alias mysudo='sudo -E env "PATH=$PATH"'
También es posible nombrar el propio alias sudo, reemplazando el sudo original.
Consulte este video para obtener una solución paso a paso
Сначала войдите в свою учетную запись root. Тогда
$ apt-get install sudo
Добавьте существующего пользователя в группуsudo
$ sudo adduser <user> sudo
Затем вы должны войти в систему как <user>
, и команда sudo
должна быть там.