我目前正试图弄清楚我究竟能够生成一个允许Pipes的Doskey Alias。
我想以kB为单位收集文件夹大小。
我试过了
alias dirsize=du -P -c -a -b $1 | grep total | awk '{print "Folder has: " $1 "kB"}'
但我只是得到输出
Folder has: kB
当我使用
时dirsize=du -P -c -a -b $1 | grep total
它让我
C:\>dirsize Temp
1364201 total
但是我现在如何使用awk管道?
我做错了什么?
答案 0 :(得分:2)
doskey dirsize=du -P -c -a -b $1 $b grep -E "total$" $b awk "{i=1;print \"Has \" $i \" bytes\"}"
在doskey别名
中竖线字符为$b
$1
的所有实例都将替换为别名调用中的第一个参数,因此,$1
命令中的awk
将在别名期间被替换解析并在执行时它不会引用参数
在doskey
别名中解决此问题的常用方法是将$1
转换为不会干扰命令执行但避免doskey解析器处理它的内容。要做到这一点,通常的解决方案是使用$^1
,但在这种情况下,此序列不由cmd
处理,它由awk
处理,而^
是不被视为逃脱角色。
我们需要在awk
内解决它,使用变量($1
)替换直接i
来存储索引以检索$1
并使用{{替换$i
在doskey
别名中没有特殊含义的1}}。