1

私はUNIXを初めて使用し、以下のawkコマンドを理解しようとしています。

AWK=/bin/awk
RUID=`/usr/bin/id|$AWK -F\( '{print $2}'|$AWK -F\) '{print $1}'`
echo $RUID

このコマンドは、ログインしているユーザー名を出力していますが、このコマンドを使用してユーザー名を抽出する方法を示しています。

4

2 に答える 2

7

多分あなたはこれを試すことができます:

whoami

あなたが本当にそれをやりたいのならawk

$ id |awk -F'[)(]' '{print $2}'
kent

編集 (コメント用)

もちろん、現在のログインユーザー名/IDを取得する方法は他にもあります。

ユーザー名を取得するには

kent$  id -un
kent

kent$  echo $USER 
kent

kent$  echo $USERNAME 
kent

UIDのみを取得するには

kent$  echo $UID 
1000

kent$  id -u
1000
于 2013-03-19T12:50:06.367 に答える
6

コマンドはパラメーターを使用して、コマンドからの出力を特定の文字(ここでは最初と2番目)で-F分割します。配管に精通しているかどうかわかりませんか?id()

次にを使用print $2すると、2番目の部分、つまり最初に発生した後から(次の発生までの部分が印刷されます。コマンドを手動で呼び出すと、これがどのように機能するかがわかります。

/usr/bin/id| $AWK -F\( '{print $2}'

これはを返しますusername) gid=1000

次に、での最初の実行でawk得られた文字列を分割し、最初のの前にパーツを印刷するために再度呼び出されます。awk))

ただし、同じことは、を呼び出す/usr/bin/id -unか、さらに簡単にすることで実現できますwhoami

また/usr/bin/id、パラメーターを指定せずにコマンドを実行して、awkここで解析している元の出力を確認してください。

于 2013-03-19T12:59:03.213 に答える