Как получить точку монтирования USB-накопителя без использования awk? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть этот скрипт, который использует awk, чтобы найти usb, а затем проанализировать файлы из него. Он находит это с помощью следующей команды, которую я нахожу очень грязной.

THUMBDRIVE=$(df | tail - 1 | awk '{print $6}')

Мой вопрос заключается в том, есть ли другой способ сделать эту функцию без использования запутанного языка awk. Я понимаю, что могу посмотреть USB с помощью команд, подобных приведенным ниже. Однако я не могу заставить их вести себя так, как я хочу, чтобы они нравились выше. Я считаю, что должен быть более простой способ сделать это, у кого-нибудь есть четкий способ выполнить это?

 ls /dev/sda* 
 df -h
 lsblk

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

awk далеко не запутан, используйте его вместо tail и напечатайте $6 последней записи:

$ thumbdrive=$(df | awk 'END{print $6}')

Мой вывод для echo $thumbdrive: /mnt

Сохраняется ли $0$6) в END , является дискуссионным , но работает на GNU awk, mawk, original-awk и Busybox awk. Если вы хотите быть в безопасности, сохраните $6 в переменной и используйте его в следующем раунде:

$ thumbdrive=$(df | awk '{var=$6}END{print var}')

strace 'ing df открыл:

...
open("/proc/self/mountinfo", O_RDONLY)  = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "16 21 0:16 / /sys rw,nosuid,node"..., 1024) = 1024
...

, поэтому, если вы работаете в Linux, вы также можете сбросить df:

$ awk 'END{print $5}' /proc/self/mountinfo 
/mnt

См. man proc для получения дополнительной информации об этом.

0 голосов
/ 25 октября 2019

Если у вас есть GNU df, вы можете использовать его опцию --output:

thumbdrive=$(df --output=target | tail -n 1)

Это печатает только целевой столбец.

Скорее всего, ваша команда должна была сказать tail -1, кстати;tail - 1 будет читать со стандартного ввода, а затем попытаться открыть файл с именем 1. Синтаксис -1 все еще поддерживается по соображениям совместимости, но вместо этого рекомендуется -n 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...