쉘을 사용할 때 사용할 수 있도록 비디오 파일의 모든 확장자를 저장하는 환경 변수를 선언하고 싶습니다.
몇 가지를 시도했지만 작동하지 않았습니다. .bash_profile에 다음을 입력하는 경우:
export VIDEOS={mp4,wmv,avi,flv,mkv,m4u,mpg,mpeg}
마지막 요소만 필요합니다.
[nbarraille@nbarraille ~]echo $VIDEOS
mpeg
내 .bash_profile에 다음을 입력하는 경우:
export VIDEOS="{mp4,wmv,avi,flv,mkv,m4u,mpg,mpeg}"
또는
export VIDEOS='{mp4,wmv,avi,flv,mkv,m4u,mpg,mpeg}'
그런 다음 표시하면 괜찮아 보이지만 ls에서 사용하면 다음과 같이 작동하지 않습니다.
[nbarraille@nbarraille ~] echo $VIDEOS
{mp4,wmv,avi,flv,mkv,m4u,mpg,mpeg}
[nbarraille@nbarraille ~] ll *.$VIDEOS
ls: cannot access *.{mp4,wmv,avi,flv,mkv,m4u,mpg,mpeg}: No such file or directory
변수를 사용하지 않고 똑같은 명령을 실행하면 작동합니다.
[nbarraille@nbarraille ~] echo *.{mp4,wmv,avi,flv,mkv,m4u,mpg,mpeg}
example.avi
example2.mpg
또한 재부팅하면 .bash_profile이 로드되지 않고 $VIDEOS 변수가 비어 있는 것처럼 보입니다. source ~/.bash_profile
작동시키려면 하나의 작업을 수행해야 했습니다 (그리고 새 터미널을 열 때마다 다시 작업을 수행해야 했습니다).
어떤 아이디어가 있나요?
감사해요!
답변1
귀하의 명령은 다음으로 확장됩니다.
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
이렇게 하면 어떤 파일을 넣어야 하는지 알아낼 수 있습니다.
답변2
이를 달성하기 위해 배열을 사용할 수 있습니다. 구문은 약간 달라야 합니다.
export VIDEOS=(.mp4 .wmv .avi .flv .mkv .m4u .mpg .mpeg)
그럼 해
ls ${VIDEOS[*]/./*.}
이름이 로 시작하는 동영상만 나열하려면 foo
다음을 수행하세요.
ls ${VIDEOS[*]/./foo*.}
답변3
별칭이나 스크립트는 어떻습니까? :
ls -m *.mp4 *.wmv *.avi *.flv *.mkv *.m4u *.mpg *.mpeg 2>/dev/null
이름을 정하세요 lvd
- 글자 수가 적습니다(참고: lv
다중 언어 파일 뷰어).