Bash-on-Ubuntu-on-Windows 支持区分大小写的文件路径。这意味着我可以创建两个名称仅大小写不同的文件或目录。但是,我在访问这些文件时遇到问题。
跑步
bash -c "touch Magic ; mkdir magic ; echo Secret! > magic/secret"
Run Code Online (Sandbox Code Playgroud)
在该目录中创建一个文件名Magic、一个名为的目录magic和一个文件名secret。
bash -c "ls -lR" 产量
.:
total 0
drwxrwxrwx 2 root root 0 Aug 23 10:37 magic
-rwxrwxrwx 1 root root 0 Aug 23 10:37 Magic
./magic:
total 0
-rwxrwxrwx 1 root root 8 Aug 23 10:37 secret
Run Code Online (Sandbox Code Playgroud)
(我不确定为什么会得到root,因为它不是默认用户,但这似乎与我的问题无关。)
现在,虽然bash可以轻松访问magic/secret目录中的文件,但 Windows 似乎将目录和文件视为一回事。所以双击目录我得到一个“目录名无效”的错误

使用 也是如此cd,因为我被The directory name is …
bash windows-explorer filesystems windows-10 windows-subsystem-for-linux
在终端中使用反向搜索 ( Ctrl- r) 时bash,我可以使用Ctrl-c或Ctrl-取消搜索g。这两个选项都将清除搜索时键入的文本。
然而,我需要取消搜索的最常见原因是当我意识到我想要输入的命令不在我的历史记录中时,这通常只有在我输入了很长的命令后才会发生。
有什么方法可以干净地中止搜索而不会丢失我输入的所有内容?
我正在尝试使用 SSH 从远程主机中删除/path/to/dir/除两个目录 (dir1和dir2)之外的所有文件和目录。当我在本地 Ubuntu 14.04 机器上运行与此类似的命令时,它按预期工作:
user@host1:~$ cd /path/to/dir/ && rm -rf !(dir1|dir2)
Run Code Online (Sandbox Code Playgroud)
如果我尝试在具有相同目录结构的另一台主机上通过 SSH 执行相同的命令,则会失败。
user@host1:~$ ssh user@host2 'cd /path/to/dir/ && rm -rf !(dir1|dir2)'
bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `cd /path/to/dir/ && rm -rf !(dir1|dir2)'
Run Code Online (Sandbox Code Playgroud)
我应该如何转义命令以使其工作?我认为使用单引号就足够了。
我正在尝试通过 SSH 重置 root 密码,使用 sudo,因为直接以 root 身份登录被禁用。
我正在使用以下命令重置密码:
sshpass -f .pass ssh kj@server2 'bash -s' < password.sh
Run Code Online (Sandbox Code Playgroud)
运行此程序时,系统提示我输入 sudo 密码,但失败了。
password.sh有以下内容。
MYPASS=abcd@123
echo $MYPASS | sudo -kS bash -c 'echo passwd | passwd root --stdin'
Run Code Online (Sandbox Code Playgroud)
如何使用 SSH 和 sudo 成功重置密码?
我无法理解与替换模式一起使用的命令中的complement(-c) 选项tr(即没有任何其他选项),例如:
回声 "a" | 驾驶室
为什么会产生:
AB根@斯莱克
(ab没有换行符的字符串)?
使用zip archive file我得到:
adding: file (deflated 40%)
-rw-rw-r-- 1 lenduya lenduya 757 Jan 18 16:26 archive.zip
-rw-rw-r-- 1 lenduya lenduya 973 Jan 18 16:25 file
Run Code Online (Sandbox Code Playgroud)
问题是我不确定它是如何获得 40% 的。973/757 是 1.28,757/973 是 0.77。757/(973-757) 是 3.5,973/(973/757) 是 4.5。
奖励:目标是脚本的参数是一个文件。我必须打印以输出zip. 我的思考过程是,我将使用 的摘要,将其zip输出到文件中,然后我将使用cut或过滤掉所需的信息tr。bc将处理浮动格式。我是在一条好的道路上还是有更简单的方法?
我使用 envsubst 将环境变量替换为 linux 中的文件。
envsubst < task-definition.json > new-task-definition.json
Run Code Online (Sandbox Code Playgroud)
如何使用默认资源或使用 3rd 方工具在 Windows 中实现此功能?
如果我想查看 root 的 bash 历史记录,为什么我不能直接运行sudo history?当我这样做时,它说找不到命令历史记录,但是如果我在没有 sudo 的情况下运行它,它运行良好。
编辑:这是一个重复的答案,但不是链接的重复问题。提出任何一个问题的人都不知道它是一个 shell 内置命令,而不是一个二进制命令。
我正在尝试将文本文件的内容添加到其他文本文件的中间,也就是在特定字符串之前。我使用以下命令在特殊字符串后添加文本,例如
sed '/line3/ r data.txt' file1.txt (this will add contents of data.txt to file1.txt after "line3" string.
我试图在特定字符串之前添加文件的内容。我不能保证行号,所以我不能使用那个方法。
例如,
<xa-datasource-property
name="URL">jdbc:oracle:thin:@domain.com:1521:ora12121</xa-datasource-
property>
<xa-datasource-property name="User">username</xa-datasource-property>
<xa-datasource-property name="Password">password</xa-datasource-property>
<!-- Uncomment the following if you are using Oracle 9i
<xa-datasource-property name="oracle.jdbc.V8Compatible">true</xa-
datasource-property>
-->
<exception-sorter-class-name>
org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
</exception-sorter-class-name>
</xa-datasource>
Run Code Online (Sandbox Code Playgroud)
我想在</xa-datasource>字符串之前添加 data.txt 的内容 。
我有一个 bash 脚本 postCloneSetup.sh:
script_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd "$script_path"
printf 'Updating submodules for project\r\n'
git submodule update --init --recursive
printf '\r\nInitializing git hooks\n'
./GitHooks-BackEnd/init-hooks
printf '\r\nInitializing Submodule1\r\n'
$(./Submodule1/postCloneSetup.sh)
printf '\r\nInitializing Submodule2\r\n'
$(./Submodule2/postCloneSetup.sh)
Run Code Online (Sandbox Code Playgroud)
我从 Windows 命令提示符触发了一个 bash 脚本。
postCloneSetup.sh
Run Code Online (Sandbox Code Playgroud)
它打开另一个窗口,然后返回。它产生的窗口保持打开状态并记录输出文本。
我想从生成的窗口中捕获输出(写入控制台的文本)并将其返回到 Windows 命令提示符。
我更喜欢使用类似的东西
$(postCloneSetup.sh) // Linux for capturing output to current context
Run Code Online (Sandbox Code Playgroud)
对于 Windows 命令提示符。
我不想修改 postCloneSetup.sh。我知道我可以把它写到一个文件中
exec &> postCloneSetupLog.log
Run Code Online (Sandbox Code Playgroud)
但是我必须等待并手动运行
type postCloneSetupLog.log
Run Code Online (Sandbox Code Playgroud)
在控制台中查看输出。这对于集成到 CI 引擎是不可能的,这是我的目标。
如何在一个命令中捕获生成的控制台的输出?
bash ×10
linux ×6
shell ×3
command-line ×2
ssh ×2
sudo ×2
windows ×2
filesystems ×1
history ×1
sed ×1
shell-script ×1
windows-10 ×1
windows-subsystem-for-linux ×1
zip ×1