set --
while IFS= read -r in
do set -- "$@" "$in"
done
... depois pressione as teclas shift-insert , depois ctrl + D uma vez (ou duas vezes) , e cada linha do seu colar depois pode ser literalmente (sans NULs) em $1
e $2
e $3
e assim por diante, e toda a matriz de entrada pode ser endereçada como uma única string concatenada no primeiro caractere de $IFS
em "$*"
ou então como uma lista de sequências separadas em "$@"
, o que significa que você pode fazer:
md5sum -- "$@"
... já que aparentemente você está procurando uma útil abreviação interativa:
alias rdcb='
[ -t 0 ] && set -- &&
while IFS= read -r in
do set -- "$@" "$in"
done'
... definirá um alias
que você pode executar em um shell interativo para definir os parâmetros do shell para um array delimitado por nova linha a partir da entrada padrão.
então ...
{ ls -1 | xsel -bi #pipes ls output into my clipboard
rdcb #terminal hangs, shift+insert && crtl+d
xsel -bo #writes my clipboard to stdout
printf %s\n '' --- '' "$@" #writes \n-delimited shell arg array
printf %s\n '' --- '' "$3" "$5" #writes only args "$3" and "$5"
}
1
edit.sh
paccache
sh
systemd-private-75115542eb544b09bc245e8ca7765854-systemd-timesyncd.service-CKruFk
sztally
yaourt-tmp-mikeserv
---
1
edit.sh
paccache
sh
systemd-private-75115542eb544b09bc245e8ca7765854-systemd-timesyncd.service-CKruFk
sztally
yaourt-tmp-mikeserv
---
paccache
systemd-private-75115542eb544b09bc245e8ca7765854-systemd-timesyncd.service-CKruFk
Aqui está uma versão melhor:
alias rdcb='
if [ -t 0 ]
then set -f -- "$IFS" "${IFS+IFS=\;} set +f -$-
stty $(stty -g; stty raw -echo min 1 time 2)"
IFS=$(printf \r)
set -- "$@" $(dd bs=4k count=1 2>/dev/null)
eval "unset IFS;$2;shift 2"
fi '
Ele elimina o eco terminal e o processamento de caracteres especiais do terminal e não requer um CTRL + D para sinalizar o final da entrada. Todo o material que ele faz é temporário, e é cuidadoso em restaurar todas as configurações que ele afeta para o estado em que ele as encontrou quando passou, exceto pelos argumentos do shell, que são permanentemente alterados, por design, é claro.
Então, com isso, você acabou de fazer rdcb
, depois colar e pronto. Não haverá saída para a tela quando você colar - o terminal apenas irá travar, e então você inserirá pelo menos um único byte dentro de um determinado segundo e o prompt reaparecerá. Depois disso, você pode trabalhar com os argumentos como antes.