Я изначально думал, что мне придется создать дополнительный файл, но я мог бы просто закодировать исходный файл в 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
Этот метод переключения раскладок клавиатуры устарел. Новый, чуть более загадочный способ:
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')]
Этот метод переключения раскладок клавиатуры устарел. Новый, чуть более загадочный способ:
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')]
Этот метод переключения раскладок клавиатуры устарел. Новый, чуть более загадочный способ:
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')]