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).この$(...)構造は、出力を文字列に変換するバックティックに似ています。 2行目はファイル名の先頭の「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

関連情報