명령 출력을 ls로 어떻게 리디렉션할 수 있나요? [복사]

명령 출력을 ls로 어떻게 리디렉션할 수 있나요? [복사]

리디렉션에 문제가 있습니다.

$ which python3

나에게주세요

/Library/Frameworks/Python.framework/Versions/3.7/bin/python3

그리고

$ ls -l /Library/Frameworks/Python.framework/Versions/3.7/bin/python3

나에게주세요

lrwxr-xr-x  1 root  admin  9  5 fév 18:30 /Library/Frameworks/Python.framework/Versions/3.7/bin/python3 -> python3.7

하지만

which python3 | ls -l

나에게 같은 결과를주지 마십시오.

이유를 아시나요? 올바른 리디렉션 명령은 무엇입니까?

저는 OSX를 사용하고 있습니다.

나는 다음 질문을 말해야 한다이전 명령의 출력을 다음 명령의 인수로 전달합니다.아마도 이것과 같을 것입니다. 그러나 주어진 답변을 보면 길을 잃습니다. 기능을 수행하려면 여기에 제공된 것보다 더 높은 수준의 지식이나 연구가 필요합니다.

답변1

ls표준 입력에서는 입력을 받지 않고 매개변수에서만 입력을 받습니다.

노력하다ls -l "$(which python3)"

답변2

ls파이프에서 읽지 않습니다. 실제로 ls표준 입력은 전혀 사용되지 않습니다.

ls -l대신 다음 명령줄을 통해 실행하려는 항목을 전달 해야 합니다 ls.

ls -l "$( which python3 )"

이는 명령줄에서 명령 대체를 사용하여 ls -l명령의 출력으로 확장됩니다 which. 그러면 이는 명령줄 인수로 사용됩니다 ls.

또는:

ls -l "$( command -v python3 )"

관련된:

답변3

다른 답변은 모두 좋지만 이것도 편리합니다.

which python3 | xargs ls -l

xargs지정된 프로그램에서 값을 가져와 stdin지정된 프로그램에 명령줄 인수로 추가합니다.

관련 정보