当我将命令放入别名时,为什么我的命令停止工作?
Why does my command stop working when I put it into an alias?
我正在尝试 运行 以下命令
comm -23 <(pacman -Qqe | sort) <(awk '{print }' /desktopfs-pkgs.txt | sort)
我得到以下输出
autoconf
automake
bison
chromium
code
discord
fakeroot
flex
lib32-mesa-vdpau
lib32-vulkan-intel
lib32-vulkan-radeon
m4
make
mesa-vdpau
nerd-fonts-complete
paru
patch
pkgconf
spotify
terminator
vim
vulkan-intel
vulkan-radeon
xf86-video-amdgpu
xf86-video-ati
xf86-video-intel
xf86-video-nouveau
我的目标是让它向我输出我明确安装的软件包与 Manjaro 附带的软件包之间的区别。
它正确地给出了我想要的输出并且工作正常,但是当我将它放入我的 zshrc
中的别名时,它失败了。
在我的 zshrc
中它看起来如下
alias paccom="comm -23 <(pacman -Qqe | sort) <(awk '{print }' /desktopfs-pkgs.txt | sort)"
sourcing后输出如下
~: paccom ✔
acpi
acpid
adobe-source-han-sans-cn-fonts
adobe-source-han-sans-jp-fonts
adobe-source-han-sans-kr-fonts
adobe-source-sans-fonts
alsa-firmware
alsa-utils
amd-ucode
android-tools
android-udev
ark
autoconf
automake
avahi
b43-fwcutter
bison
...
基本上,它似乎是整个 pacman -Qqe
,好像它实际上没有正确地进行文件比较。
关于行为改变的原因有什么想法吗?
在定义别名时,$1 被 shell 替代,即 awk 永远不会看到 </code>。您可以通过 </p> 显示您的别名来验证这一点
<pre><code>alias paccom
您必须在别名 $
中转义以防止替换,或者更好的是(为了避免您进一步头痛)定义一个函数而不是别名。
我正在尝试 运行 以下命令
comm -23 <(pacman -Qqe | sort) <(awk '{print }' /desktopfs-pkgs.txt | sort)
我得到以下输出
autoconf
automake
bison
chromium
code
discord
fakeroot
flex
lib32-mesa-vdpau
lib32-vulkan-intel
lib32-vulkan-radeon
m4
make
mesa-vdpau
nerd-fonts-complete
paru
patch
pkgconf
spotify
terminator
vim
vulkan-intel
vulkan-radeon
xf86-video-amdgpu
xf86-video-ati
xf86-video-intel
xf86-video-nouveau
我的目标是让它向我输出我明确安装的软件包与 Manjaro 附带的软件包之间的区别。
它正确地给出了我想要的输出并且工作正常,但是当我将它放入我的 zshrc
中的别名时,它失败了。
在我的 zshrc
中它看起来如下
alias paccom="comm -23 <(pacman -Qqe | sort) <(awk '{print }' /desktopfs-pkgs.txt | sort)"
sourcing后输出如下
~: paccom ✔
acpi
acpid
adobe-source-han-sans-cn-fonts
adobe-source-han-sans-jp-fonts
adobe-source-han-sans-kr-fonts
adobe-source-sans-fonts
alsa-firmware
alsa-utils
amd-ucode
android-tools
android-udev
ark
autoconf
automake
avahi
b43-fwcutter
bison
...
基本上,它似乎是整个 pacman -Qqe
,好像它实际上没有正确地进行文件比较。
关于行为改变的原因有什么想法吗?
在定义别名时,$1 被 shell 替代,即 awk 永远不会看到 </code>。您可以通过 </p> 显示您的别名来验证这一点
<pre><code>alias paccom
您必须在别名 $
中转义以防止替换,或者更好的是(为了避免您进一步头痛)定义一个函数而不是别名。