将所有 .desktop 文件复制到 ~/.local/share/applications/

Copying all .desktop files to ~/.local/share/applications/

我正在尝试编写一个 bash 脚本来将 /nix/store 下的所有 .desktop 个文件复制到 ~/.local/share/applications/。我对 bash 不是特别擅长,所以我需要帮助。我使用 find 命令查找所有文件。现在我试图在 readarray:

的帮助下从输出创建一个数组
files=$(find /nix/store -type f -name \*.desktop)
echo $files
x=$(readarray -d 's'  <<<$files)
echo $x

echo $files 将打印 find 命令的结果,但是 echo $x 打印一个空行。

#!/usr/bin/env bash

files=$(find /nix/store -type f -name \*.desktop)

readarray array <<<$files

for i in ${array[@]}; do
    cp $i ~/.loca/share/applications/
done

find /nix/store -type f -name \*.desktop -exec cp {} ~/.local/share/applications/ \;

如果我没记错并且 /nix/store/ 是一个常规目录,这应该可以工作:

cp /nix/store/*.desktop ~/.local/share/applications/

Copying all .desktop files to ~/.local/share/applications/

find /nix/store -type f -name '*.desktop' \
   -exec cp -v {} ~/.local/share/applications/ ';'

however the echo $x prints an empty line.

readarray 产生 无输出 。相反,它 存储 参数中的行,代表变量的名称,数组的名称。

readarray -d 's'  <<<$files
#            ^^^  - stores output in array named s
printf "%s\n" "${s[@]}"  # you can print the array s