항목 목록에 항목을 추가해야 합니다. 이 용어가 맞는지 잘 모르겠습니다.
예:
내가 2개의 파일 "a"와 "b"를 포함하는 디렉토리에 있다고 가정해 보겠습니다. 이것을 목록 ls
에 파이프하면 less
"a"와 "b"라는 두 가지 항목이 있습니다.ls | less
ls를 less로 파이프하고 싶지만 less 명령에 도달하기 전에 목록에 항목을 추가하고 싶습니다. 예를 들어:
ls -->unknow shell feature<-- less
less에 의해 나열된 내용은 "a", "b" 및 "c"입니다("c" 파일은 존재하지 않음).
가능합니까?
답변1
가장 간단한 것은
(ls;echo c) | less
답변2
예, 가능합니다. 다음은 두 가지 예입니다.
파이프를 두 번 사용하십시오.
ls | (cat;echo fuzz) | less
입력 리디렉션을 사용합니다.
ls | less < <(cat;echo fuzz)
존재하다zsh 쉘다음을 사용할 수도 있습니다.
ls | <<<"buzz" | less
#or
ls | < <(echo fuzz) | less
답변3
현재 디렉터리에 표시되는 모든 이름을 나열하려면 해당 이름을 c
목록 끝에 추가하고 다음에서 결과를 확인하세요 less
.
printf '%s\n' * c | less
이 답변의 나머지 부분에는 별도의 파일 이름 목록을 만들고 해당 목록에 항목을 추가한 다음 이를 에 대한 인수로 사용하거나 (질문을 해석하는 방법에 따라) less
에서 목록을 보는 작업이 포함됩니다.less
배열을 사용하여 현재 디렉터리에 표시되는 모든 파일의 이름을 저장할 수 있습니다.
names=( * )
배열 끝에 콘텐츠를 추가할 수 있습니다.
names+=( c )
...또는 배열의 초기 값을 설정할 때 한 번:
names=( * c )
배열의 요소를 매개변수로 사용할 수 있습니다 less
.
less -- "${names[@]}"
(인수를 옵션이 아닌 파일 이름으로 해석하는 데 사용됩니다 --
. less
파일 이름이 대시로 시작하는 경우 중요합니다.)
names
또는 다음을 사용하여 배열 요소를 나열할 수 있습니다 less
.
printf '%s\n' "${names[@]}" | less
동일한 작업을 수행하되 명명된 배열 대신 위치 인수 목록을 사용합니다.
set -- *
set -- "$@" c
... 또는,
set -- * c
그런 다음 less
다음 요소를 매개변수로 사용하여 호출하세요.
less -- "$@"
또는 다음을 사용하여 위치 인수를 나열하십시오 less
.
printf '%s\n' "$@" | less
위의 모든 명령에서 따옴표가 중요합니다. "$@"
이와 같은 인용문을 사용하면 "${names[@]}"
셸이 이를 개별적으로 인용된 요소 목록으로 확장합니다.