Да, возможно. Один из способов — открыть TTY и взаимодействовать с ним:
#!/usr/bin/env expect
package require Tcl 8.5
gets stdin line; puts "stdin: $line"
set tty [open /dev/tty r+]
chan configure $tty -buffering none
puts -nonewline $tty "nimi sina li seme? "
set name [gets $tty]
gets stdin line; puts "stdin: $line"
puts $tty "name: $name"
Что приводит к результатам, указанным выше, сохраненным в ./prompt
, chmod +x
, установленным expect
и т.д.
$ (echo foo; echo bar) | ./prompt
stdin: foo
nimi sina li seme? Bob
stdin: bar
name: Bob
$
Предполагая, что вы используете GNU tar
, вы можете сказать:
tar --transform 's/.*\///' -xzf archive.tgz
Это уберет все до последней косой черты из файла имена.