LoginSignup
1
2

More than 5 years have passed since last update.

zsh で非同期処理

Last updated at Posted at 2017-11-07

結論

サブシェルを立ち上げ、サブシェルのバックグラウンドでジョブを実行、サブシェルの標準出力を /dev/null へ。

( { sleep 5 } &; ) >/dev/null

非同期ジョブの詳細な管理がしたいのであれば madri/zsh-async がオススメ。(ジョブの登録, 名前を指定してジョブを実行, 名前を指定してジョブを中止 ...)

解説

シェルであれば コマンド & で処理の終了を待たずに済む。

sleep 5 &

複数コマンドを束ねるには波括弧を用いる。一行で書く場合はコマンドの最後に ; が必要。

{ sleep 2; sleep 3; } &
{
  sleep 2
  sleep 3
} &

ジョブのステータス変化がが送られてくるので、これを消すにはサブシェルでジョブを実行し、サブシェルの標準出力ごと抑制する。

( { sleep 2; sleep 3; } & ) >/dev/null

あとがき

今回作ったもの。 tmux のウィンドウ名に自動的に作業中の Git のルートディレクトリ名を割り当てる zsh プラグインです。
sei40kr/zsh-tmux-rename

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2