이 echo
명령은 전달된 표현식에 따라 다른 결과를 출력합니다. 작업 디렉토리는/home/etc
$ echo .*/
/ ../ .cache/ .config/ .gnupg/ .local/ .mozilla/ .ssh/
$ echo ./*
./Desktop ./Documents ./Downloads ./Music ./Pictures ./Public ./snap ./Templates ./Videos
$ echo .*/*
.cache/event-sound-cache.tdb.d410907cf15246578458d0ad7919eb5e.x86_64-pc-linux-gnu .cache/evolution .cache/fontconfig .cache/gnome-screenshot .cache/gnome-software .cache/gstreamer-1.0 .cache/ibus .cache/ibus-table .cache/libgweather .cache/mesa_shader_cache .cache/mozilla .cache/thumbnails .cache/ubuntu-report .cache/update-manager-core .cache/wallpaper .config/dconf .config/enchant .config/eog .config/evolution .config/gedit .config/gnome-initial-setup-done .config/gnome-session .config/goa-1.0 .config/gtk-3.0 .config/ibus .config/nautilus .config/pulse .config/rclone .config/update-notifier .config/user-dirs.dirs .config/user-dirs.locale ./Desktop ./Documents ./Downloads .gnupg/private-keys-v1.d .gnupg/pubring.kbx .gnupg/trustdb.gpg .local/share .mozilla/extensions .mozilla/firefox .mozilla/systemextensionsdev ./Music ../ec ./Pictures ./Public ./snap ./Templates ./Videos
$ echo */*/
Downloads/sync/ Downloads/testdir/ snap/gnome-calculator/
목표는 출력을 얻기 위한 명령 수를 줄이는 것입니다. 출력 echo .*/
과 echo ./*
그 이상을 결합 하는 단일 echo 문을 갖는 것이 가능합니까 echo .*/ */
?
답변1
dot-files
(점으로 시작하는 파일) 및 file-expansion
(일명 와일드카드 목록 파일)이 기본적으로 파일과 일치하지 않는다는 것을 알고 있다고 가정합니다 .
당신은 얻을 수 있습니다하나이렇게 하시면 다음 사항을 기재해 주십시오.
$ echo .*/ ./* .*/* */*/
그것이 당신이 묻고 싶은 것이라면.
문제는 이제 된다.
echo .*/ */ 외에도 echo .*/ 및 echo ./*의 출력을 결합하는 단일 echo 문을 가질 수 있습니까?
pwd : (이식 가능)에 파일 *
과 도트 파일을 나열한다고 가정하면 대답은 '예'입니다..*
find * -maxdepth 1 -type d
배쉬만:
shopt -s dotglob
echo */
답변2
이는 쉘에 의해 수행됩니다. 응답 없음.
이것은 아마도 당신이하려는 일과 더 비슷할 것입니다.
( shopt -s dotglob; echo * )
모든 파일을 나열하지만 .
및 ..
.
그것은 bash에서 작동합니다.
답변3
echo 명령은 전달된 표현식에 따라 다른 결과를 출력합니다.
이것은 근본적인 오해입니다. 이 echo
명령은 어떤 표현식도 볼 수 없으며 단지 인수로 받은 문자열 리터럴 집합을 출력합니다.
쉘은 명령줄을 평가한 다음 첫 번째 단어를 명령으로 실행하고 모든 후속 단어를 인수로 전달하는 역할을 합니다.