Você está chamando sed
de bash
para poder usar o bash para evitar a repetição das classes de caracteres. Tudo dentro de aspas duplas é expandido:
rwx='\([r-]\)\([w-]\)\([x-]\)'
ls -la | sed "s/^\([d-]\)$rwx$rwx$rwx/'echo -e \"$EMG$EMY$EMR$EMC$NONE\"'/"
Mas não acho que procurar drwx
esteja correto. E se o arquivo for um link simbólico? Isso começará com l
. E se for um diretório "fixo" (por exemplo, /tmp
), isso terminará com t
em vez de x
, etc.
Por que não apenas
ls -la | sed "s/^\(.\)\(...\)\(...\)\(...\)/'echo -e \"$EMG$EMY$EMR$EMC$NONE\"'/""
Por fim, se você alterar a forma de declarar suas cores, não precisará do echo -e
:
domagic() {
local NONE=$'3[0m' # unsets color to term's fg color
# regular colors
local K=$'3[0;30m' # black
local R=$'3[0;31m' # red
local G=$'3[0;32m' # green
local Y=$'3[0;33m' # yellow
local B=$'3[0;34m' # blue
local M=$'3[0;35m' # magenta
local C=$'3[0;36m' # cyan
local W=$'3[0;37m' # white
# emphasized (bolded) colors
local EMK=$'3[1;30m'
local EMR=$'3[1;31m'
local EMG=$'3[1;32m'
local EMY=$'3[1;33m'
local EMB=$'3[1;34m'
local EMM=$'3[1;35m'
local EMC=$'3[1;36m'
local EMW=$'3[1;37m'
# background colors
local BGK=$'3[40m'
local BGR=$'3[41m'
local BGG=$'3[42m'
local BGY=$'3[43m'
local BGB=$'3[44m'
local BGM=$'3[45m'
local BGC=$'3[46m'
local BGW=$'3[47m'
#do magic here
ls -la | sed "s/^\(.\)\(...\)\(...\)\(...\)/$EMG$EMY$EMR$EMC$NONE/"
}