Ubuntu 18.04: как изменить раскладку клавиатуры из сценария?

Я изначально думал, что мне придется создать дополнительный файл, но я мог бы просто закодировать исходный файл в Bash и использовать некоторое перенаправление, чтобы оно отображалось как файл.

Есть, вероятно, дюжина различные способы выполнения цикла, но здесь четыре:

mycommand <( seq 1000 | xargs -i -- cat input-data.txt )
mycommand <( for _ in {1..1000}; do cat input-data.txt; done )
mycommand <((for _ in {1..1000}; do echo input-data.txt; done) | xargs cat )
mycommand <(awk '{for(i=0; i<1000; i++)print}' input-data.txt)  #*

Третий метод импровизирован из комментария maru ниже и строит большой список входных имен файлов для cat. xargs разделит это на столько аргументов, сколько позволит система. Это намного быстрее, чем n отдельных кошек.

Способ awk (вдохновленный ответом terdon), вероятно, наиболее оптимизирован, но он дублирует каждую строку за раз. Это может или не подходит для конкретного приложения, но оно быстро и эффективно.

Но это генерируется «на лету». Вывод Bash, вероятно, будет намного медленнее, чем что-то, что можно прочитать, поэтому вы должны создать новый файл для тестирования. К счастью, это очень простое расширение:

(for _ in {1..1000}; do echo input-data.txt; done) | xargs cat > input-duplicated.txt
mycommand input-duplicated.txt
2
задан 24 May 2018 в 22:29

3 ответа

Этот метод переключения раскладок клавиатуры устарел. Новый, чуть более загадочный способ:

gdbus call --session --dest org.gnome.Shell \
    --object-path /org/gnome/Shell \
    --method org.gnome.Shell.Eval \
    "imports.ui.status.keyboard.getInputSourceManager().inputSources[1].activate()"

(кредиты: https://www.mail-archive.com/gnome-shell-list@gnome.org/msg08988.html)

Число в inputSources[1] определяет, какой формат вы хотите. Итак, если у вас настроено два разных макета, это будет 0 или 1. Вы можете получить список настроенных макетов с помощью этой команды:

$ gsettings get org.gnome.desktop.input-sources sources
[('xkb', 'us+intl-unicode'), ('xkb', 'us')]
0
ответ дан 8 June 2018 в 13:57

Этот метод переключения раскладок клавиатуры устарел. Новый, чуть более загадочный способ:

gdbus call --session --dest org.gnome.Shell \ --object-path /org/gnome/Shell \ --method org.gnome.Shell.Eval \ "imports.ui.status.keyboard.getInputSourceManager().inputSources[1].activate()"

(кредиты: https://www.mail-archive.com/gnome-shell-list@gnome.org/msg08988.html)

Число в inputSources[1] определяет, какой формат вы хотите. Итак, если у вас настроено два разных макета, это будет 0 или 1. Вы можете получить список настроенных макетов с помощью этой команды:

$ gsettings get org.gnome.desktop.input-sources sources [('xkb', 'us+intl-unicode'), ('xkb', 'us')]
0
ответ дан 17 July 2018 в 13:31

Этот метод переключения раскладок клавиатуры устарел. Новый, чуть более загадочный способ:

gdbus call --session --dest org.gnome.Shell \ --object-path /org/gnome/Shell \ --method org.gnome.Shell.Eval \ "imports.ui.status.keyboard.getInputSourceManager().inputSources[1].activate()"

(кредиты: https://www.mail-archive.com/gnome-shell-list@gnome.org/msg08988.html)

Число в inputSources[1] определяет, какой формат вы хотите. Итак, если у вас настроено два разных макета, это будет 0 или 1. Вы можете получить список настроенных макетов с помощью этой команды:

$ gsettings get org.gnome.desktop.input-sources sources [('xkb', 'us+intl-unicode'), ('xkb', 'us')]
0
ответ дан 20 July 2018 в 13:37

Другие вопросы по тегам:

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