Ваш .bashrc или .bash_profile файлы (или другие файлы запуска) содержат опечатку, и Ваш ПУТЬ недопустим. Чтобы действительно быть бесспорными, мы должны были бы видеть Ваш .bashrc или .bash_profile файлы.
Команды как ls
mkdir
rm
не будет работать, потому что Ваша оболочка не может найти их в Вашем ПУТИ, потому что Ваш ПУТЬ недопустим. Команды как echo
и"export
встроены к Bash, который является, почему они работают. Я не могу объяснить проблему с cd
(возможно, ошибка?)
Ищите свой .bashrc или .bash_profile файлы и ищите строки, где ПУТЬ определяется. У Вас могло бы быть плохое определение, где второй ПУТЬ не запускается с $, как это:
export PATH=PATH:/usr/local/bin:/usr/local/sbin
export PATH=PATH:/opt/local/bin:/opt/local/sbin
Это должно сказать что-то вроде этого:
export PATH=$PATH:/usr/local/bin:/usr/local/sbin
export PATH=$PATH:/opt/local/bin:/opt/local/sbin
Я попробовал полностью другой подход, должен использовать Scrapy, однако он имеет ту же проблему! Вот то, как я решил его: ТАК: Python Scrapy - mimetype базирующийся фильтр для предотвращения загрузок нетекстового файла?
Решение состоит в том, чтобы установить a
Node.js
проксируйте и настройте Scrapy для использования его черезhttp_proxy
переменная среды.То, что должен сделать прокси:
- Возьмите Запросы HTTP от Scrapy, и отправляет его на проверяемый сервер. Затем это отдает ответ от к Scrapy, т.е. прервите весь Трафик HTTP.
- Для двоичных файлов (на основе эвристики Вы реализуете) она отправляет
403 Forbidden
ошибка к Scrapy и непосредственным завершениям запрос/ответ. Это помогает сэкономить время, трафик и Scrapy не откажут.Демонстрационный Код Прокси, Который на самом деле работает!
http.createServer(function(clientReq, clientRes) {
var options = {
host: clientReq.headers['host'],
port: 80,
path: clientReq.url,
method: clientReq.method,
headers: clientReq.headers
};
var fullUrl = clientReq.headers['host'] + clientReq.url;
var proxyReq = http.request(options, function(proxyRes) {
var contentType = proxyRes.headers['content-type'] || '';
if (!contentType.startsWith('text/')) {
proxyRes.destroy();
var httpForbidden = 403;
clientRes.writeHead(httpForbidden);
clientRes.write('Binary download is disabled.');
clientRes.end();
}
clientRes.writeHead(proxyRes.statusCode, proxyRes.headers);
proxyRes.pipe(clientRes);
});
proxyReq.on('error', function(e) {
console.log('problem with clientReq: ' + e.message);
});
proxyReq.end();
}).listen(8080);
Вы могли попытаться исправить wget с этим (также здесь) для фильтрации типом MIME. Этот патч довольно стар теперь, хотя, таким образом, он не мог бы больше работать.
Вы могли указать список позволенного resp. запрещенные шаблоны имени файла:
Позволенный:
-A LIST
--accept LIST
Запрещенный:
-R LIST
--reject LIST
LIST
разделенный запятыми список шаблонов/расширений имени файла.
Можно использовать следующие зарезервированные символы для определения шаблонов:
*
?
[
]
Примеры:
-A png
-R css
-R avatar*.png
Если бы файл не имеет никакого расширения resp., имя файла не имеет никакого шаблона, который Вы могли бы использовать, Вам был бы нужен парсинг типа MIME, я предполагаю (см., что Lars Kotthoffs отвечает).
Новый Wget (Wget2 )уже имеет функцию:
--filter-mime-type Specify a list of mime types to be saved or ignored`
### `--filter-mime-type=list`
Specify a comma-separated list of MIME types that will be downloaded. Elements of list may contain wildcards.
If a MIME type starts with the character '!' it won't be downloaded, this is useful when trying to download
something with exceptions. For example, download everything except images:
wget2 -r https://<site>/<document> --filter-mime-type=*,\!image/*
It is also useful to download files that are compatible with an application of your system. For instance,
download every file that is compatible with LibreOffice Writer from a website using the recursive mode:
wget2 -r https://<site>/<document> --filter-mime-type=$(sed -r '/^MimeType=/!d;s/^MimeType=//;s/;/,/g' /usr/share/applications/libreoffice-writer.desktop)
Wget2 еще не выпущен, но скоро будет. Нестабильный Debian уже имеет альфа-версию.
См.https://gitlab.com/gnuwget/wget2для получения дополнительной информации. Вы можете оставлять вопросы/комментарии непосредственно по адресу bug -wget@gnu.org.