Это, вероятно, на самом деле не отвечает на ваш вопрос, но вы все равно можете найти его полезным.
Первая команда создает сценарий, который отображается второй командой.
Третья команда делает этот скрипт исполняемым.
Четвертая команда предоставляет пример использования.
john@malkovich:~/tmp/so$ echo $'#!/usr/bin/env python\nimport textwrap, sys\n\ndef bash_dedent(text):\n """Dedent all but the first line in the passed `text`."""\n try:\n first, rest = text.split("\\n", 1)\n return "\\n".join([first, textwrap.dedent(rest)])\n except ValueError:\n return text # single-line string\n\nprint bash_dedent(sys.argv[1])' > bash_dedent
john@malkovich:~/tmp/so$ cat bash_dedent
#!/usr/bin/env python
import textwrap, sys
def bash_dedent(text):
"""Dedent all but the first line in the passed `text`."""
try:
first, rest = text.split("\n", 1)
return "\n".join([first, textwrap.dedent(rest)])
except ValueError:
return text # single-line string
print bash_dedent(sys.argv[1])
john@malkovich:~/tmp/so$ chmod a+x bash_dedent
john@malkovich:~/tmp/so$ echo "$(./bash_dedent "first line
> second line
> third line")"
first line
second line
third line
Обратите внимание, что если вы действительно хотите использовать этот сценарий, имеет смысл переместить исполняемый сценарий ~/bin
так, чтобы он был на вашем пути.
Проверьте Python ссылку для деталей о том, как textwrap.dedent
работает.
Если использование $'...'
или "$(...)"
вас смущает, задайте другой вопрос (по одному на конструкцию), если его еще нет. Возможно, было бы неплохо предоставить ссылку на вопрос, который вы нашли / задали, чтобы другие люди имели связанную ссылку.