![출력 리디렉션 명령줄을 단순화하는 방법은 무엇입니까?](https://linux55.com/image/206190/%EC%B6%9C%EB%A0%A5%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%20%EB%AA%85%EB%A0%B9%EC%A4%84%EC%9D%84%20%EB%8B%A8%EC%88%9C%ED%99%94%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
나는 종종 다음과 같은 Linux 환경에서 출력 리디렉션 명령을 사용합니다.
echo mymodule set number 10 >/proc/aaaa/bbbb_cmd
echo .... >....
이 명령을 생략하고 다음과 같이 사용하고 싶습니다 .
mymodule set number 10
누군가 나에게 bash가 이것을 할 수 있다고 말했는데, 어떻게 해야 할지 모르겠다고요? 누군가 나에게 예를 들어 줄 수 있습니까?
답변1
쉘 기능이 귀하에게 가장 적합한 것 같습니다.
mymodule () {
local IFS=' '
printf 'mymodule %s\n' "$*" >/proc/aaaa/bbbb_cmd
}
이것은 쉘 함수를 정의합니다 mymodule
. 해당 string 을 mymodule
기록한 다음 공백으로 구분하여 명령줄에 제공한 다른 문자열을 기록합니다 /proc/aaaa/bbbb_cmd
.
"$*"
명령줄 인수 목록으로 확장되며 첫 $IFS
번째 문자를 구분 기호로 연결합니다(기본적으로 공백이지만 함수가 $IFS
수정된 컨텍스트에서 계속 작동할 수 있도록 여기에서는 명시적으로 공백으로 설정합니다). 단일 문자열 .
쉘 함수 정의는 일반적으로 별칭을 배치하는 위치나 ~/.bashrc
파일 또는 이에 상응하는 위치에 배치할 수 있습니다. 이 기능은 시작하는 다음 셸 세션에서 사용할 수 있습니다.
질문에 표시된 대로 이 쉘 함수를 사용합니다.
mymodule set number 10