The HTTP 404, 404 Not Found and 404 error message is a Hypertext Transfer Protocol (HTTP) standard response code, in computer network communications, to indicate that the client was able to communicate with a given server, but the server could not find what was requested.
Вышеизложенное взято из Википедии
В вашем случае, возможно, у вас нет подключения к этой странице. Вы можете просто получить другой source.list и попробовать. Подсказка :вы можете использовать источник в вашей стране, что в большинстве случаев быстрее.
Если вы хотите соединить имена файлов, полученные в результате расширения глобуса с помощью символов SPC, вы можете сохранить их в позиционных параметрах и использовать "$*"
для объединения:
set --./*.ext
IFS=' ' # SPC is the first character of $IFS by default, we're setting it
# here in case that code is called in a context where it has been
# modified before.
files_joined_with_SPC="$*"
cmd --flag "$files_joined_with_SPC"
или:
cmd --flag "$*"
конечно (напрямую, хотя легче упустить из виду тот факт, что это зависит от текущего значения$IFS
).
Выше приведен стандартный синтаксис POSIX sh
. В zsh
/ksh93
/bash
/mksh
/yash
вы также можете использовать массив вместо позиционных параметров:
files=(./*.ext)
IFS=' '; files_joined_with_SPC="${files[*]}"
С zsh
вы также можете использовать:
files=(./*.ext)
cmd --flag "${(j[ ])files}"
Или с помощью анонимной функции:
(){ cmd --flag "${(j[ ])argv}"; }./*.ext
Где мы явно запрашиваем j
соединение с SPC, не полагаясь на глобальный параметр, такой как $IFS
.
Обратите внимание, что SPC является таким же допустимым символом, как и любой другой в пути к файлу. Любой символ, кроме NUL, допустим в пути к файлу (, на самом деле любое значение байта , но 0 в большинстве систем, эти байты даже не должны формировать допустимые символы ), но NUL не может быть передан в аргумент команды, которая выполняется .
Вы не говорите, что этоcommand
(кстати, command
— это имя стандартной встроенной команды оболочки, я предпочитаю использовать cmd
для заполнителя ), но если это cmd --flag list
предназначен для приема любого списка имен файлов с разделителями SPC, у них должен быть способ позволить пользователям указывать SPC
в имени файла.
Это может быть cmd --flag 'with\ space.ext other.ext'
или cmd --flag 'with%20space.ext other.ext
, cmd --flag 'with\040space.ext other.ext'
и т. д.
В этом случае, при построении этого аргумента к cmd --flag
,возможно, вам придется экранировать этот SPC (и, возможно, \
или %
символы )в именах файлов, прежде чем объединять их с помощью SPC.
В ksh93
/ zsh
/ bash
/ yash
это можно было сделать с помощью:
escaped_files=("${files[@]//\\/\\\\}") # \ escaped as \\
escaped_files=("{files[@]// /\\ }") # SPC escaped as \SPC
# more characters may need to be escaped such as other whitespace
# or quoting characters, depending on the exact syntax expected by
# cmd for the --flag option.
IFS=' '; escaped_files_joined_with_SPC="$*"
cmd -- flag "$escaped_files_joined_with_SPC"
(однако остерегайтесь локалей, которые используют кодировку символов, такую как GB18030, BIG5... где некоторые символы содержат кодировку обратной косой черты (byte 0x5c ). Ваша оболочка может не избежать этих байтов 0x5c, но cmd --flag
может по-прежнему рассматривать их как обратную косую черту, если она не декодирует аргументы в соответствии с кодировкой локали ).
Более надежный/удобный способ для команд получить список имен файлов — просто использовать их как отдельные аргументы (, а не как аргументы параметра )или как cmd --flag 'file 1.ext' --flag 'file 2.ext'...
.
Чтобы получить все имена файлов в одной строке в кавычках:
command --flag "$(echo./*.ext)"
Как вы знаете, это работает только для простых имен файлов. Это означает отсутствие пробелов в именах файлов. В зависимости от значения xpg_echo
это также может означать отсутствие обратной косой черты (шляпный наконечник:кусалананда).
настроить цикл for расширенных файлов глобуса. Пусть переменная оболочки с именем var будет контейнером для имен файлов. На каждой итерации мы обновляем переменную оболочки var
var=
for f in *.ext; do var=${var-}${var:+ }$f; done
your_command --flag "$var"