gpt4 book ai didi

linux - 使用 bash 脚本打开最新下载的文件

转载 作者:可可西里 更新时间:2023-11-01 11:49:21 26 4
gpt4 key购买 nike

下面是我对这个问题的尝试。这是一个功能脚本,但我必须指定要用于每种文件类型的应用程序。由于这些关于默认应用程序的信息必须已经存储在 Linux/Ubuntu 上的某个地方,我如何访问它们并将它们合并到我的脚本中?

此外,我的脚本能否以任何方式更“优雅”?

感谢您帮助 Bash 脚本初学者!我很感激任何评论。

#!/bin/bash
# Open the latest file in ~/Downloads

filename=$(ls -t ~/Downloads | head -1)
filetype=$(echo -n $filename | tail -c -3)

if [ $filetype == "txt" ]; then
leafpad ~/Downloads/$filename
elif [ $filetype == "pdf" ]; then
evince ~/Downloads/$filename
fi

最佳答案

How do I open a file in its default program - Linux应该可以帮助您解决问题的第一部分:

xdg-open ~/Downloads/$filename

如其他答案中所述,最好不要相信脚本中 ls 的输出,尤其是当文件名中包含换行符等不常见字符时。在脚本中可靠地获取文件名列表的一种方法是使用 find 命令,并将它们以 null 分隔到管道中。

所以用一行来回答你的问题:

find ~/Downloads -maxdepth 1 -type f -printf "%C@ %p\0" | sort -zrn | { read -d '' ts file; xdg-open "$file"; }

分解:

  • find 命令列出了 ~/Download 目录中的文件,但不会深入到子目录中。文件名以给定的 printf 格式打印,其中列出了一个数字时间戳,后跟一个空格,再后跟一个空定界符。注意 printf format specifiers for find与常规 printf 不同
  • sort command按第一个字段(数字时间戳)对生成的空分隔列表 (-z) 进行数字排序 (-n)。排序顺序颠倒 (-r),以便最先显示最新条目
  • read 命令将列表中第一个文件的时间戳和文件名读取到 tsfile 变量中。 -d '' 告诉 read 使用空分隔符。
  • 使用 xdg-open 打开文件。

注意 readxdg-open 命令在 curly bracket inline group 中,所以 file 变量在两者的范围内。

关于linux - 使用 bash 脚本打开最新下载的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com