Instalacion

git clone https://github.com/arduino/arduino-cli    
cd arduino-cli
bash install.sh  
cd bin/  
sudo mv arduino-cli /usr/bin  

Agregar y descargar un indice adicional:

arduino-cli core update-index --additional-urls https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Iniciar la configuracion:

arduino-cli config init
arduino-cli config dump --verbose 

Cuando inicias la configuracion te crea un archivo en ~/.arduino/arduino-cli.yaml podes editar ese archivo y agregar la URL del indice en ese archivo en vez de usar –additional-urls como se demostro en el paso 1.

Configurando arduino-cli para usarlo con ESP32

Buscar core:

arduino-cli core search esp32

Instala el ESP32 Core:

arduino-cli core install esp32:esp32

Podes buscar el FQBN (necesario para compilar) usando el comando

arduino-cli board search esp32
arduino-cli board details -b <Tu FQBN>

Crea un nuevo sketch:

arduino-cli sketch new ejemplo
cd ejemplo

No hace falta si ya tenes un archivo ino. Directamente pasa al siguiente paso.

Para compilar el sketch:

arduino-cli compile --fqbn esp32:esp32:esp32 .

Para subirlo al esp32:

arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:esp32 .

Para monitorearlo:

screen /dev/ttyUSB0 115200

Buscar librerias:

arduino-cli lib search DH11

Instalando librerias:

arduino-cli lib install "DHT sensor library"

Para compilar y subir:

arduino-cli compile --fqbn esp32:esp32:esp32 -u -p /dev/ttyUSB0