首页 > 解决方案 > 使用 DF、Grep、Awk 列出卷 | 重击壳

问题描述

尝试打印以 /Volumes/ 开头的所有条目,这将列出 mac 上已安装的卷。请参阅更新。

IFS=$'\n' read -r -d '' -a volumes < <(
  df  | egrep -o '/Volumes/.*'
)

echo "${volumes}"

更新 1:这有效,但在每个新行之前打印一个空格。

#!/usr/bin/env bash


IFS=$'\n' read -r -d '' -a volumes < <(
  df | egrep -oi '(\s+/Volumes/\S+)'
)

printf "%s\n" "${volumes[@]}"

更新 2:有效,但不打印带有空格的卷名

IFS=$'\n' read -d '' -ra volumes < <(
df | awk 'index($NF, "/Volumes/")==1 { print $NF }'
)

printf '%s\n' ${volumes[@]}

更新 3:在新行上打印带有空格的卷名的第二部分

IFS=$'\n' read -d '' -ra volumes < <(
df | awk -F ' {2,}' 'index($NF, "/Volumes/")==1 { print $NF }'
)

printf '%s\n' ${volumes[@]}

解决方案:

测试平台: macOS Catalina

IFS=$'\n' read -d '' -ra volumes < <(
df | sed -En 's~.* (/Volumes/.+)$~\1~p'
)

printf '%s\n' "${volumes[@]}"

测向输出

Filesystem    512-blocks       Used  Available Capacity iused       ifree %iused  Mounted on
/dev/disk1s5   976490576   21517232  529729936     4%  484332  4881968548    0%   /
devfs                781        781          0   100%    1352           0  100%   /dev
/dev/disk1s1   976490576  413251888  529729936    44%  576448  4881876432    0%   /System/Volumes/Data
/dev/disk1s4   976490576   10487872  529729936     2%       6  4882452874    0%   /private/var/vm
map auto_home          0          0          0   100%       0           0  100%   /System/Volumes/Data/home
/dev/disk7s1       40880       5760      35120    15%     186  4294967093    0%   /private/tmp/tnt12079/mount
/dev/disk8s1       21448       1560      19888     8%       7  4294967272    0%   /Volumes/usb drive
/dev/disk6s1  9766926680 8646662552 1119135456    89%   18530 48834614870    0%   /Volumes/root
/dev/disk2s1    60425344   26823168   33602176    45%  419112      525034   44%   /Volumes/KINGS TON

标签: regexbashawkgreplinux-disk-free

解决方案


您可以在以下位置使用此管道OSX

IFS=$'\n' read -d '' -ra volumes < <(
df | sed -En 's~.* (/Volumes/.+)$~\1~p'
)

检查数组内容:

printf '%s\n' "${volumes[@]}"

或者

declare -p volumes

declare -a volumes=([0]="/Volumes/Recovery" [1]="/Volumes/Preboot")

推荐阅读