Я хотел бы вставить текст коротких скриптов python внутри bash script, для использования в say, my .bash_profile
. Какой лучший способ сделать это?
Решение, которое я имею до сих пор, - это вызвать интерпретатор python с опцией -c
и сообщить интерпретатору exec
все, что он читает из stdin
. Оттуда я могу создать простые инструменты, подобные следующим, позволяя обрабатывать текст для использования в интерактивной подсказке:
function pyexec() {
echo "$(/usr/bin/python -c 'import sys; exec sys.stdin.read()')"
}
function traildirs() {
pyexec <<END
trail=int('${1:-3}')
import os
home = os.path.abspath(os.environ['HOME'])
cwd = os.environ['PWD']
if cwd.startswith(home):
cwd = cwd.replace(home, '~', 1)
parts = cwd.split('/')
joined = os.path.join(*parts[-trail:])
if len(parts) <= trail and not joined.startswith('~'):
joined = '/'+joined
print joined
END
}
export PS1="\h [\$(traildirs 2)] % "
Этот подход немного пахнет мне, и мне интересно, какие альтернативы этому делать могут быть.
Мои навыки работы с bash довольно рудиментарны, поэтому мне особенно интересно услышать, что я делаю что-то глупое из перспективы переводчика bash.