Consulte el siguiente ajuste:
xfconf-query -c xfwm4 -p /general/tile_on_move -s true
Esto le permite colocar mosaicos en la ventana arrastrándola al lugar apropiado (arriba -la esquina derecha es un mosaico de 1/4 allí, el borde derecho de la pantalla es un mosaico de 1/2 allí, etc.. ).
Чтобы не использовать много памяти, используйте вложенные циклы.
for az1 in {A..Z}; do
for az2 in {A..Z} _; do
for az3 in {A..Z} _; do
for d1 in {0..9}; do
for d2 in {0..9}; do
printf "$az1$az2$az3-$d1$d2%i\n" {0..9}
done
done
done
done
done | sed 's/_*-0*/-/'
Я добавил символы подчеркивания для поддержки необязательных более коротких строк и удалил начальные нули, чтобы вы могли получить такие результаты, как A-1
и AB-12
, а также полный Формат ABC-123
. (Проверьте историю изменений, чтобы узнать, как это отменить.)
С bash вы можете использовать расширение фигурной скобки:
echo {A..Z}{A..Z}{A..Z}-{000..999}
Но , внимание. Эта команда создаст список из 26^3*1000
(17,5 млн) записей.
Как указывает хаос, для этого можно использовать расширение фигурной скобки. Не забывайте -
в середине, чтобы сделать их действительными в соответствии с вашим форматом, хотя:
echo {A..Z}{A..Z}{A..Z}-{000..999}
Если вам нужна одна запись в строке, вы можете заключить ее в цикл for
, например:
for i in {A..Z}{A..Z}{A..Z}-{000..999}
do
echo "$i"
done
Вы можете записать их все в файл, добавив > /path/to/file
после done
.
Если вы не хотите использовать цикл for
, вы также можете использовать tr
, чтобы он печатал по одной записи в строке:
echo {A..Z}{A..Z}{A..Z}-{000..999} | tr " " "\n"
Другой вариант — использовать printf
для печати в виде списка. Это сэкономит вам tr
.
printf '%s\n' {A..Z}{A..Z}{A..Z}-{000..999}
Хотя обычно для создания списков, подобных этому, можно использовать раскрытие фигурных скобок, это может быть достаточно большим, чтобы вызвать проблемы. Несмотря на то, что это всего лишь ~17 миллионов слов, Bash 4.4 не удается построить список на виртуальной машине с 2 ГБ памяти, и происходит сбой через 1,5 минуты без каких-либо результатов.
Возможно, что-то вроде Perl было бы лучше:
perl -le 'foreach $i ("AAA".."ZZZ") { foreach $j ("000".."999") { print "$i-$j" }} ; ' > plates
Список создается примерно за 5 секунд.
Если вам нужно сделать это в Bash, разделите задание на более мелкие циклы.
Тем не менее, мне интересно, есть ли лучший способ сделать то, чего вы на самом деле пытаетесь достичь. Если имеющиеся у вас данные не включают все 17 миллионов возможных пластин, вам, вероятно, не нужно хранить их все. Если это так, вы можете использовать что-то другое, кроме оболочки (, то есть базу данных ).