小编Fre*_*ddy的帖子

允许在文件上存储自定义元数据的文件系统?

Linux 已经用文件存储了大量元数据。例如所有者、权限、文件名、校验和(在某些文件系统中)以及磁盘上的位置等基本数据。

是否有任何文件系统(例如 btrfs、zfs、ext*)允许您存储额外的元数据?

filesystems file-metadata

4
推荐指数
1
解决办法
3195
查看次数

awk 字段的操作

我有一个包含完整路径的文件:

/home/usr/file_name_delimited_by_underscore_123.txt  
/home/usr/another_example_456.rar
Run Code Online (Sandbox Code Playgroud)

我想从没有扩展名的路径中打印文件名,并在它旁边打印最后一个_.

输出:

file_name_delimited_by_underscore_123 123
another_example_456 456
Run Code Online (Sandbox Code Playgroud)

我想出了一种使用管道 awk 命令获得所需输出的方法:

cat file | awk -F[/.] '{print $(NF-1)}' | awk -F_ '{print $0" "$NF}'
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有管道的情况下实现这一目标?

我的问题归结为是否可以对 awk 解析的字段执行操作?

谢谢你的帮助。

awk

4
推荐指数
2
解决办法
263
查看次数

如何打印导致脚本失败的失败命令?

我正在使用-e旗帜。

用法:

#!/bin/bash -e
Run Code Online (Sandbox Code Playgroud)

解释:

-e      Exit immediately if a simple command (see SHELL GRAMMAR above) exits with a non-zero status
Run Code Online (Sandbox Code Playgroud)

当脚本中的某个命令失败时,脚本退出并且不会继续执行其余命令,这正是我想要的。

但是,失败仅包含失败命令选择公开的信息。

有时失败的命令非常复杂,例如带有许多标头的卷曲。

如何打印失败的命令?我的意思是,在失败后立即。

我知道我可以使用-xbash 标志,但它会打印所有已执行的命令。我只想看看失败的那个。

bash command exit-status

4
推荐指数
1
解决办法
1506
查看次数

如何使用 crontab 将 CTRL+C 发送到 tmux 窗格?

如何使用 crontab将CTRL+发送C到我的 tmux 选项卡?我有以下内容,它适用于发送命令,但我不确定如何向它发送CTRL+ C

0,30 * * * * /usr/bin/tmux send-keys -t 0 "CTRL+C"
Run Code Online (Sandbox Code Playgroud)

cron tmux

3
推荐指数
1
解决办法
1099
查看次数

如何结合这两个grep语句

我需要选择非空行且不以//. 我可以执行两个单独的 grep 命令,如下所示:

提取非空行的行:

grep -v -E '^$' test.txt 
Run Code Online (Sandbox Code Playgroud)

提取不以 开头的行//

grep -v '//' test.txt 
Run Code Online (Sandbox Code Playgroud)

如何将两个命令合二为一?

grep search regular-expression files

2
推荐指数
1
解决办法
656
查看次数

重复内核参数的评估顺序

如果内核命令行包含同一参数的多个设置,如何评估它们?

例子:

nohz=off ... nohz=on
Run Code Online (Sandbox Code Playgroud)

哪个设置“获胜”?最后一个?

每个参数的评估逻辑是否相同?

linux-kernel

2
推荐指数
1
解决办法
300
查看次数

tar gz 将另一个位置的目录复制到目标目录

我有以下目录结构:

/home/
  |__dirA/
      |__ dir_to_zip/
          |__ file1.txt
          |__ file2.txt
          |__ ...
  |__dirB/
      |__ dir_to_save_in/
  |__dirC/
      backup_zip_script.sh
Run Code Online (Sandbox Code Playgroud)

backup_zip_script.sh包含(除其他外)命令(src):

tar -czvf /home/dirB/dir_to_save_in/backup.tar.gz /home/dirA/dir_to_zip
Run Code Online (Sandbox Code Playgroud)

也就是说:我希望压缩目录~/dirA/dir_to_zip,将压缩的存档保存在 中~/dirB/dir_to_save_in/,并使用位于 中的脚本来执行此操作~/dirC/

上面的命令tar可以工作,但是解压缩保存的存档会产生完整的目录结构:

/home/
  |__dirA/
      |__ dir_to_zip/
          |__ file1.txt
          |__ file2.txt
          |__ ...
Run Code Online (Sandbox Code Playgroud)

当我只想:

dir_to_zip/
  |__ file1.txt
  |__ file2.txt
  |__ ...
Run Code Online (Sandbox Code Playgroud)

如何将目录压缩到另一个位置(这样我就必须指定完整的绝对路径),但只压缩该目录而不压缩它之前的所有级别?

我也可以简单地使用cd /home/dirA/ && tar......但我更愿意看看是否还存在其他解决方案。

linux tar

1
推荐指数
1
解决办法
9422
查看次数

awk 打印以空格分隔的列

我在目录中有如下所示的 *.dat 文件:

$ cat holiday_us.dat
20210101 1     New Year's Day
20210102 2     Labor Day
20210103 1     Independence Day
Run Code Online (Sandbox Code Playgroud)

我想要的输出:

20210101_New Year'sDay
20210102_LaborDay
20210103_IndependenceDay
Run Code Online (Sandbox Code Playgroud)

我试过的代码:

for file in /home/path/holly*.dat
do 
awk -f ' ' '{print $1,"_",print$2}' "$file"
done
}
Run Code Online (Sandbox Code Playgroud)

我得到低于输出:

20210101
New
20210102
Labor
20210103
Independence
Run Code Online (Sandbox Code Playgroud)

linux awk shell-script

1
推荐指数
1
解决办法
682
查看次数