플래그를 사용하여 명령을 전달합니다.

플래그를 사용하여 명령을 전달합니다.

이 질문은 이전에도 분명 제기된 질문인 것으로 알고 있으며, 정확히 무엇을 검색하고 있는지 잘 모르겠으니 중복된 질문인 점 양해 부탁드립니다.

이전 명령에서 입력을 파이프할 때 변수를 올바른 위치로 "풀"하려면 어떻게 해야 합니까? PID를 찾고 해당 PID와 관련된 열린 파일을 찾은 다음 파일로 범위를 좁힌 다음 해당 파일에 대해 명령을 실행하려고 합니다. 이것은 명령입니다:

ps x | grep IINA | grep -v grep | awk '{print $1}'

좋아, 이것은 나에게 PID를 제공합니다. 좋습니다. 이제 나는 lsof -p그 PID를 원하지만 단순히 이것을 할 수는 없습니다 ps x | grep IINA | grep -v grep | awk '{print $1}' | lsof -p.

그렇지 않다면 ps x | grep IINA | grep -v grep | lsof -p 'awk '{print $1}''(잘못된 역따옴표를 다시 한 번 양해해 주시기 바랍니다), 내가 원하는 것을 어떻게 할 수 있습니까?

답변1

lsof유틸리티에는 표준 입력이 아닌 명령줄에 PID가 필요합니다.

당신은 그것을 사용할 수 있습니다

lsof -p "$( pgrep IINA )"

이는 인수로 실행되며 해당 출력은 명령 대체를 사용하여 옵션에 대한 옵션 인수로 전달 pgrep됩니다 .IINAlsof-p

IINA명령 이름이 아니고 프로세스를 시작하는 데 사용되는 명령줄의 일부인 경우 -f플래그를 pgrep.

여러 히트를 얻은 경우 구현에서 이를 지원하는 경우 (가장 최근에 시작된 일치 프로세스 가져오기) 또는 (가장 오래된 일치 프로세스 가져오기)를 pgrep사용 하거나 다음을 사용할 수 있습니다.-n-opgrep

lsof -p "$( pgrep IINA | tr '\n' ',' )"

쉼표로 구분된 PID 목록을 만듭니다 lsof -p.

관련 정보