Algumas explicações:
- Você realmente quer o campo segundo , então você precisa mudar para 'cut -d' '-f 2'.
-
xargs
não é aplicável aqui. O que ele faz é pegar a entrada padrão e passa-os como argumentos para um comando. No entanto,cut
opera 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 read
loop:while IFS=$'\n' read -r -u9 number do history -d "$number" done 9< <(history | grep […] | cut […])
-
some_command | cat | other_command
é completamente redundante.cat
simplesmente copia sua entrada padrão para a saída padrão por padrão.