Linux 已经用文件存储了大量元数据。例如所有者、权限、文件名、校验和(在某些文件系统中)以及磁盘上的位置等基本数据。
是否有任何文件系统(例如 btrfs、zfs、ext*)允许您存储额外的元数据?
我有一个包含完整路径的文件:
/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 解析的字段执行操作?
谢谢你的帮助。
我正在使用-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 标志,但它会打印所有已执行的命令。我只想看看失败的那个。
如何使用 crontab将CTRL+发送C到我的 tmux 选项卡?我有以下内容,它适用于发送命令,但我不确定如何向它发送CTRL+ C。
0,30 * * * * /usr/bin/tmux send-keys -t 0 "CTRL+C"
Run Code Online (Sandbox Code Playgroud) 我需要选择非空行且不以//. 我可以执行两个单独的 grep 命令,如下所示:
提取非空行的行:
grep -v -E '^$' test.txt
Run Code Online (Sandbox Code Playgroud)
提取不以 开头的行//:
grep -v '//' test.txt
Run Code Online (Sandbox Code Playgroud)
如何将两个命令合二为一?
如果内核命令行包含同一参数的多个设置,如何评估它们?
例子:
nohz=off ... nohz=on
Run Code Online (Sandbox Code Playgroud)
哪个设置“获胜”?最后一个?
每个参数的评估逻辑是否相同?
我有以下目录结构:
/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......但我更愿意看看是否还存在其他解决方案。
我在目录中有如下所示的 *.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) awk ×2
linux ×2
bash ×1
command ×1
cron ×1
exit-status ×1
files ×1
filesystems ×1
grep ×1
linux-kernel ×1
search ×1
shell-script ×1
tar ×1
tmux ×1