Αν χρησιμοποιείτε Linux για κάμποσο καιρό, σίγουρα ξέρετε την εντολή cat
με την οποία βλέπουμε τα περιεχόμενα ενός αρχείου στο Τερματικό. Όμως η cat απλώς “τυπώνει” ό,τι έχει μέσα το αρχείο, χωρίς έξτρα φρου-φρου. Εδώ έρχεται το bat
, ένα ακόμα εργαλείο της γραμμής εντολών που κάνει τα ίδια πράγματα με τη cat αλλά με συντακτικό χρωματισμό, paging, αρίθμηση γραμμών και git integration. Δεν είναι προεγκατεστημένο στο Linux αλλά εγκαθίσταται πανεύκολα στις περισσότερες διανομές Linux.
Το bat υποστηρίζει τις περισσότερες γλώσσες προγραμματισμού (C/C++, JS, Python κλπ), γλώσσες markup (html, md κλπ) και format αρχείων (π.χ. JSON) και προβάλλει τον κώδικα με όλη την ομορφιά που έχουμε συνηθίσει σε προηγμένους text editors.
Π.χ. Python
Javascript
JSON
Ωραίο, έτσι; Και εμφανίζει αυτόματα τους αριθμούς γραμμών. Εκτός από τον συντακτικό χρωματισμό, το bat "μιλάει" με το git (αν το αρχείο ανήκει σε κάποιο repository) για να δείξει ό,τι αλλαγές έχουμε κάνει σε σχέση με το τελευταίο commit (με + οι νέες γραμμές, με ~ οι αλλαγές):
Α, και το ωραίο με την bat είναι ότι έχει αυτόματο paging, αν το αρχείο είναι μεγαλύτερο από μια οθόνη. Δηλαδή στέλνει τα περιεχόμενα αυτόματα σε έναν pager όπως η εντολή less ώστε να μη χρειάζεται να κάνουμε εμείς πια το γνωστό:
cat longfile.cpp | less
αλλά να αρκεί απευθείας:
bat longfile.cpp
Και, voila, το bat κάνει αυτόματα το paging για εμάς. Γλυτώνεις 7 χτυπήματα στο πληκτρολόγιο κάθε φορά, δεν το λες και λίγο :)
Φυσικά, το bat εξακολουθεί υποστηρίζει και όλα τα γνωστά κόλπα του cat όπως το concatenation:
bat header.md content.md footer.md > document.md
Επίσης, στα έξτρα του bat πρέπει να σημειώσουμε τη δυνατότητα να δείχνει μη-εκτυπώσιμους χαρακτήρες με την παράμετρο -A, π.χ. με την bat -A ~/path/to/main.cpp
βλέπω να τυπώνονται τα εξής:
Tip: Επειδή οι αριθμοί των γραμμών και τα χρώματα του συντακτικού χρωματισμού μπορούν να δημιουργήσουν προβλήματα όταν κάνετε redirect το output του bat σε κάποιο άλλο πρόγραμμα, καλό είναι να έχετε υπόψη την παράμετρο -p, η οποία πρακτικά ακυρώνει όλα αυτα και τυπώνει απλό κείμενο όπως ακριβώς θα έκανε η cat. Εναλλακτικά, αν έχετε εγκατεστημένη την xclip, στέλνετε το αποτέλεσμα στην xclip και "καθαρίσατε":
bat main.cpp | xclip
Εγκατάσταση του bat
Αντίθετο με την cat, το bat δεν είναι προεγκατεστημένο στο Linux αλλά υπάρχει στα αποθετήρια των περισσότερων διανομών και εγκαθίσταται πανεύκολα. Στο Ubuntu 22.04 και Debian 11 υπάρχει η έκδοση 0.12.1 που εγκαθίσταται με:
sudo apt install bat
Προσοχή όμως: Αν εγκαταστήστε το bat με αυτόν τον τρόπο, τότε η εντολή γίνεται batcat
και όχι bat (γιατί υπάρχει κάποιο άλλο πρόγραμμα με το ίδιο όνομα).
Εναλλακτικά όμως, μπορείτε και ίσως είναι πιο εύκολο να κατεβάσετε το πακέτο του bat από το Github (https://github.com/sharkdp/bat/releases) όπου θα βρείτε και την πιο πρόσφατη έκδοση, η οποία υποστηρίζει ακόμα περισσότερα file formats. A, ναι, υπάρχει έκδοση και για Windows/MacOS. :)
- Συνδεθείτε ή εγγραφείτε για να σχολιάσετε