Bashが実行しているttyを取得する方法は?

Bashが実行しているttyを取得する方法は?

2番目のアプローチで提案されているこのページ、次のコマンドを使用してbashを実行するttyを取得できます。

ps ax | grep $$ | awk '{ print $2 }'

私は自分で考えましたが、これは実際に少し怠惰です。実行中のプロセスの1つを抽出するためにすべての実行プロセスを一覧表示します。これを行う方が効率的ではありませんか? (これが望ましくない影響を与える可能性があるかどうか尋ねたい):

ps -p $$ | tail -n 1 | awk '{ print $2 }'

参考までに、この問題は、最初のコマンドが実際に2つ(またはそれ以上)行を生成するために発生しました。$$これは、他のプロセスが実行されていてそのPIDに部分文字列が含まれている場合にランダムに発生します。 2番目のアプローチでは、私が望むPIDを要求してこれを防ぎます。

ベストアンサー1

以下を入力してくださいtty

$ tty 
/dev/pts/20

あまりにも単純であまりにも明白なので、本当ではないかもしれません:)

編集する:ご存知のように、最初の項目はpty実行中のプロセスに関する情報も返します。grep

$ ps ax | grep $$
28295 pts/20   Ss     0:00 /bin/bash
29786 pts/20   S+     0:00 grep --color=auto 28295

したがって、1つの結果のみを取得するにはgrepをフィルタリングする必要がありますが、これは見苦しくなります。

ps ax | grep $$ | grep -v grep | awk '{ print $2 }'

または使用

ps ax | grep "^$$" | awk '{ print $2 }'

(制精神変種)

おすすめ記事