使用bash内置程序生成目录



我正在为Windows 7编写bash脚本,并且对bash.exe有限制

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

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

有一些想法可以将文件转换到目录中,或者其他一些只有专家才能知道的好方法。这个问题不是关于如何修复丢失的mkdir二进制文件,而是关于减少(损坏的(核心utils的依赖性。

以下是可用的bash内置程序:

&(.:[[[alias bg bind break内置调用方case cd command 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 let local logout mapfile popd printf pushd pwd readarray readonly return select set shift shopt source suspend test time times trap true type type set ulimit umask unalias unset until等待{

如果bash内置无法实现,则有一些外部实用程序可用。已经有一个例子依赖于cp
使用bash创建一个新文件夹而不使用mkdir命令
这就是我所拥有的:

bash blobpack blobunpack bzip2 cat chmod clear cpio cut dd dhtbsign dos2unix dumpimage elftool expr file find徒劳grep gzip hexdump kernel_dump loki_tool ls lz4 lzop mac2unix mboot md5sum mkbootimg mkimage mkmtkhdr mv printf pxa mkbootmg pxa unpackbootimg rkcrc rm sed stat sudo tail tar touch unix2dos unix2mac unpackbootmg unpackelf xz

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

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

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

PATH = ... C:Androidbash ...                 # this is not where cygwin is typically installed though, yeah, you could override the default installation directory
C:Usersmint>bash                             # this is not how `cygwin/bash` is invoked
bash-4.1$ 
bash-4.1$ ls /cygdrive/c/Android/bash          # full cygwin install does not throw everything under a single directory like this:
bash.exe          ... snip ...      mv.exe

在这一点上,这似乎不是一个实际的cygwin安装,而是C:Androidbash目录下的某种简化/不完整/精简的bash安装。

OP在哪里/如何"安装"C:Androidbash目录下的内容?

出于比较目的(我的windows机器(:

# 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:cygwin64bin>dir
Volume in drive C is Windows7
Volume Serial Number is xxxx-yyyy
Directory of C:cygwin64bin
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:cygwin64binmintty.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)

此时,如果OP想要运行cygwin/bash,那么我建议安装一个实际的cygwin环境(请参阅cygwin.org(,确保也安装bash包。

关于如何用…模拟mkdir。。。无论C:Androidbash下安装了什么耸耸肩。。。发起者是否从完整的cygwin/bash安装中提取了更多的二进制文件(例如mkdir.exe(?

-----------------------上一个答案(在查看pastebin.com链接的内容之前(

我想知道这是否可能是cygwin/bash安装不完整/损坏或$PATH无效的问题?

来自我的cygwin环境:

$ 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)

/usr/bin/mkdir是否存在?

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

如果你能找到mkdir(.exe),那么下一次检查将是在$PATH中定义的位置/路径。。。

这个技巧有助于从bash脚本中运行Windowsmdshell内置

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

相关内容

  • 没有找到相关文章

最新更新