簡體   English   中英

為什么當我將它放入別名時我的命令停止工作?

[英]Why does my command stop working when I put it into an alias?

我正在嘗試運行以下命令comm -23 <(pacman -Qqe | sort) <(awk '{print $1}' /desktopfs-pkgs.txt | sort)

我得到以下 output

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 附帶的軟件包之間的區別。

它正確地給了我想要的 output 並且工作正常,但是當我將它放入我的zshrc中的別名時,它失敗了。

在我的zshrc ,它看起來如下alias paccom="comm -23 <(pacman -Qqe | sort) <(awk '{print $1}' /desktopfs-pkgs.txt | sort)"

尋源后,輸出如下。

~: 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 永遠不會看到$1 您可以通過顯示您的別名來驗證這一點

alias paccom

您必須在別名$中轉義以防止替換,或者更好的是(為您省去更多麻煩)定義 function 而不是別名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM