Bash 全体の出力が終了すると、新しい行が開きます。

Bash 全体の出力が終了すると、新しい行が開きます。

だから私はしばしばアプリをバックグラウンドにプッシュし、アプリを切り替えます。私はfgがタブを完全に定義していないことに気づきました。

そのため、jobsコマンドの提案に基づいて完全なfgタブをすばやく設定できると思いました。興味深いプロジェクトのように見えたので、似たようなものがすでにオンラインにあることを確認していません。これは私のコードです。

job(){
  readarray COMPREPLY < <(jobs -l)
  for i in "${!COMPREPLY[@]}"; do
      printf -v pad %*s -$COLUMNS "${COMPREPLY[i]}"
      COMPREPLY[i]="%"${pad//[][]}
  done
}

問題は、各提案の末尾に新しい行文字(^ j)があることです。たとえば、次のようになります。

%1 53967 vim^J を停止しました

%2 54257 Python^J を停止しました。

%3 54499 中止 (信号) nano^J

%4- 42270 vim 停止 ~/.bashrc^J

%5+ 47434 vim 停止 ~/.bashrc^J

答え1

readarrayの同義語help mapfile

オプション:
-t読み取った各行から末尾のDELIM(デフォルトの改行)を削除します。

後続の新しい行を切り取るには、readarray呼び出しにこのオプションを追加します。

関連情報