파이프라인 프로젝트 목록에 프로젝트 추가

파이프라인 프로젝트 목록에 프로젝트 추가

항목 목록에 항목을 추가해야 합니다. 이 용어가 맞는지 잘 모르겠습니다.

예:

내가 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[@]}"셸이 이를 개별적으로 인용된 요소 목록으로 확장합니다.

관련 정보