Теперь, когда Вы знаете, какое кодирование используется для имен файлов на удаленном конце ("latin1" - согласно комментариям к первому ответу), Вы могли также следовать, второй путь - выполняет локальный termninal и ssh таким способом, которым удаленные имена файлов отображены правильно (а не первый путь: переименуйте их).
Как я, Вы могли запустить терминал локально, который будет работать в том специальном кодировании, возможно, как это:
LC_ALL=en_US.latin1 xvt и
xvt
обозначает Вашу терминальную программу.
Возможно, существующую локаль называют en_US.iso88591
, и нет en_US.latin1
, поскольку я принял.
Ваша команда расширяется до этого:
export VIDEOS=mp4 VIDEOS=wmv VIDEOS=avi VIDEOS=flv VIDEOS=mkv VIDEOS=m4u VIDEOS=mpg VIDEOS=mpeg
Выполните это для наблюдения то, что происходит:
echo export VIDEOS={mp4,wmv,avi,flv,mkv,m4u,mpg,mpeg}
(это назвало расширение фигурной скобки),
Вторая проблема - это bash
действительно заключает в фигурные скобки расширение перед расширением параметра, не после него, таким образом, что-либо, что похоже на Ваше решение, будет грязно.
Необходимо было бы сделать что-то вроде этого:
eval echo \*.$VIDEOS
который станет раздражающим для ввода каждый раз.
Как насчет чего-то вроде этого:
videos() {
find . -mindepth 1 -maxdepth 1 -type f \
\( -name "*.mp4" -o -name "*.wmv" -o -name "*.avi" -o \
-name "*.flv" -o -name "*.mkv" -o -name "*.m4u" -o \
-name "*.mpg" -o -name "*.mpeg" \)
}
Затем вместо выполнения:
ls *.$VIDEOS
просто сделайте это:
videos
или если необходимо передать его команде:
ls $(videos)
Эта работа части:
echo *.{mp4,wmv,avi,flv,mkv,m4u,mpg,mpeg}
мог быть ключ к разгадке .bash_profile
не работа. Например, это могло бы означать, что Вы используете zsh
.
Скажите нам, что это делает:
echo $0
таким образом, мы можем выяснить, какой файл необходимо вставить его.
Вы могли, вероятно, использовать массивы для этого. Ваш синтаксис должен будет несколько отличаться:
export VIDEOS=(.mp4 .wmv .avi .flv .mkv .m4u .mpg .mpeg)
и затем сделайте
ls ${VIDEOS[*]/./*.}
Если Вы только хотите перечислить видео с именами, запускающимися с foo
, Вы сделали бы
ls ${VIDEOS[*]/./foo*.}
.bashrc
или.bash_profile
, В зависимости от Вашей установки. Попробуйте обоих. – Mikel 25.01.2011, 07:17