$(ls -lt ${pwd}/ | awk '/^-/ {print $NF}') 是什么意思?awk后面去掉是什么意思
时间: 2024-05-25 07:12:08 浏览: 216
这是一个 Linux 命令,它的作用是列出当前目录下所有的文件和子目录,并按照最后修改时间的先后顺序进行排序。具体解释如下:
- `ls` 是列出目录内容的命令。
- `-lt` 是 `ls` 命令的两个选项,表示按照修改时间的先后顺序进行排序,并以长格式输出文件信息。
- `${pwd}/` 表示当前目录。
- `|` 是管道符,用于将 `ls` 命令的输出传递给下一个命令。
- `awk` 是一个文本处理工具,用于对文本进行格式化处理。
- `'/^-/ {print $NF}'` 是 `awk` 命令的一个模式,表示只选择以 `-` 开头的行,然后输出该行的最后一个字段,即文件名。
如果去掉 `awk` 命令,则只会输出当前目录下的所有文件和子目录,不会进行排序。
相关问题
#!/bin/bash CPWD=$(cd $(dirname $0);pwd) cd $CPWD rm -f ssd_symbol_set hdd_symbol_set nvme_symbol_set filter_ssd_hdd_nvme_set() { rm -f ssd_symbol_set hdd_symbol_set nvme_symbol_set 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 nvme_info_set=$(nvme list |grep -E "nvme[0-9]+n1") if [[ -n $nvme_info_set ]];then echo "$nvme_info_set" |awk '{print $1}' |awk -F"/" '{print $3}' > nvme_symbol_set fi } hdd_parallel_fio_test() { # multi hdd fio test if [ -s hdd_symbol_set ];then for dev in $(cat hdd_symbol_set) do nohup &>/dev/null bash hdd_raw_fio_test.sh $dev & done wait mkdir -p $CPWD/hdd_fio_log mv hdd_sd*_*.log $CPWD/hdd_fio_log fi } ssd_parallel_fio_test() { # multi sata ssd fio test if [ -s ssd_symbol_set ];then for dev in $(cat ssd_symbol_set) do nohup &>/dev/null bash ssd_raw_fio_test.sh $dev & done wait mkdir -p $CPWD/ssd_fio_log mv ssd_sd*_*.log $CPWD/ssd_fio_log fi } nvme_parallel_fio_test() { # multi nvme ssd fio test if [ -s nvme_symbol_set ];then for dev in $(cat nvme_symbol_set) do nohup &>/dev/null bash ssd_raw_fio_test.sh $dev & done wait mkdir -p $CPWD/nvme_fio_log mv ssd_nvme*_*.log $CPWD/nvme_fio_log fi } filter_ssd_hdd_nvme_set #hdd_parallel_fio_test #ssd_parallel_fio_test nvme_parallel_fio_test
这是一个 Shell 脚本,主要作用是对系统中的 SSD、HDD 和 NVMe 进行 FIO 性能测试,并将测试结果保存在对应的日志文件中。具体实现步骤如下:
1. 定义了一个函数 filter_ssd_hdd_nvme_set,该函数的作用是获取系统中所有 SSD、HDD 和 NVMe 的设备符号,并保存在对应的文件中。
2. 定义了三个函数 hdd_parallel_fio_test、ssd_parallel_fio_test 和 nvme_parallel_fio_test,分别用于对系统中的 HDD、SSD 和 NVMe 执行 FIO 性能测试,并将测试结果保存在对应的日志文件中。
3. 在执行主函数时,首先调用 filter_ssd_hdd_nvme_set 函数获取 SSD、HDD 和 NVMe 的设备符号,然后分别调用 hdd_parallel_fio_test、ssd_parallel_fio_test 和 nvme_parallel_fio_test 函数对它们进行 FIO 性能测试。
4. 在执行 FIO 测试时,使用 nohup 命令将测试脚本在后台执行,并将输出重定向到 /dev/null,以避免输出影响测试结果。
5. FIO 测试完成后,将测试日志文件移动到对应的目录中,以便后续分析。
最终,执行该脚本后,可以对系统中的所有 SSD、HDD 和 NVMe 进行 FIO 性能测试,并将测试结果保存在对应的日志文件中,方便后续分析和比较。
pwd | awk -F/ '{print $NF-1}' 这个命令为什么输出-1
这个命令的作用是获取当前工作目录,并通过管道将其传递给 awk 命令进行处理。在 awk 命令中,-F/ 指定了分隔符为斜杠 (/),然后通过打印 $NF-1,输出路径中倒数第二个斜杠后的内容。
然而,输出结果为 -1 是因为在这个命令中使用了数学运算符,awk 尝试将字符串转换为数字进行计算。由于 $NF 是字符串类型,它表示最后一个字段,而不是一个数字。当尝试将字符串类型的字段减去 1 时,awk 会将其转换为数字类型,但字符串无法转换为有效的数字,因此结果为 -1。
如果你想要输出倒数第二个斜杠后的内容,可以简化命令为:
```bash
basename "$(dirname "$(pwd)")"
```
这个命令使用了 dirname 和 basename 命令来获取当前工作目录的上级目录,并输出上级目录的名称。这样就可以避免 awk 命令中的数值计算问题。
阅读全文