명령줄에 입력할 수 있는 다음 명령에 대한 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
밖으로 이동하는 것 제외) 적어도 일부 작업은 대체될 수 있는 것처럼 보이며 다음을 수행할 수 있어야 합니다. 루프를 제거하거나 적어도 루프 밖으로 이동하십시오. 가장 중요한 것은 실행하기 매우 복잡한 작업이 있는 경우 해당 작업에 대한 셸 함수를 생성하는 것입니다.grep
awk
sudo ss