bash는 파일 이름을 입력으로 사용합니다.

bash는 파일 이름을 입력으로 사용합니다.

내가 얻고 싶은 결과물

hg resolve -l

그 형식은

R somefile/filename
U somefile/filename
R somefile/filename
U somefile/filename

"U"로 시작하는 첫 번째 줄을 매개변수로 사용할 수 있으므로 다음과 같은 작업을 수행할 수 있습니다.

open -t <first U file>

그리고

hg resolve -m <first U file>

누군가 나에게 이 작업을 수행하는 가장 좋은 방법에 대한 조언을 제공할 수 있다면 좋을 것입니다.

편집: 아래 답변의 솔루션은 간단한 스크립트입니다.

#!/bin/bash

# Script that gets the first file from hg resolve | grep U and passes to default text editor

first_u_file=$(hg resolve -l | grep -m1 '^U')
first_u_file=${first_u_file#U }
echo opening \'$first_u_file\'
open -t "$first_u_file"

답변1

GNU grep을 사용하여 다음을 시도해 볼 수 있습니다(테스트되지 않음):

first_u_file=$(hg resolve -l | grep -m1 '^U')
first_u_file=${first_u_file#U }

-mXX 줄 이후에 인쇄를 중지하도록 지시합니다 grep(이 경우 1). 이 $(...)구조는 출력을 문자열로 변환하는 백틱과 유사합니다. 두 번째 줄은 파일 이름 시작 부분의 "U"를 제거합니다.

답변2

더 간단한 솔루션:

u_file=$( hg resolve -l | awk '/^U/{print $2; exit}' )

답변3

hg resolve -l | egrep '^U.*' | head -n 1

출력은 첫 번째 U 파일입니다.

open"U"를 제거하려면 다음을 인수로 사용하십시오 .

firstUfile=`hg resolve -l | egrep '^U.*' | head -n 1 | sed -e 's/^U\s+\(.*\)$/"\1"/'`
open -t $firstUfile

답변4

스크립트는 첫 번째 파일을 여는 것이 아니라 해결되지 않은 모든 파일을 반복합니다.

#!/bin/bash

while read; do
    file="${REPLY#U }"
    echo "Opening '$file'"
    open -t "$file"      
    hg resolve -m "$file"
done <( hg resolve -l | grep "^U" )

(저는 그것에 익숙하지 않습니다 . "U" 접두사 없이 구문 분석되지 않은 파일 목록 hg만 제공합니까 ? 이렇게 하면 grep 및 U 스트리핑 단계가 필요하지 않습니다.)hg resolve -aln

관련 정보