У Вас нет демона SSH, работающего. Если Вы смотрите на вывод от ps ax
команда, Вы видите, что только два процесса с 'ssh' в описании ssh-agent
(который делает что-то совершенно различное от sshd
) и grep ssh
процесс, который Вы используете для фильтрации вывода ps
.
В зависимости от того, какое установленное распределение, Вы, возможно, должны установить или выполнить ssh
сервер, обычно называемый openssh-server
или sshd
в зависимости от Вашего диспетчера пакетов.
Ошибка прибывает, потому что удар пытается расшириться *
в Вашем аргументе ls использование сопоставления с образцом шарика. Это будет всегда через такую ошибку, когда шарик не будет соответствовать шаблону. *
затем передается ls
как реальная звездочка, которая не соответствует файлу ни один так ls
будет ошибка!
Существует несколько битов о том, что Вы делаете, которые избыточны. Я знаю, что Вы пытаетесь изучить конструкцию, но давайте сломаем некоторые биты того, что Вы просто выполнили и как она, возможно, была сделана.
ls /usr/bin
достаточно для списка файлов в каталоге bin, Вам не нужна звезда вообще.ls
вообще это неоднозначно и потенциально опасно.ls /usr/bin/*zip*
, но ls
все еще избыточно, можно просто передать шарик expantion файлу: file /usr/bin/*zip*
Наконец, find
обычно лучший инструмент для нахождения файлов. Вы могли сделать то, что Вы после как это:
$ find /usr/bin -iname '*zip*' -exec file {} +
Оболочка расширяется *
и поворачивает команду в file $(ls /usr/bin/a /usr/bin/b /usr/bin/whatever | grep zip)
. Вы не должны указывать звездочку в UNIX, если Вы не хотите, чтобы оболочка развернула его для включения всего, прежде чем он передаст его ls
.
т.е. Ваша оболочка заменяет * каждым файлом соответствия, прежде чем это выполнит команду, которая не является, как это работает над Windows, если Вы привыкли к этому.
file $(ls /usr/bin/ | grep zip)
правильный путь состоит в том, чтобы сделать это (право в том смысле, что Вы не нуждаетесь *, но видите ответ Caleb для других проблем и опций). Но отметьте, это на самом деле работает,
file /usr/bin/a /usr/bin/b /usr/bin/whatever
нет
file /usr/bin/a
file /usr/bin/b
file /usr/bin/whatever
снова, это не делает этого способ, которым делают окна.
Попробуйте ls /usr/bin/* | grep zip
видеть, к каким аргументам Вы питаетесь file
. Я был экранирован результатом немного. В моей системе Ubuntu результат - это:
/usr/bin/funzip
/usr/bin/gpg-zip
/usr/bin/mzip
/usr/bin/preunzip
/usr/bin/prezip
/usr/bin/prezip-bin
/usr/bin/unzip
/usr/bin/unzipsfx
/usr/bin/zip
/usr/bin/zipcloak
/usr/bin/zipgrep
/usr/bin/zipinfo
/usr/bin/zipnote
/usr/bin/zipsplit
funzip
gpg-zip
mzip
preunzip
prezip
prezip-bin
unzip
unzipsfx
zip
zipcloak
zipgrep
zipinfo
zipnote
zipsplit
Используя ls /usr/bin/* | less
мы видим, почему мы получаем тот результат: после всех файлов в/usr/bin, ls
также перечисляет содержание/usr/bin/X11 каталога, и он перечисляет их без предварительно ожидаемых имен каталогов.
И когда Вы подаете эти имена файлов без имени каталога к file
, file
не может найти эти файлы, и Вы не получаете "Такой файл или каталог" сообщения об ошибках (как примечание стороны: если Вы получаете сообщения об ошибках, только скажите, что "Я получил ошибки", но отправьте сообщения об ошибках).
Как Caleb, уже отправленный, просто используйте file /usr/bin/*zip*
.
Парсинг результатов ls
может быть опасный бизнес, поскольку выходной формат варьируется. Вы лучше сделали бы что-то вроде этого:
file /path/to/*.zip
Попробуйте более простую команду, чтобы продемонстрировать, как замена процесса работает:
ls $(echo /usr/bin)