用于打印sizeof文件夹cygwin的cmd别名

时间:2014-11-10 11:16:10

标签: windows cmd cygwin alias doskey

我目前正试图弄清楚我究竟能够生成一个允许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管道?

我做错了什么?

1 个答案:

答案 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并使用{{替换$idoskey别名中没有特殊含义的1}}。