问题描述
dots=(
~/.config/alacritty
~/.config/dunst
~/.config/flameshot
~/.config/i3
~/.config/i3status
~/.config/kitty
~/.config/nvim
~/.config/picom
~/.config/rofi
~/.config/gtk-3.0
~/.config/obs-studio
~/.config/sway
~/.config/waybar
~/.config/swappy
~/.config/mako
~/.config/swaylock
~/.config/Code/User/settings.json
~/.config/Code/User/keybindings.json
~/.config/fontconfig
~/.bash_logout
~/.bash_profile
~/.bashrc
~/.profile
~/.stignore
~/.gtkrc-2.0
)
for name in "${dots[@]}"; do
if [ ! -e "$name" ]; then
echo "$name does not exist."
ln -sv "$HOME/Dotfiles/dots/${name#~/.config/}" "$name"
else
echo "$name exists."
fi
done
这里的问题是它从 ~/.config/
之类的目录中删除了 ~/.config/sway
部分,但它没有删除 ~/
之类的目录中的 ~/.profile
部分。>
我的问题是,我将如何删除包含它们的文件的 ~/.config/
部分和 ~/
部分?
编辑:将符号链接行中的 echo
替换为 ln -sv
。我用 echo
替换它,以便我可以测试它是否有效。
解决方法
我的问题是,如何删除 ~/.config/ 部分和包含它们的文件的 ~/ 部分?
就个人而言,我会分两步完成,将中间结果存储在单独的变量中:
WITH duplicated AS (
SELECT id,count(*)
FROM products
GROUP BY id
HAVING count(*) > 1),ordered AS (
SELECT p.id,created_at,rank() OVER (partition BY p.id ORDER BY p.created_at) AS rnk
FROM products o
JOIN duplicated d ON d.id = p.id ),products_to_delete AS (
SELECT id,created_at
FROM ordered
WHERE rnk = 2
)
DELETE
FROM products
USING products_to_delete
WHERE products.id = products_to_delete.id
AND products.created_at = products_to_delete.created_at;