使用内置 bash 创建目录
make directory with bash builtin
我正在为 Windows 7 编写 bash 脚本并且对 bash.exe
有限制
mkdir
-p 不起作用(未找到命令)
我正在寻找具有 bash 内置函数的任何 replacement/cheat。 (-p
标志不是强制性的,可以用循环代替)
有一些想法 Transform a file into directory 或其他一些只有专家才知道的好技巧。这个问题不是关于如何修复丢失的 mkdir 二进制文件,而是关于减少(损坏的)核心实用程序的依赖性。
这是可用的 bash 内置函数:
& (( . : [ [[ alias bg bind break builtin caller case cd command compgen complete compopt 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 read readarray readonly return select set shift shopt source suspend test time times trap true type typeset ulimit umask unalias unset until wait while {
如果无法使用 bash 内置函数,则可以使用一些外部实用程序。已经有一个例子依赖于 cp
Create a new folder using bash without mkdir command
这就是我的全部:
bash blobpack blobunpack bzip2 cat chmod clear cpio cut dd dhtbsign dos2unix dumpimage elftool expr file find futility grep gzip hexdump kernel_dump loki_tool ls lz4 lzop mac2unix mboot md5sum mkbootimg mkimage mkmtkhdr mv printf pxa-mkbootimg pxa-unpackbootimg rkcrc rm sed stat sudo tail tar touch unix2dos unix2mac unpackbootimg unpackelf xz
注意:我已经编辑了问题以阐明需求。
如果我正确阅读 pastebin.com
link 的内容,这不是 true/complete cygwin
安装。
link 显示以下内容(在 windows 环境中):
PATH = ... C:\Android\bash ... # this is not where cygwin is typically installed though, yeah, you could override the default installation directory
C:\Users\mint>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:\Android\bash
目录下的某种 reduced/incomplete/bastardized bash
安装。
Where/How是否OP'install'C:\Android\bash
目录下的内容?
为了比较(我的 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:\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)
此时如果 OP 想要 运行 cygwin/bash
那么我建议安装一个实际的 cygwin
环境(参见 cygwin.org ),确保同时安装bash
包。
至于如何用...模拟mkdir
...C:\Android\bash
下面安装的...耸耸肩...让鼻祖拉更多来自完整 cygwin/bash
安装的二进制文件(例如 mkdir.exe
)的数量?
------------------------ 之前的回答(复习之前pastebin.com
link的内容)
我想知道这是否可能是 incomplete/corrupted 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)
,那么下一个检查将是 location/path 也在 $PATH
中定义 ...
这个技巧可以帮助 运行 Windows md
shell bash 脚本
内建
echo -e 'md %*\r' > mkdir.bat
./mkdir.bat test
我正在为 Windows 7 编写 bash 脚本并且对 bash.exe
mkdir
-p 不起作用(未找到命令)
我正在寻找具有 bash 内置函数的任何 replacement/cheat。 (-p
标志不是强制性的,可以用循环代替)
有一些想法 Transform a file into directory 或其他一些只有专家才知道的好技巧。这个问题不是关于如何修复丢失的 mkdir 二进制文件,而是关于减少(损坏的)核心实用程序的依赖性。
这是可用的 bash 内置函数:
& (( . : [ [[ alias bg bind break builtin caller case cd command compgen complete compopt 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 read readarray readonly return select set shift shopt source suspend test time times trap true type typeset ulimit umask unalias unset until wait while {
如果无法使用 bash 内置函数,则可以使用一些外部实用程序。已经有一个例子依赖于 cp
Create a new folder using bash without mkdir command
这就是我的全部:
bash blobpack blobunpack bzip2 cat chmod clear cpio cut dd dhtbsign dos2unix dumpimage elftool expr file find futility grep gzip hexdump kernel_dump loki_tool ls lz4 lzop mac2unix mboot md5sum mkbootimg mkimage mkmtkhdr mv printf pxa-mkbootimg pxa-unpackbootimg rkcrc rm sed stat sudo tail tar touch unix2dos unix2mac unpackbootimg unpackelf xz
注意:我已经编辑了问题以阐明需求。
如果我正确阅读 pastebin.com
link 的内容,这不是 true/complete cygwin
安装。
link 显示以下内容(在 windows 环境中):
PATH = ... C:\Android\bash ... # this is not where cygwin is typically installed though, yeah, you could override the default installation directory
C:\Users\mint>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:\Android\bash
目录下的某种 reduced/incomplete/bastardized bash
安装。
Where/How是否OP'install'C:\Android\bash
目录下的内容?
为了比较(我的 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:\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)
此时如果 OP 想要 运行 cygwin/bash
那么我建议安装一个实际的 cygwin
环境(参见 cygwin.org ),确保同时安装bash
包。
至于如何用...模拟mkdir
...C:\Android\bash
下面安装的...耸耸肩...让鼻祖拉更多来自完整 cygwin/bash
安装的二进制文件(例如 mkdir.exe
)的数量?
------------------------ 之前的回答(复习之前pastebin.com
link的内容)
我想知道这是否可能是 incomplete/corrupted 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)
,那么下一个检查将是 location/path 也在 $PATH
中定义 ...
这个技巧可以帮助 运行 Windows md
shell bash 脚本
echo -e 'md %*\r' > mkdir.bat
./mkdir.bat test