루프, sudo, 파이프, 플래그, 작은따옴표 및 큰따옴표가 포함된 Bash 별칭

루프, sudo, 파이프, 플래그, 작은따옴표 및 큰따옴표가 포함된 Bash 별칭

명령줄에 입력할 수 있는 다음 명령에 대한 bash 별칭을 만들고 싶지만 별칭을 만들려는 모든 시도가 실패했습니다. 내 유일한 진단은 중첩된 인용문과 루프가 모두 끔찍하고 어떻게 해야 할지 모르겠다는 것입니다.

sudo ss -x src "*/tmp/.X11-unix/*" | grep -Eo "[0-9]+\s*$" | while read port
do sudo ss -p -x | grep -w $port | grep -v X11-unix 
done | grep -Eo '".+"' | sort | uniq -c | sort -rn

이 명령에 별칭을 추가할 수 있습니까?

답변1

일부 명령에 옵션을 추가하는 것보다 더 복잡한 작업의 경우 별칭 대신 셸 함수를 사용하세요.

mything다음은 일반적으로 별칭을 정의하는 동일한 위치에 정의하고 표시되는 명령을 실행하는 함수입니다 .

mything () {
    sudo ss -x src "*/tmp/.X11-unix/*" |
    grep -Eo "[0-9]+\s*$" |
    while read -r port; do
        sudo ss -p -x | grep -w "$port"
    done |
    grep -v X11-unix | grep -Eo '".+"' |
    sort | uniq -c | sort -rn
}

실행 중인 실제 명령을 자세히 살펴보지는 않았지만(참조되지 않은 사용을 수정 하고 루프 $port밖으로 이동하는 것 제외) 적어도 일부 작업은 대체될 ​​수 있는 것처럼 보이며 다음을 수행할 수 있어야 합니다. 루프를 제거하거나 적어도 루프 밖으로 이동하십시오. 가장 중요한 것은 실행하기 매우 복잡한 작업이 있는 경우 해당 작업에 대한 셸 함수를 생성하는 것입니다.grepawksudo ss

관련 정보