Używam wiersza polecenia bash w OSX. Wiem, że sekwencja escape ANSI \ 033 [21t pobierze tytuł bieżącego okna terminala. Tak więc, na przykład:Jak przechwycić tytuł okna terminala w bashu używając sekwencji kontrolnych ANSI?
$ echo -ne "\033[21t"
...sandbox...
$ # Where "sandbox" is the title of the current terminal window
$ # and the ... are some extra control characters
Co chciałbym zrobić, to uchwycić tę informację programowo w skrypcie, ale nie mogę dowiedzieć się, jak to zrobić. Co skrypt przechwytuje tylko surową sekwencję escape ANSI. Tak więc, na kolejnym przykładzie, ta mała Ruby skrypt:
cmd = 'echo -ne "\033[21t"'
puts "Output from echo (directly to terminal):"
system(cmd)
terminal_name=`#{cmd}`
puts "\nOutput from echo to variable:"
puts terminal_name.inspect
Produkuje następujący wynik:
Output from echo (directly to terminal):
^[]lsandbox^[\
Output from echo to variable:
"\e[21t"
chciałbym informacje w drugim przypadku pasujące informacje wyświetlane na terminalu, ale zamiast tego dostaję tylko surową sekwencję poleceń. (Próbowałem używać system() i przechwytywać dane wyjściowe do pliku - to też nie działa.) Czy ktoś wie, jak to działa?