lsblk |grep -B1 -E "part|boot" |grep -E "^sd[a-z]+|^nvme" |awk '{print $1}') |sed 's/ /|/'
时间: 2023-09-26 21:10:33 浏览: 51
这是一个Linux命令,用于列出所有磁盘分区的设备名称,并将其格式化为一个用竖线分隔的字符串。
具体命令解释如下:
1. `lsblk`:列出所有块设备的信息。
2. `grep -B1 -E "part|boot"`:查找包含“part”或“boot”关键字的行,并输出该行及其前一行。
3. `grep -E "^sd[a-z]+|^nvme"`:在上一步的结果中,查找以“sd”开头后面跟着一个或多个小写字母的行,或者以“nvme”开头的行。
4. `awk '{print $1}'`:提取每行的第一个字段,即设备名称。
5. `sed 's/ /|/'`:将每个设备名称中的空格替换为竖线。
最终输出的字符串格式为:“/dev/sda1|/dev/sda2|/dev/nvme0n1p1|...”
相关问题
os_disk_symbol=$(echo $(lsblk |grep -B1 -E "part|boot" |grep -E "^sd[a-z]+|^nvme" |awk '{print $1}') |sed 's/ /|/') non_os_disk_set=$(lsscsi -g |-E "ATA|TOSHIBA" |awk '{print $(NF-1)}' |grep -Ev $os_disk_symbol) if [[ -n $non_os_disk_set ]];then for i in $(echo "$non_os_disk_set") do rotationRate=$(smartctl -i $i |awk -F":" '/Rotation Rate/{print $2}') if [[ $rotationRate =~ "Solid State Device" ]];then echo $i |awk -F"/" '{print $3}' >> ssd_symbol_set elif [[ $rotationRate =~ "rpm" ]];then echo $i |awk -F"/" '{print $3}' >> hdd_symbol_set fi done fi
这是一个 Shell 脚本,主要作用是获取当前系统中所有硬盘的信息,并将非系统盘的硬盘区分为 SSD 和 HDD 两类,并将它们的设备符号分别保存在 ssd_symbol_set 和 hdd_symbol_set 两个文件中。具体实现步骤如下:
1. 使用 lsblk 命令获取当前系统中所有硬盘的信息,并通过 grep 命令过滤出包含 "part" 或 "boot" 字段的行,然后使用 awk 命令提取出硬盘设备符号,并使用 sed 命令将多个设备符号合并为一个正则表达式。
2. 使用 lsscsi 命令获取所有 SCSI 设备的信息,并通过 awk 命令提取出硬盘设备符号,并使用 grep 命令过滤掉系统盘的设备符号。
3. 遍历所有非系统盘的设备符号,使用 smartctl 命令获取硬盘信息,并使用 awk 命令提取出硬盘类型(SSD 或 HDD),然后将设备符号保存到对应的文件中。
最终,执行完该脚本后,可以通过查看 ssd_symbol_set 和 hdd_symbol_set 文件来获取系统中所有 SSD 和 HDD 的设备符号。
disk_name=$(ls /sys/block | grep -E 'nvme*|sd*') OS_disk=$(lsblk |grep '/home$' | awk '{print$1}' | awk -F '-' '{print $2}' | tr -d p8) for disk in $disk_name do if [[ "${OS_disk}" == "${disk}" ]]; then echo "ignore $disk : system disk." continue else mkfs.ext4 -F /dev/$disk & fi done
这段代码的作用是列出系统中的所有磁盘,并为除系统磁盘外的每个磁盘创建一个 ext4 文件系统。
具体来说,该代码首先使用 ls 命令列出 /sys/block 目录下的所有块设备,并使用 grep 命令筛选出名称以 nvme 或 sd 开头的设备。然后,它使用 lsblk 命令查找挂载在 /home 目录下的设备,并从该输出中提取设备名称(如 sda 或 nvme0n1)。接下来,该代码循环遍历所有筛选出的磁盘,并使用 mkfs.ext4 命令为每个磁盘创建一个 ext4 文件系统。但是,如果磁盘与系统磁盘相同,则该代码将忽略该磁盘并跳过处理。