Shell 使用bash内置程序生成目录

Shell 使用bash内置程序生成目录,shell,terminal,cygwin,mkdir,Shell,Terminal,Cygwin,Mkdir,我正在为Windows7编写bash脚本,并且限制为bash.exe mkdir-p不工作(未找到命令) 我正在寻找bash内置的任何替换/欺骗。(-p标志不是强制性的,可以用循环来代替) 有一些想法,或其他一些不错的黑客只有一个专家会知道。这个问题不是关于如何修复丢失的mkdir二进制文件,而是关于减少(损坏的)核心util的依赖关系 以下是可用的bash内置组件: &(.:[[[alias bg bind break builtin caller case cd命令compgen compl

我正在为Windows7编写bash脚本,并且限制为
bash.exe

mkdir
-p不工作(未找到命令)

我正在寻找bash内置的任何替换/欺骗。(
-p
标志不是强制性的,可以用循环来代替)

有一些想法,或其他一些不错的黑客只有一个专家会知道。这个问题不是关于如何修复丢失的mkdir二进制文件,而是关于减少(损坏的)核心util的依赖关系

以下是可用的bash内置组件:

&(.:[[[alias bg bind break builtin caller case cd命令compgen complete comppt continue coproc declare dirs disown echo enable eval exec exit export false fc fg for function getopts hash help history if jobs kill让本地注销映射文件popd printf pushd pwd read read readarray readonly返回选择集shift shopt源暂停测试时间陷阱真字型ulimit umask unalias未设置,直到等待{

如果bash内置不可能,则有一些外部UTIL可用。已经有一个示例依赖于
cp


这就是我的全部:

bash blobpack blobunpack bzip2 cat chmod clear cpio cut dd dhtbsign dos2unix dumpimage elftool expr文件查找无效grep gzip hextdump内核转储loki工具ls lz4 lzop mac2unix mboot md5sum mkbootimgmkimage mkmtkhdr mv printf pxa mkbootimgpxaunpbootimgrkcrc rm sed stat sudo tail tar tup unix2dos unix2dos unix2dos unix2 mac unpbootimgunpack elf xz


注意:我编辑了问题以澄清需求。

如果我正确阅读了
pastebin.com
链接的内容,则这不是真实/完整的
cygwin
安装

该链接显示以下内容(在windows环境中):

在这一点上,这似乎不是一个实际的
cygwin
安装,而是
C:\Android\bash
目录下的某种简化/不完整/非标准化
bash
安装

OP在哪里/如何“安装”了
C:\Android\bash
目录下的内容

出于比较目的(我的windows计算机):

/usr/bin/mkdir
是否存在

运行
find/-name mkdir*
时返回什么


如果您可以找到
mkdir(.exe)
,那么下一步将检查在
$path
中定义的位置/路径。

此技巧有助于从bash脚本中运行Windows
md
shell内置程序

echo -e 'md %*\r' > mkdir.bat
./mkdir.bat test

据我所知,没有bash内置程序可以创建目录。你必须使用外部程序。使用mkdir命令显示你的代码。让这个bastardized
cygwin/bash
“安装”的创建者添加更多的二进制文件(例如,
mkdir.exe
),或者更好的是,构建你自己的二进制文件(也就是说,安装一个完整版本的
cygwin/bash
,然后选择你想要的二进制文件作为你的简化版/bastardized
cygwin/bash
安装)我可以自己添加这个,也可以只添加busybox。但我只能在自己的pc上完成。有很多这样的reduzed包(例如Odinatrix)我们的目标是生成具有重新定义的依赖项的通用脚本。也许我正在编写用于创建文件夹的.bat文件,因为windows mkdir可以工作,那么它听起来像是一个不完整的
cygwin
和/或
cygwin/bash
安装,因为
/usr/bin
(和
/usr/bin/mkdir
)应该存在。thx但问题是关于mkdir替代方案,而不是关于cygwin核心utils。我已经编辑了这个问题并删除了误导性的单词cygwin。主要问题仍然存在……有人从
cygwin/bash
安装中撕下了一系列二进制文件,然后将它们猛击到一个目录中;因为有数千个bin在一个完整的
cygwin
安装中,您最好访问这个卑鄙的cygwin安装的源代码,让他们向混合中添加更多的二进制文件(例如,
mkdir.exe
)如果你要把一个脚本推送到远程机器上……为什么不把你需要的额外的
cygwin/bash
二进制文件推出来呢?是的,这也许是最简单的解决办法,只需在一个zip中捆绑x86 busybox即可,谢谢!
# cygwin installation directory:

C:\cygwin64>dir
 Volume in drive C is Windows7
 Volume Serial Number is xxxx-yyyy

 Directory of C:\cygwin64

11/06/2020  12:29    <DIR>          .
11/06/2020  12:29    <DIR>          ..
03/30/2021  16:08    <DIR>          bin
05/25/2019  17:15            53,342 Cygwin-Terminal.ico
05/25/2019  18:46                95 Cygwin.2.bat
05/25/2019  17:15                88 Cygwin.bat
05/25/2019  17:15           157,097 Cygwin.ico
02/08/2021  13:01    <DIR>          dev
02/04/2021  12:06    <DIR>          etc
02/26/2021  16:35    <DIR>          home
02/02/2021  11:34    <DIR>          lib
07/12/2020  17:28    <DIR>          sbin
11/06/2020  12:29    <DIR>          srv
05/07/2021  07:46    <DIR>          tmp
02/02/2021  11:34    <DIR>          usr
05/25/2019  17:15    <DIR>          var
               6 File(s)        210,622 bytes
              12 Dir(s)  20,305,154,048 bytes free

C:\cygwin64\bin>dir
 Volume in drive C is Windows7
 Volume Serial Number is xxxx-yyyy

 Directory of C:\cygwin64\bin

03/30/2021  16:08    <DIR>          .
03/30/2021  16:08    <DIR>          ..
... snip ...
02/03/2017  14:40            37,395 base64.exe
02/03/2017  14:40            29,715 basename.exe
01/27/2017  14:13           739,859 bash.exe               # bash binary
01/27/2017  14:13             7,291 bashbug
10/17/2014  17:00            81,949 bc.exe
... snip ...
12/20/2020  17:01            11,564 mintheme
02/03/2017  14:40            62,995 mkdir.exe              # mkdir binary
02/03/2017  14:40            29,715 mkfifo.exe
08/22/2020  14:00            21,523 mkgroup.exe
... snip ...
2/19/2020  11:37                30 zstdless
2/03/2017  14:41            64,019 [.exe
           1130 File(s)    541,740,761 bytes               # 1100+ binaries in this directory
              2 Dir(s)  20,305,154,048 bytes free

# example cygwin session startup

C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -

     # user has option to startup a few different tty's;
     # actual OS is determined from /etc/passwd entry (/usr/bin/bash in my case)
$ bash --version
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)

$ which mkdir
/usr/bin/mkdir

$ command -v mkdir
/usr/bin/mkdir

$ mkdir --version
mkdir (GNU coreutils) 8.26
Packaged by Cygwin (8.26-2)
echo -e 'md %*\r' > mkdir.bat
./mkdir.bat test