Почему `'ln -s /directory 'D:'` работает так, как работает?

Open/Star/Libreoffice может получать данные из STDIN через мост Python-UNO. Входные данные затем могут попасть в любой документ Libreoffice, здесь это документ Writer.

Это было протестировано на Ubuntu 16.04 с Libreoffice5. Вам нужен интерпретатор python, в который включены библиотеки uno! Libreoffice должен быть запущен как служба:

# soffice "--accept=socket,host=localhost,port=2002;urp;" --writer
# echo "test" | ./reader_uno.py
#!/usr/bin/python3
import sys
import uno
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext(
                "com.sun.star.bridge.UnoUrlResolver", localContext )
# connect to the running office
ctx = resolver.resolve( "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" )
smgr = ctx.ServiceManager
# get the central desktop object
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx)
# access the current writer document
model = desktop.getCurrentComponent()
# access the document's text property
text = model.Text
# create a cursor
cursor = text.createTextCursor()
# read from STDIN and insert the text into the document
for line in sys.stdin:
  sys.stdout.write(line)
  text.insertString(cursor,line, 0 )
ctx.ServiceManager

Более подробную информацию можно найти в моем блоге "bitkistl".
http://www.bitkistl.com/2016/02/libreopenstaroffice-hints-and-tips.html

1
02.06.2017, 02:35
2 ответа

Символ : не имеет специального значения в имени файла *nix. Допускаются любые символы, кроме NUL и / (несколько символов необходимо экранировать при вводе или передаче в команды, особенно пробелы и символы новой строки, но они все еще разрешены).

В вашем примере D: — это обычный файл!

1
29.04.2021, 00:00

Это работает, потому что D: является допустимым именем каталога в Linux (и POSIX в целом). Для Linux это не имеет никакого значения.

(Некоторые программы будут обрабатывать определенные каталоги с такими именами по-особому, в соответствующем каталоге; например, Wine ожидает такие каталоги в каталоге dosdevices внутри префикса Wine. Но это характерно для Wine, а не что-то, навязываемое Linux.)

4
29.04.2021, 00:00

Теги

Похожие вопросы