Voglio solo dire la terza riga di df -h
output.
Che tipo di comando dovrei usare?
Voglio solo dire la terza riga di df -h
output.
Che tipo di comando dovrei usare?
Risposte:
Il df
comando accetta effettivamente un argomento che identifica il filesystem desiderato. Quindi potresti usare, per esempio, df /home
o df /dev/sda3
.
Se intendi analizzare l'output di uno script, ti consigliamo di utilizzarlo df -P
per garantire che non venga mai eseguito il wrapping su più righe. Quindi, ad esempio, potresti usare df -Ph /home | tail -n +2
(ma se stai analizzando l'output di uno script, fai attenzione alla possibilità di nomi di file con spazi)
df /home
fornisce un'intestazione. Stai interpretando lo scopo dell'utente. Potresti avere ragione. Potresti sbagliarti, chi lo sa?
tail -n +2
rimuove l'intestazione.
È possibile utilizzare una combinazione di head
e tail
:
df -h | head -3 | tail -1
O
df -h | tail -n +3 | head -1
Si noti che, df
consente di filtrare l'output dalle opzioni di df
se stesso, è necessario esaminare quelli prima di utilizzare qualsiasi comando esterno.
Dai un'occhiata man df
.
Awk è uno strumento di elaborazione del testo, quindi è appropriato per questa attività
df -h | awk 'NR == 3'
Suppongo che non stai necessariamente cercando la terza linea, ma la linea che menziona un disco specifico (ad es /dev/sda3
) o un punto di montaggio specifico (ad esempio /home
).
Quindi, invece di visualizzare solo la terza riga, che non è sicura perché l'ordine di output potrebbe cambiare e potresti ottenere un risultato diverso, puoi filtrare l'output in base al contenuto e mostrare solo le righe che corrispondono a un modello specifico o contengono una parola chiave.
Il tuo strumento per questo è grep
.
Ad esempio, se si desidera la riga sul dispositivo /dev/sda3
, digitare:
df -h | grep '/dev/sda3'
Se vuoi che la riga menzioni la tua home directory come punto di montaggio, usa:
df -h | grep '/home'
df -h /dev/sda3
oppure df -h /home
(quest'ultimo funziona anche se non è un mount point).
Puoi anche usare perl
:
df -h | perl -ne 'print if $.==3'
Il $.
è il numero di riga corrente, così da poter stampare la linea ennesimo con perl -ne 'print if $.==N'
.
La mia prima idea sarebbe una costruzione testa-coda.
Esempio:
df -h | head -3 | tail -1
head -3
provoca l'arresto dell'uscita dopo tre righe e produce tail -1
solo l'ultima riga.
In alternativa, se sai come apparirà l'output, puoi anche usare grep
per trovare linee contenenti una determinata stringa.