【问题标题】:How to create files and folders automatically through Terminal?如何通过终端自动创建文件和文件夹?
【发布时间】:2016-09-01 22:39:55
【问题描述】:

分组/通用的 Linux 命令如何在 Windows 环境中运行? (使用 Windows RT 2012)。我正在使用 Git BASH 但无法实现以下目标:

在项目根目录,我尝试以下创建 lib 文件夹及其子文件夹

mkdir -p lib/{login, signup, users, posts}
touch !!:2/{package.json, index.js}

下面的一个有效,但我想在每个登录、注册、用户、帖子文件夹中创建这 2 个文件

touch package.json index.js 

谢谢

编辑:Source

【问题讨论】:

  • 请把来源从那里放出来,你有这个问题要问。 :)
  • 好的,谢谢。 src 提供。

标签: linux windows git bash


【解决方案1】:

空间是恶棍

mkdir -p lib/{login,signup,users,posts} #no spaces in between comma & folder
touch !!:2/{package.json,index.js}

这扩展为

touch lib/{login,signup,users,posts}/{package.json,index.js}

会按预期工作。

揭秘

touch !!:2/{package.json,index.js}

!! 扩展到最后一个命令运行,:2 扩展到第三个参数,因为参数计数从零开始。此外,论据是 默认情况下由空格分隔。在

mkdir -p lib/{login, signup, users, posts} 

第三个参数原来是lib/{login, 而不是预期的lib/{login,signup,users,posts},所以touch 命令扩展为

touch lib/{login,/{package.json, index.js}

这不是我们想要的扩展

【讨论】:

  • 这适用于touch !!:2/${array[@]} 吗?无法分配 array = (index.js config.json) ,Git BASH 说意外令牌。
  • 我从他们在 Mac 上使用的教程中获取了 2 个命令。我有一个远程 Ubuntu 16.04 桌面,我尝试了上面的两个命令,但它们都不起作用。为什么 Mac 终端允许这样做?那不是很强大吗?我家的 Ubuntu 桌面不行吗?替代解决方案?
  • 嗯,我认为这是不可能的。
【解决方案2】:

请不要因为我使用eval而杀了我...

dirs='lib/{login,signup,users,posts}';
files='{package.json,index.js}';
eval "mkdir -p $dirs";
eval "touch $dirs/$files";
find .;
## .
## ./lib
## ./lib/login
## ./lib/login/index.js
## ./lib/login/package.json
## ./lib/posts
## ./lib/posts/index.js
## ./lib/posts/package.json
## ./lib/signup
## ./lib/signup/index.js
## ./lib/signup/package.json
## ./lib/users
## ./lib/users/index.js
## ./lib/users/package.json

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多