簡體   English   中英

如何在不使用 awk 的情況下獲取 USB 驅動器的安裝點?

[英]How can I get the mount point of my USB drive without using awk?

我有這個腳本,它使用 awk 來查找 usb,然后從中解析文件。 它使用以下命令找到它,我發現它真的很亂。

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

我的問題是,如果不使用 awk 的混淆語言,是否還有另一種方法可以做到這一點 function。 我知道我可以使用以下命令查找 USB。 但是,我無法讓它們按照我真正希望他們喜歡的方式行事。 我相信必須有一種更簡單的方法來做到這一點,有人有明確的方法來執行此操作嗎?

 ls /dev/sda* 
 df -h
 lsblk

如果你有 GNU df ,你可以使用它的--output選項:

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

這僅打印目標列。

順便說一句,您的命令可能應該說tail -1 tail - 1將從標准輸入中讀取,然后嘗試打開一個名為1的文件。 出於兼容性原因,仍然支持-1語法,但鼓勵使用-n 1

awk 遠沒有被混淆,而是用它來替換tail並打印最后一條記錄的$6

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

我的echo $thumbdrive的 output 是: /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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM