여러 개의 부정확한 패턴의 파일 이름을 지정하는 기록기 'nf'

3115 단어 awk일차 구동Git
이 글은 Akatsuki Advent Calendar 2016째 날이다.

개시하다


Advent Calendar에 liner를 소개하는 것도 좀 그렇지만 예전에 젊은 엔지니어에게 알려주면 감탄할 것 같아서 소개해 드릴게요.그나저나 제 주변 감독님들도 많이 쓰세요.

즉시 실례


git의 변경은 다음과 같다.

그중 ddcsv/battle_comments.csv,csv/battle_periods.csv,csv/battles.csv 3개만 생각하고 있습니다.
이 경우 일반적으로 다음 명령줄이 사용됩니다.
$ git add csv/battle_comments.csv csv/battle_periods.csv csv/battles.csv
기나긴 결말!!!파일 이름의 정확한 복제는 매우 고통스럽다.어댑터로 생략해서 쓸 수도 있지만 귀찮아요.편집기를 하나하나 시작하면 명령선을 조립하는 것도 번거롭다.
나는 아래와 같다.
$ git add `awk '{print $NF}'`
위 작업을 수행하면 입력을 기다리기 때문에 add를 원하는 파일 이름을 포함하는 줄을 복사하고 마지막으로 커서가 줄의 맨 위에 있는 상태에서 Ctrl + D를 누르십시오.순간적으로 ^D가 나타나면 알림을 되돌려줍니다. 세 파일은dd상태가 됩니다.
실행 중인 캡처를 붙여넣습니다.

동작 원리는 표준 입력법에 따라 마지막 필드print $NF만 꺼내서 셸의 명령어 교환 기능으로git에 전달하는 것이다.
의외로 많은 사람들이 셸의 지령 교환 기능이 줄을 빈칸으로 바꾸는 것을 몰랐는데, 이것이 왜 이렇게 하는지 이해하기 어렵다.

명령화를 시도하다


매번 위와 같이 타자를 칠 수 있지만, 타자량을 조금 줄이기 위해서
git add `nf`
실행만여러 가지 방법이 있지만 얻기 어려운 기회이기 때문에 셸 스크립트로 실현하면 몇 개의 필드를 지정할 수 있습니다.

alias (awk, 필드 번호 지정 불가)

alias nf='awk "{print $NF}"'

alias (단선 루비, 필드 번호 지정 불가)

alias nf="ruby -a -n -e 'puts "'$F'".last'"

셸 스크립트(awk, 필드 번호 지정 가능)

#!/bin/sh

if [ "$1" != "" ] ; then
  exec awk '{print $'$1'}'
else
  exec awk '{print $NF}'
fi

물론 git 이외에도 조합해서 사용할 수 있습니다.


나도 이것을 rm 명령과 조합해서 untracked 파일을 삭제하는 데 사용할 것이다.
@sachaos와 이야기할 때, 나는 git clean도 괜찮다는 것을 안다.
그렇긴 하지만 지령의 조합을 통해 해결할 수 있다면 다른 응용도 효과적일 것이다.

끝맺다


단순한 연주자일 뿐이지만 뭔가 참고가 된다면 좋겠네요.

좋은 웹페이지 즐겨찾기