【问题标题】:cmd alias for printing out sizeof folder cygwin用于打印出 sizeof 文件夹 cygwin 的 cmd 别名
【发布时间】:2014-11-10 11:16:10
【问题描述】:

我目前正在尝试弄清楚如何才能生成允许 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 管道?

我做错了什么?

【问题讨论】:

  • 你需要引用你的别名:alias dirsize="quoted content"

标签: windows cmd cygwin alias doskey


【解决方案1】:
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 987654337@别名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 2015-08-12
    • 1970-01-01
    相关资源
    最近更新 更多