Sim. O terminal é sempre /dev/tty
. Tudo o que é necessário é ter read
obtendo sua entrada do terminal em vez de stdin:
#!/bin/bash
read -p "Gimme some stuff: " stuff </dev/tty
echo "**${stuff}**"
Em funcionamento, parece que:
$ echo asdfdsaf | read.sh
Gimme some stuff: 123
**123**
Uma maneira um pouco mais complexa de fazer a mesma coisa
Aqui abrimos /dev/tty
como descritor de arquivo 3. A opção -u 3
diz read
para usar o descritor de arquivo 3:
exec 3<>/dev/tty
read -u 3 -p "Gimme some stuff: " stuff
echo "**${stuff}**"