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

来自help mapfilereadarray 的同义词:

选项:
-t 从读取的每行中删除尾随的 DELIM(默认换行符)

将该选项添加到 readarray 调用中以修剪掉尾随的新行。

相关内容