pwd
내 홈 디렉토리입니다. ls */ -d
디렉토리를 표시합니다.
~$ ls */ -d
Blog/ Desktop/ Documents/ Downloads/ Music/ Pictures/ Public/ Templates/ Videos/
ls -a
숨겨진 디렉터리와 파일을 모두 표시합니다 . 숨겨진 디렉토리 .cache
- .local
등
$ ls -a
. .cache .gnupg .xsession-errors.old
.. .config .gtkrc-2.0 Templates
.bash_history Desktop .gtkrc-xfce Pictures .themes
.bash_logout .linuxmint .pki Videos
.bashrc Documents .local .profile .viminfo
Blog Downloads .mozilla Public .Xauthority
Music .ssh .xsession-errors
하지만 실행하면 ls -ad */
숨겨진 디렉터리가 표시되지 않습니다. 누구든지 설명해 주실 수 있나요?
$ ls -ad */
Blog/ Desktop/ Documents/ Downloads/ Music/ Pictures/ Public/ Templates/ Videos/
답변1
를 실행하면 ls -a
명령줄에 파일 이름이 없으므로 ls
( 그림 참조 ls
) 어떤 파일 이름이 나열되어야 하는지 자체적으로 파악합니다. 지정된 이후 "숨겨진" 파일 표시를 포함합니다 -a
.
ls -d */
and를 실행하면 ls -ad */
쉘이 확장되어 */
표시될 파일 이름 목록을 제공합니다 ls
.*
파일 이름 패턴 시작이 일치하지 않습니다..
이므로 숨겨진 파일은 포함되지 않습니다. 와 */
함께 사용하면 여기서는 아무런 효과가 없습니다.-d
-a
숨겨진 디렉터리를 보려면 해당 디렉터리를 명시적으로 나열할 수 있습니다 ls -d -- */ .*/
. 일부 셸에서는 숨겨진 파일에 대한 일치를 요구할 수도 있습니다 *
. 예를 들어 Bash에서는 다음을 사용합니다 (이 경우에는 및 가 shopt -s dotglob
포함되어 있지 않으므로 와 유사하게 작동합니다 )..
..
ls -A
또한 --
파일 이름이 로 시작하는 경우 옵션으로 간주되지 않도록 옵션 끝을 표시하는 것을 잊어버렸습니다 -
. */
목차도 포함되어 있으니 참고하세요및 디렉토리 심볼릭 링크. 를 사용하면 각 파일에 후행을 추가 하지 않고 디렉터리(숨겨진 디렉터리 포함)만 나열 zsh
할 수 있습니다 . 또는 디렉토리에 대한 심볼릭 링크를 정말로 원하는 경우.ls -d -- *(D/)
D
/
*(D-/)
답변2
*
의도적으로대부분의 경우 우리가 원하는 것이기 때문에(점 파일과 디렉터리는 일반적으로 데이터가 아닌 구성에 사용되기 때문에) 숨겨진 파일이나 디렉터리와 일치하지 않으며 .
if/ Worth로 시작하는 glob을 명시적으로 지정하여 기본값을 재정의할 수 있습니다. 필요할 때 사용하세요.
glob으로 일치시키려는 경우 ls -d .*
(또는 ls -d .*/
일반 파일 없이 숨겨진 디렉터리만 일치시키려면)를 사용하십시오. 숨겨진 디렉토리와 숨겨지지 않은 디렉토리를 일치시키려면 다음을 사용하십시오.ls -d -- */ .*/
참고: @rexkogitans가 의견에서 언급했듯이 글로브는 *
셸에 의해 확장된 것과 같습니다.앞으로그들은 프로그램에 전달됩니다. 또는 (또는 ) ls
을 볼 수 없으며 glob의 쉘 확장 결과인 파일 및/또는 디렉토리 이름 목록을 볼 수 있습니다. 이것이 바로 프로그램에 문자열 리터럴로 전달하려는 경우 전역 문자를 인용하거나 이스케이프(백슬래시를 접두사로 사용하여)해야 하는 이유입니다.*
.*
.*/
또한 참고: glob과 일치하는 파일/디렉토리가 없는 경우 glob은 확장되지 않은 상태로 프로그램에 전달됩니다(즉, 인수 ls
로 처리됨 ). (및 일부 다른 bourne 유사 쉘)에서는 이 동작을 무시할 수 있습니다. 예를 들어 bash에서는 또는 쉘 옵션을 사용할 수 있습니다. nullglob을 사용하면 빈 상태로 확장(즉, 인수 목록에서 제거)되는 반면, Failglob은 오류를 트리거합니다.*
bash
nullglob
failglob
답변3
어디에서도 잘 설명되지 않는 짧은 대답은 in 을 사용할 때 / 가 무시된다는 것입니다 ls
. 왜냐하면 /는 디렉토리 내용이 표시(나열)되고 전달 되는 방식을 제어하기 때문입니다.-a
-A
-d
-a
-A
ls
-d
아니요디렉토리의 내용을 나열합니다.