Команда linux «sdiff» показывает различия между сторонами -и -, по умолчанию включая все строки,но вы можете использовать различные опции, чтобы показать только различия:
sdiff -tWBs -w $COLUMNS config.xml config.xml.original
где
-t :перевод табуляции в пробелы
-W :игнорировать различия в пробелах
-B :игнорировать пустые строки
-s :игнорировать одинаковые строки
-w $COLUMNS :использовать всю ширину экрана
Показанные строки будут разделены символами |, < или > --см. документацию или просто попробуйте.
Это происходит из-за того, что интерпретатор Python в фоновом режиме «конкурирует» с командной строкой командной оболочки -, как только завершает выполнение программы test.py
.
Естественно, Python проигрывает эту «битву», потому что ему не разрешено становиться интерактивным в данный момент. Однако он останавливается слишком поздно, достаточно, чтобы оставить собственное приглашение в состоянии, которое не будет корректно возобновлено по команде fg
.
Один из способов решить эту проблему — добавить следующие строки в конец вашей программы на Python:
import os, signal # access os-level functions and UNIX-signals
os.kill(os.getpid(), signal.SIGSTOP) # send myself the UNIX SIGSTOP signal
(Конечно, import
также можно разместить поверх вашей программы, как это обычно делается.)
Эта строка os.kill()
переводит интерпретатор Python в остановленное состояние, точно так же, как это происходит, когда он пытается перейти в интерактивный режим в неподходящий момент. Только на этот раз он делает это сам, даже не пытаясь подсказать, чтобы не остаться в несогласованном состоянии.
Вы знаете, когда это os.kill()
достигнуто, потому что оболочка строки команды -уведомляет вас об остановке Python. fg
в этот момент возобновит Python, заставив его продолжить работу со строки os.kill()
, тем самым начав свой собственный интерактивный сеанс.
Не используйте bg
для возобновления его работы после того, как он был остановлен этим os.kill()
, потому что это заставит ядро снова остановить Python только при попытке перейти в интерактивный режим в фоновом режиме.