Управление миссией в стиле OSX для Linux

С оболочками с csh-, такими как раскрытие скобок (csh, tcsh, zsh, bash, pdksh, ksh93, yash -o braceexpand, fish), вы можете сделать:

$ echo 1 2 3 4 5 6 7 8 9 | sed '-es/ /x/'{7,6,5}
1 2 3 4 5x6x7x8 9 

Расширение фигурной скобки расширяет это до

sed '-es/ /x/'7 '-es/ /x/'6 '-es/ /x/'5

Мы делаем это в обратном порядке, чтобы одна замена не влияла на следующую.

Вы можете сделать это диапазоном с формой {x..y}из zsh(, теперь также поддерживаемой bash, ksh93,yash -o braceexpand)

$ echo 1 2 3 4 5 6 7 8 9 | sed '-es/ /x/'{7..3}
1 2 3x4x5x6x7x8 9

или комбинации обеих форм:

$ echo 1 2 3 4 5 6 7 8 9 | sed '-es/ /x/'{{7..3},1}
1x2 3x4x5x6x7x8 9

С помощью zshвы можете поместить их в массив:

$ substs=({7..5} 3 1)
$ echo 1 2 3 4 5 6 7 8 9 | sed '-es/ /x/'$^substs
1x2 3x4 5x6x7x8 9

И пусть zshотсортирует их в правильном обратном числовом порядке:

$ substs=(1 8 6)
$ echo 1 2 3 4 5 6 7 8 9 | sed '-es/ /x/'${(On)^substs}
1x2 3 4 5 6x7 8x9

С помощью zshили bashвы также можете выполнить:

$ substs=({7..5} 3 1)
$ echo 1 2 3 4 5 6 7 8 9 | sed "${substs[@]/#/-es: :x:}"
1x2 3x4 5x6x7x8 9

Сfish(и GNU seq),вы можете делать такие вещи, как:

$ echo 1 2 3 4 5 6 7 8 9 | sed '-es/ /x/'(seq 6 -1 3)
1 2 3x4x5x6x7 8 9

Или:

$ set substs 5 3 1
$ echo 1 2 3 4 5 6 7 8 9 | sed '-es/ /x/'$substs
1x2 3x4 5x6 7 8 9
Массивы

(fishрасширяются, как в rcили zsh -o rcexpandparamв данном примере ).


С помощью perlвы можете сделать что-то вроде:

$ echo 1 2 3 4 5 6 7 8 9 | perl -pe 'BEGIN{$h{$_}=1 for (3,5..8)}
                                     my $n; s/ /$h{++$n} ? "x" : $&/ge'
1 2 3x4 5x6x7x8x9
0
15.03.2020, 23:09
1 ответ

Я не совсем понимаю, что вы имеете в виду, но рабочие области — довольно стандартная концепция оконных менеджеров. Это может помочь.


Если вы хотите протестировать другой WM, и i3, и XFCE могут иметь то, что вы описываете.

1
28.04.2021, 23:21

Теги

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