Algumas explicações:
- Você realmente quer o campo segundo , então você precisa mudar para 'cut -d' '-f 2'.
-
xargsnão é aplicável aqui. O que ele faz é pegar a entrada padrão e passa-os como argumentos para um comando. No entanto,cutopera na entrada padrão por padrão, que é o que você deseja.history | grep history | xargs cut […]acaba criando comandos comocut […] [some content from the Bash history]'. Para processar uma série de números de linha impressos com uma nova linha após cada um, você deverá usar umwhile readloop:while IFS=$'\n' read -r -u9 number do history -d "$number" done 9< <(history | grep […] | cut […]) -
some_command | cat | other_commandé completamente redundante.catsimplesmente copia sua entrada padrão para a saída padrão por padrão.