실행하기 전에 쉘 명령 수정

실행하기 전에 쉘 명령 수정

하위 명령이 필요한 명령이 꽤 많습니다(예: git, 또는 tasktaskwarrior에서). 때때로 다른 하위 명령을 사용하여 이 명령을 실행하는 전용 터미널 창이 있습니다. 항상 주 명령을 입력할 필요가 없었으면 좋겠습니다. taskwarrior("할 일 목록 관리자")의 예를 들어 설명하겠습니다.

$ task add proj:job +hard Refactor the API -- Add task to project 'job' tagged 'hard'
$ task proj:job +easy add prio:H Fix typo in README -- Tag is 'easy', priority 'high'
$ task proj:job next -- List tasks in project 'job', ordered by 'urgency'

보시다시피 or와 같은 하위 명령의 배치는 task매우 유연합니다. 이제 내가 프로젝트(예: "일")를 진행 중이라면 더 깊이 탐구하고 싶습니다. 그것은 다음과 같습니다:addnext

$ CONTEXT="task proj:job"
[task proj:job] $ add +hard Refactor the API
[task proj:job] $ +easy add prio:H Fix typo in README
[task proj:job] $ next

이 질문의 제목은 매우 광범위합니다(명령을 실행하기 전에 sed 스크립트를 실행하는 것이 좋습니다). 그러나 다음 중 하나를 보게 된다면 기쁠 것입니다.

  1. CONTEXT예제에 표시된 것처럼 일부 변수를 설정하고 실행하기 전에 각 명령 앞에 해당 값을 추가할 수 있습니다.
  2. CONTEXT또는 명령 입력을 시작하기 전에 명령줄에 값을 입력할 수 있으면 더욱 좋습니다. 이렇게 하면 가끔씩 백스페이스 키를 누르거나 Ctrl-U상황에 맞지 않는 명령을 실행하고 싶을 때 사용할 수 있습니다 .

묻다.zsh설명된 기능을 갖춘 쉘(예를 들어 bash와 같은 것이 바람직함)이 있습니까 ?

답변1

정확한 질문보다는 작업 흐름을 해결하기 위해 이 경우 함수를 사용하겠습니다.

t() { task proj:job "$@"; }

t add +hard Refactor the API
t +easy add prio:H Fix typo in README
t next

별칭에 비해 함수의 장점은 자리 표시자를 줄 끝뿐만 아니라 명령 템플릿의 어느 곳에나 배치할 수 있다는 것입니다.

Leading의 오버헤드를 피하려는 명령으로 판단하면 t다음과 같이 시도해 볼 수 있을 것 같습니다.

add() { task proj:job add "$@"; }
next() { task proj:job next; }

add +hard Refactor the API
add +easy prio:H Fix typo in README
next

관련 정보