> ## Content Index
> Fetch the complete content index at: https://blog.craftbytes.it/llms.txt
> Use this file to discover other available public pages before exploring further.

# 5 comandi bash che uso ogni settimana per il supporto IT (Linux e macOS)
- URL: https://blog.craftbytes.it/5-comandi-bash-che-uso-ogni-settimana-per-il-supporto-it-linux-e-macos/
- Published: 2026-07-07T19:36:18.000Z
- Updated: 2026-07-19T13:20:00.000Z
- Description: Cinque comandi bash che apro ogni settimana nel terminale per il supporto IT: sed, awk, find, date e le differenze tra GNU e BSD che fanno impazzire chi lavora sia su Linux che su macOS.
- Author: Emanuele
- Tags: bash, linux, macos, sysadmin, terminal, tools

Faccio assistenza IT su ambienti misti: server Linux in produzione, Mac dei colleghi, VM ovunque. Ogni tanto lancio un comando su macOS pensando che si comporti come su Linux, e non è così. macOS usa i tool BSD, Linux i tool GNU. Stessa sintassi, comportamento diverso. Ecco i 5 comandi che uso più spesso, con la differenza da conoscere per non perdere tempo a debuggare l'ovvio.

## 1\. Trovare chi occupa una porta

```bash
# Linux
sudo ss -tulpn | grep :443

# macOS (ss non esiste)
sudo lsof -iTCP:443 -sTCP:LISTEN

```

Su Linux `ss` ha sostituito `netstat` da anni, su macOS non c'è: `lsof` fa lo stesso lavoro con sintassi diversa. Se lavori su entrambi, vale la pena tenere a mente entrambe le forme invece di cercarle ogni volta.

## 2\. Sostituire testo in un file al volo

```bash
# Linux (GNU sed)
sed -i 's/vecchio/nuovo/g' config.yml

# macOS (BSD sed, richiede un argomento per il backup)
sed -i '.bak' 's/vecchio/nuovo/g' config.yml

```

Questo è quello che mi ha fatto perdere più tempo in assoluto. Su BSD sed `-i` senza argomento restituisce un errore criptico, o peggio, se sbagli sintassi, ti sovrascrive il file con un backup dal nome strano. La forma `sed -i.bak` (senza spazio tra i due) funziona su entrambi i sistemi ed è quella che ormai scrivo di default.

## 3\. Data e ora con offset

```bash
# Linux (GNU date)
date -d "+1 day" "+%Y-%m-%d"

# macOS (BSD date)
date -v+1d "+%Y-%m-%d"

```

Utile per script di retention, pulizia log, scadenze certificati. Le flag sono completamente diverse: `-d` su Linux prende una stringa descrittiva, `-v` su macOS vuole un formato tipo `+1d`, `-2H`, `+30M`. Se scrivi script cross-platform, spesso conviene installare `coreutils` via Homebrew su Mac (`brew install coreutils`) e usare `gdate` per avere la sintassi GNU anche lì.

## 4\. Cercare file per profondità

```bash
# Funziona identico su entrambi
find . -maxdepth 1 -type f -name "*.log"

```

Qui la trappola è al contrario: `-maxdepth` funziona uguale su Linux e macOS, ma `-d` (usato per "depth-first" in entrambi) non va confuso con `-maxdepth`. Se lo scrivi per sbagliare, `find` ti risponde con un errore poco chiaro tipo "paths must precede expression". Un errore che ho visto fare (e fatto) più di una volta scrivendo troppo in fretta.

## 5\. Editing in-place con awk

```bash
# Linux (GNU awk 4.1.0+)
awk -i inplace '{ print toupper($0) }' file.txt

# macOS (BSD awk, niente -i inplace)
awk '{ print toupper($0) }' file.txt > tmp && mv tmp file.txt

```

`awk -i inplace` esiste solo su GNU awk recente. Su macOS l'awk di sistema è più datato e non lo supporta: la soluzione più portabile resta il vecchio trucco del file temporaneo, che funziona ovunque senza dipendere dalla versione installata.

---

**La lezione generale**: se scrivi script che devono girare sia su server Linux che su Mac dei colleghi, o installi `coreutils`/`gnu-sed`/`gawk` via Homebrew per avere un comportamento uniforme, oppure testi esplicitamente su entrambi prima di fidarti. "Funziona sul mio Mac" non vuol dire "funziona in produzione".

Se lavori su server Linux e vuoi portare questi strumenti in un ambiente containerizzato, leggi [Docker in produzione per sysadmin](https://blog.craftbytes.it/docker-in-produzione-per-sysadmin/): Compose, volumi e restart policy spiegati per chi già conosce il terminale.