Windows cmd别名,用于打印出文件夹cygwin的大小
我目前正试图弄清楚如何准确地生成允许管道的Doskey别名 我想收集文件夹大小(kB) 我试过了Windows cmd别名,用于打印出文件夹cygwin的大小,windows,cmd,cygwin,alias,doskey,Windows,Cmd,Cygwin,Alias,Doskey,我目前正试图弄清楚如何准确地生成允许管道的Doskey别名 我想收集文件夹大小(kB) 我试过了 alias dirsize=du-p-c-a-b$1 | grep total | awk'{print'文件夹有:“$1”kB”}” 但我只是得到了输出 文件夹有:kB 当我使用 dirsize=du -P -c -a -b $1 | grep total 这让我抓狂 C:\>dirsize Temp 1364201 total 但是我现在怎么使用awk管道呢 我做错了什么 doskey
alias dirsize=du-p-c-a-b$1 | grep total | awk'{print'文件夹有:“$1”kB”}”
但我只是得到了输出
文件夹有:kB
当我使用
dirsize=du -P -c -a -b $1 | grep total
这让我抓狂
C:\>dirsize Temp
1364201 total
但是我现在怎么使用awk管道呢
我做错了什么
doskey dirsize=du -P -c -a -b $1 $b grep -E "total$" $b awk "{i=1;print \"Has \" $i \" bytes\"}"
在doskey别名中
- 管道字符是
$b
- 调用别名时,
的所有实例都将替换为第一个参数,因此,$1
命令中的awk
将在别名解析期间被替换,并且在执行时它将不会成为对参数的引用$1
doskey
别名中解决此问题的通常方法是将$1
转换为不会干扰命令执行但避免doskey解析器处理它的内容。为此,通常的解决方案是使用$^1
,但在这种情况下,此序列不由cmd
处理,而是由awk
处理,^
不被视为转义字符
我们需要在
awk
内部解决它,使用变量(i
)替换直接$1
,以存储索引来检索$1
,并用$i
替换$i
别名中没有特殊含义的doskey
别名。您需要引用您的别名:alias dirsize=“quoted content”