- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是我的脚本
fdisk -l > /tmp/fdisk.txt
DISK_NAME=$(cat /tmp/fdisk.txt | grep -w "Disk /dev" | awk '{print $2}' | cut -d ':' -f1)
echo disk name are : $DISK_NAME
DISK_SIZE=$(cat /tmp/fdisk.txt | grep -w Disk |grep -v "identifier" | awk '{print $3}' )
HEAD=$(cat /tmp/fdisk.txt | grep "heads" | awk '{print $1}')
SECTOR=$(cat /tmp/fdisk.txt | grep -w "sectors/track" | awk '{print $3}')
CYLINDER=$(cat /tmp/fdisk.txt | grep -w "cylinders" | awk '{print $5}')
TOTAL=$( cat /tmp/fdisk.txt | grep -w "total" | awk '{print $8}')
echo disk size are : $DISK_SIZE
echo Head are : $HEAD
echo Sector are : $SECTOR
echo Cylinder are : $CYLINDER
echo Total are : $TOTAL
输出是:
Disk /dev/mapper/openstackvm00--vg-root doesn't contain a valid partition table
Disk /dev/mapper/openstackvm00--vg-swap_1 doesn't contain a valid partition table
disk name are : /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/mapper/openstackvm00--vg-root /dev/mapper/openstackvm00--vg-swap_1
disk size are : 10.7 32.2 8589 10.7 40.5 1073
Head are : 255 64 86 255 255 255
Sector are : 63 51 1 63 63 63
Cylinder are : 1305 19275 195083 1305 4928 130
Total are : 20971520 62914560 16777216 20971520 79183872 2097152
在此输出中,我不需要前两行
Disk /dev/mapper/openstackvm00--vg-root doesn't contain a valid partition table
Disk /dev/mapper/openstackvm00--vg-swap_1 doesn't contain a valid partition table
我想要这样的输出
Device Name Size Head Sector Cylinder Total
/dev/sda 10 255 63 1305 20971520
/dev/sdb -- -- -- -- ---
/dev/sdc -- -- -- - -- - --
我怎么会变成这样?
fdisk -l 输出重定向到 Fdisk.txt 文件输出。 cat/tmp/fdisk.txt 文件 # 猫/tmp/fdisk.txt
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005b9c4
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 501758 20969471 10233857 5 Extended
/dev/sda5 501760 20969471 10233856 8e Linux LVM
Disk /dev/sdb: 32.2 GB, 32212254720 bytes
64 heads, 51 sectors/track, 19275 cylinders, total 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe3162587
Device Boot Start End Blocks Id System
/dev/sdb1 2048 62914559 31456256 8e Linux LVM
Disk /dev/sdc: 8589 MB, 8589934592 bytes
86 heads, 1 sectors/track, 195083 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xa4cdf171
Device Boot Start End Blocks Id System
/dev/sdc1 2048 16777215 8387584 83 Linux
Disk /dev/sdd: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3632934a
Device Boot Start End Blocks Id System
/dev/sdd1 2048 10487807 5242880 83 Linux
/dev/sdd2 10487808 14682111 2097152 8e Linux LVM
/dev/sdd3 14682112 15706111 512000 83 Linux
/dev/sdd4 15706112 15910911 102400 83 Linux
Disk /dev/mapper/openstackvm00--vg-root: 40.5 GB, 40542142464 bytes
255 heads, 63 sectors/track, 4928 cylinders, total 79183872 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/openstackvm00--vg-swap_1: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
最佳答案
这些
Disk /dev/mapper/openstackvm00--vg-root doesn't contain a valid partition table
Disk /dev/mapper/openstackvm00--vg-swap_1 doesn't contain a valid partition table
错误会打印到 stderr
,因此您需要将 stderr
重定向到 /dev/null
以消除它们,如下所示:
fdisk -l 2>/dev/null >/tmp/fdisk.txt
关于您的主要问题,虽然这在 shell 中当然可行,但您可能需要考虑使用 awk。这是一个例子:
$ cat t.sh
#!/bin/bash
awk '
BEGIN { FS="[[:space:]:,]+" }
/contain a valid partition table/ { next }
/^Disk [/]dev/ {
disk=$2
a[disk]["size"] = $5/1024/1024/1024
}
/heads.+sectors[/]track.+cylinders.+total.+sectors/ {
a[disk]["heads"] = $1
a[disk]["sectors"] = $3
a[disk]["cylinders"] = $5
a[disk]["total"] = $8
}
END {
format_header = "%-38s %10s %10s %10s %10s %10s\n"
format_row = "%-38s %7.1f GB %10s %10s %10s %10s\n"
printf format_header, "Device Name", "Size", "Head", "Sector", "Cylinder", "Total"
for (disk in a) {
printf format_row, disk, a[disk]["size"], a[disk]["heads"], a[disk]["sectors"], a[disk]["cylinders"], a[disk]["total"]
}
}' fdisk.txt
运行示例:
$ ./t.sh
Device Name Size Head Sector Cylinder Total
/dev/mapper/openstackvm00--vg-swap_1 1.0 GB 255 63 130 2097152
/dev/mapper/openstackvm00--vg-root 37.8 GB 255 63 4928 79183872
/dev/sda 10.0 GB 255 63 1305 20971520
/dev/sdb 30.0 GB 64 51 19275 62914560
/dev/sdc 8.0 GB 86 1 195083 16777216
/dev/sdd 10.0 GB 255 63 1305 20971520
您甚至可以使用进程替换来替换 fdisk.txt 以删除临时文件。替换
}' fdisk.txt
与
}' <(fdisk -l 2>/dev/null)
请注意,此信息也可能存在于 /proc
下的某个位置,可能可以更可靠、更方便地进行解析(我的 fdisk
输出与您的输出略有不同)。
关于linux - 使用 shell 脚本在同一行中打印两个变量输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30395472/
我相信我在子 shell 中调用 exit 会导致我的程序继续: #!/bin/bash grep str file | while read line do exit 0 done
我相信我在子 shell 中调用 exit 会导致我的程序继续: #!/bin/bash grep str file | while read line do exit 0 done
我有几个脚本,它们的第一部分看起来是一样的。这部分的功能是识别脚本在哪台机器上运行并相应地设置几个变量。它看起来像这样: ENV=`echo $LOGNAME | cut -c1-8` if
这是我正在尝试做的事情。我有 4 个 shell 脚本。脚本 1 需要先运行,然后是 2,然后是 3,然后是 4,并且它们必须按此顺序运行。脚本 1 需要运行(并在后台等待)2 才能正常运行,但是脚本
我有一个名为 a.sh 的脚本,其中的内容是: //a.sh: #!/bin/bash temp=0 while [ "$temp" -ne 500 ] do echo `date`
在snakemake中,使用shell()函数执行多个命令的推荐方式是什么? 最佳答案 您可以调用shell()多次内run规则块(规则可以指定 run: 而不是 shell: ): rule pro
我有一个 shell 脚本,我向其中传递了一些参数。Test1.sh -a 1 -b 2 -c“一二三” 在 Test1.sh 中,我按以下方式调用另一个 shell 脚本。Test2.sh $* 我
我有 2 个 shell 脚本。 第二个shell脚本包含以下函数第二个.sh func1 func2 first.sh 将使用一些参数调用第二个 shell 脚本, 将使用特定于该函数的一些其他参数
我有一个 Unix shell 脚本 test.sh。在脚本中,我想调用另一个 shell,然后从子 shell 执行 shell 脚本中的其余命令并退出 说清楚: test.sh #! /bin/b
我想在 shell 脚本中更改路径环境变量。路径变量需要在shell脚本执行后修改。 最佳答案 我知道有两种方法可以做到这一点。第一种是在当前 shell 的上下文中运行脚本: . myscript.
此 shell 脚本按预期运行。 trap 'echo exit' EXIT foo() { exit } echo begin foo echo end 这是输出。 $ sh foo.sh
我正在使用 vimshell在 vim 中执行命令 nnoremap vs :VimShellPop 使用此键映射,我可以打开 vim shell 并执行诸如“捆绑安装”之类的命令,然后 输入 exi
我想连接到不同的 shell(csh、ksh 等)并在每个切换的 shell 中执行命令。 下面是反射(reflect)我的意图的示例程序: #!/bin/bash echo $SHELL csh e
我目前正在尝试使用 BNF 和 LL 解析器在 C 中重新编写 shell。 否则,我需要知道 shell 运算符的优先级是什么| , > , > , & , ; ? 有没有人可以提供给我? 谢谢 最
不幸的是,我没有suspend 命令(busybox/ash)。但是我可以使用 kill -STOP $$ 从后台 shell (sh &) 返回到父 shell(以及 fg 之后)。 但是我不想输入
我需要知道,当用户切换到另一个 shell 时,通过单击它。 我试过 shellListener.shellDeactivated()但是当 shell 失去对它自己的控件的焦点时,会触发此事件,这意
file1.txt aaaa bbbb cccc dddd eeee file2.txt DDDD cccc aaaa 结果 bbbb eeee 如果能不区分大小写就更好了! 谢谢! 最佳答案 gre
我见过解压缩目录中所有 zip 文件的循环。但是,在运行此之前,我宁愿确保我将要运行的内容正常工作: for i in dir; do cd $i; unzip '*.zip'; rm -rf *.z
我对编程还很陌生,但我想知道 vim、emacs、nano 等 shell 文本编辑器如何能够控制命令行窗口。我主要是一名 Windows 程序员,所以可能在 *nix 上有所不同。据我所知,只能将文
我有一个包含第 7 列日期的文件,我的要求是将它与今天的日期进行比较,如果小于它,则删除该完整行。 此外,如果第 7 列中提到的任何日期超过 15 天,则将其修改为最多 15 天 下面的例子- now
我是一名优秀的程序员,十分优秀!