Еще одно решение, использующее sed
и экранирование ANSI с использованием регулярного выражения Стивена Харриса:
<file sed "1s/\(.*\)/\x1b[1m\1\x1b[0m/" | column -s\; -t
где \x1b
— шестнадцатеричное значение восьмеричного числа \033
, которое используется в escape-последовательности ANSI, например
printf '\033[1m%s\033[0m\n' hello
# or
printf '\x1b[1m%s\x1b[0m\n' world
Предполагая, что вы используете bash, вам следует обратиться к справочнику по GNU Bash:
($@) Expands to the positional parameters, starting from one.
Кроме того, псевдонимы не могут получать позиционные параметры. Вместо этого вы должны использовать функции с соответствующими позиционными параметрами .
Вот что вы должны определить:
tcreate(){
bin/kafka-topics.sh --create --topic "$1" --partitions "$2" --replication-factor "$3" --zookeeper localhost:2181
}
так что каждый аргумент заменяется на свое конкретное место в команде. Я бы также рекомендовал использовать полные пути для файлов сценариев оболочки, потому что относительные пути сильно зависят от текущего каталога, и функция будет работать только в определенном текущем каталоге.
Кроме того, ваш пример команды tcreate 1 1
также вызовет ошибку, поскольку третий параметр отсутствует, если вы ввели его правильно.
Вот что мне подходит:
alias ktc='f(){ bin/kafka-topics.sh --create --topic "$1" --partitions "$2" --replication-factor "$3" --zookeeper localhost:2181; unset -f f; }; f'
Затем я ввел команду в терминал:
$ ktc t_name 1 1