Tytuł niby mówi wszystko: Chciałbym, aby te schludne kolorowe kolumny wyjściu coś takiego ls -al
, powiedzmy, jak w odpowiedzi 10basetom jest na to pytanie .
8
Tytuł niby mówi wszystko: Chciałbym, aby te schludne kolorowe kolumny wyjściu coś takiego ls -al
, powiedzmy, jak w odpowiedzi 10basetom jest na to pytanie .
sed
lubawk
i wstawić sekwencję specjalną ANSI .Odpowiedzi:
Można to zrobić za pomocą
awk
. Niestety, ponieważ formatls -l
jest nieokreślony, nie jest możliwe wymyślenie rozwiązania, które będzie działać na każdym systemie, więc pewna korekta koloru, którego użyć, dla której kolumny będzie konieczna w niektórych systemach.Po pierwsze, chcemy zachować oryginalne przestrzenie używane przez
ls -l
. W przeciwnym razie wyrównanie kolumny będzie nieprawidłowe. Możemy to zrobić zFPAT
opcją, dzięki tej odpowiedzi SO :W
awk
, każdy parametr pozycyjny ($1
,$2
itp.) Odnosi się do jednego pola, tj. Jednej kolumny w bieżącym wierszu. CoFPAT
powyższa opcja nie jest przedefiniowanie każde pole, aby uwzględnić wszystkie poprzedzające przestrzenie, więc kiedyprint
to z powrotem utrzymuje przestrzenie więc kolumny pozostać w tym samym miejscu.Teraz możemy po prostu edytować każde pole, aby wstawić kod koloru , a następnie wydrukować edytowane dane wyjściowe:
Zauważ, że później każda kolumna jest przywracana do wartości domyślnych (
0
między[
am
). Jeśli chcesz, aby kolor był wyświetlany w wielu kolumnach, możesz pominąć ten kod. Osobiście wolę określać każdą kolumnę niezależnie.Możesz zdefiniować polecenie wielokrotnego użytku w swoim
.bashrc
. Na przykład:Może być konieczne zrestartowanie
bash
sesji (lub uruchomieniesource ~/.bashrc
), aby ta definicja funkcji mogła zostać uruchomiona.Stąd możesz po prostu zadzwonić
lsc
, co powinno dać ci pożądany efekt:źródło
--color=always
. Dopóki nie zastosujesz różnych kolorów w kolumnie z nazwą pliku ($9
w moim przykładzie),awk
powinieneś je przepuścić.--color=always
jest rozszerzeniem GNU, więc jeśli korzystasz z systemu innego niż GNU (np. MacOS, inne BSD), musisz zainstalować wersję GNU lub użyć alternatywy .Spowoduje to wydrukowanie drugiej kolumny
ls -alF
w kolorze czerwonym, od trzeciej do ósmej w kolorze niebieskim i dziewiątej w kolorze czarnym:Jest to tylko przykład. Możesz dostosować to do treści swojego serca.
Dla tych, którzy wolą kod rozłożony na wiele wierszy:
Detale
tput
to narzędzie do generowania szerokiej gamy kodów kontrolnych dla twojego terminala. Na przykładtput setaf n
wybór koloru planu pierwszegon
w którymn
może mieścić się w zakresie od 0 do 7Więcej informacji na temat
tput
możliwości kolorów można znaleźć tutaj .Definiuje się kod awk zmienne
black
,red
iblue
które zawierają kody zaciskowe dla czarnego, czerwony i niebieski, odpowiednio. Kody te są umieszczane na początku dowolnej kolumny, którą chcemy pokolorować.Jedna sztuczka polega na tym, że kody kolorów nie resetują się same. Tak więc, bez względu na ostatni kolor określony w jednej linii, o ile nie zostanie określone inne polecenie koloru, będzie domyślnym kolorem dla następnej linii.
źródło
awk
! Sugeruję także dodanie wzoru, aby zachować wyrównanie kolumn :)FPAT
sztuczka polegająca na utrzymywaniu prawidłowych odstępów.