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

标签 windows cmd cygwin alias doskey

我目前正在尝试弄清楚如何才能生成允许管道的 Doskey 别名。

我想以 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 管道呢?

我做错了什么?

最佳答案

doskey dirsize=du -P -c -a -b $1 $b grep -E "total$" $b awk "{i=1;print \"Has \" $i \" bytes\"}"

在 doskey 别名中

  • 管道字符是$b

  • $1 的所有实例将替换为别名调用中的第一个参数,因此,$1awk里面命令将在别名解析期间被替换,并且在执行时它不会是对参数的引用

这个问题里面通常的解决办法是doskey别名是转换$1进入不会干扰命令执行但避免doskey解析器处理它的东西。为此,通常的解决方案是使用 $^1 , 但在这种情况下,此序列不由 cmd 处理, 它由 awk 处理和 ^不被视为转义字符。

我们需要在里面解决awk , 替换直接 $1使用变量 ( i ) 存储索引以检索和替换 $1$idoskey里面没有特殊意义别名。

关于windows - 用于打印出 sizeof 文件夹 cygwin 的 cmd 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26842545/

相关文章:

java - 为什么 ">> "不会在我的 printf 语句末尾打印出来?

windows-7 - cygwin下windows 7安装mahout

linux - Cygwin 的 chrpath?

windows - 有没有办法单独设置数据 block 的复制因子?我在Windows 10上使用单节点hadoop群集

c++ - (C++) 在 Windows CMD 中显示阴影 block (↓、▒、░)

powershell - 批量替换文件中的多个文本

mysql - 加载错误 - 将 MySQL 与 Ruby on Rails 结合使用

c++ - 为什么 Win32 mutex 这么耗时

Python - 检查用户是否具有管理员权限

windows - 如何仅使用 Windows 的内置功能从脚本中压缩或解压缩?