虽然它似乎与这个问题重复,但事实是,微软最近宣布 bash 将直接从 Windows 运行
显然,我更喜欢在安装 cygwin 之前使用该解决方案。
问题是,那篇博文有点说这已经是可能的,但我找不到在我的 Windows 安装中启用它的方法。
我应该怎么做才能按照链接的微软博客文章中的说明直接运行 bash?
我嵌套了 pdf 文件的目录,我想将它们提取到更高级别的目录中,将它们重命名如下:
我的文件是这样的:
./path1/pathA/fileI.pdf
./path1/pathB/fileII.pdf
Run Code Online (Sandbox Code Playgroud)
我想实现:
./path1_pathA_fileI.pdf
./path1_pathB_fileII.pdf
Run Code Online (Sandbox Code Playgroud)
我知道我可以做一个文件列表
find . -type f -name "*.pdf"
我可以想象一个解决方案使用
find . -type f -name "*.pdf" | mv -t ...
但是我不知道如何填写...因为我不了解bash中的解析和变量赋值。如何在“/”处拆分路径并形成如上所述的新路径和文件名?
提前谢谢了!
在 vim 和许多其他文本编辑器中,您可以将文件末尾向上滚动到屏幕顶部,同时将其余行显示为空白。但是在终端中,默认情况下,行尾固定在终端屏幕的末尾,因此您当前的行始终出现在底部。在最后一行和屏幕底部之间添加空行时,如何向上滚动当前行?
谢谢
我在 Windows 上启动了 Ubuntu bash,它随周年更新 1607 一起提供。这个 bash 源.bashrc文件位于/home/philUnix 用户的主目录,而不是 Windows 用户(这将是/mnt/c/Users/Philipp)。在这个文件中还有以下一段代码:
if [ -f .bash_aliases ]; then
. .bash_aliases
fi
Run Code Online (Sandbox Code Playgroud)
由于我的 Windows 主目录中已经有一个别名文件,因此我将其替换为:
if [ -f /mnt/c/Users/Philipp/.aliases_win ]; then
. /mnt/c/Users/Philipp/.aliases_win
fi
Run Code Online (Sandbox Code Playgroud)
当重新启动 bash 或直接使用时,source /mnt/c/Users/Philipp/.aliases_win会给出:
: command not found
: command not found
: command not found
: command not found
: command not found
: command not found
: command not found
Run Code Online (Sandbox Code Playgroud)
所以我删除了尽可能多的别名,直到这些错误消息消失,只在文件中留下这些别名:
(作为参考,完整文件如下所示:https : //github.com/kleinfreund/dotfiles/blob/master/win/bash/.aliases)
# …Run Code Online (Sandbox Code Playgroud) bash bash-alias windows-subsystem-for-linux windows-10-v1607
我正在从 Windows 运行 Ubuntu。
当我从newFolder根目录中调用的Windows 创建一个文件夹C:\Users\myuser\AppData\Local\lxss\root\Newfolder时,当我运行时从 Bash创建一个文件夹时,我ls没有看到刚刚创建的新文件夹。
我该如何解决这个问题,以便我可以从 Windows 创建文件夹和文件,然后从 Bash 访问它们?
我有一个应该可以重新运行的 bash 脚本。这包括
pecl install foo ||
{
echo "Could not install foo!";
exit 1;
}
Run Code Online (Sandbox Code Playgroud)
如果这运行两次,它会出错
pecl/foo is already installed and is the same as the released version 1.2.3
install failed
Could not install foo!
Run Code Online (Sandbox Code Playgroud)
与 apt-get 或 yum 等工具不同,如果模块已安装,pecl 会返回错误代码,而我希望它报告成功。
我可以捕获和 grep stdout/stderr 但是有没有更简单的方法来实现相同的目标?
是否可以将 upstart 启动的进程置于前台?
root@me:~# ps aux | grep my-app
root 2208 0.2 0.0 1456 480 ? S 17:38 0:01 /opt/me/my-app
root@me:~# fg 2208
-bash: fg: 2208: no such job
root@me:~# fg $(pidof my-app)
-bash: fg: 2208: no such job
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用包含管道字符的正则表达式进行 grep |。但是,它没有按预期工作。如下图所示,正则表达式与|inclusively不匹配。
这是我的 bash 命令
cat data | grep "{{flag\|[a-z|A-Z\s]+}}"
样本数据如下
| 155||NA||{{flag|Central African Republic}}||2.693||NA||0.000||0.000||0.019||0.271||0.281||0.057||2.066
|{{flagicon|Kosovo}} ''[[Kosovo]]'' <ref name="KOS" group=Note>{{Kosovo-note}}</ref>
|{{flagicon|Somaliland}} [[Somaliland|Somaliland region]]
|{{flagicon|Palestine}} ''[[Palestinian Territories]]''{{refn|See the following on statehood criteria:
Run Code Online (Sandbox Code Playgroud)
预期的输出是
| 155||NA||{{flag|Central African Republic}}||2.693||NA||0.000||0.000||0.019||0.271||0.281||0.057||2.066
Run Code Online (Sandbox Code Playgroud)
但是,使用Regex101.com对其进行测试后,结果如预期。
我不得不求助于 Termux,因为 Servers Ultimate Pro 的开发人员很长时间没有更新 Node.js 包,而且新的 ES6 功能破坏了我的脚本。浏览说明后,我已经通过 apt-get 安装了最新的 Node.js,我可以运行我的脚本。
但是,我必须输入:
$node storage/shared/folder_in_internal_android_memory/app.js
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我可以制作一个名为“bot.sh”的 bash 脚本:
#!bin/bash
node storage/shared/folder_in_internal_android_memory/app.js
Run Code Online (Sandbox Code Playgroud)
然后运行:
$bot
Run Code Online (Sandbox Code Playgroud)
我可以 cp 一个已经创建的脚本,但我不知道把它放在哪里以便我可以快捷地使用它。
当我在 Chromebook 的 shell 上编译我的 C++ 代码时,我收到错误bash: ./a.out: Permission denied. 即使我使用 sudo: 运行也会发生这种情况sudo: unable to execute ./a.out: Permission denied。为什么会发生这种情况?
bash ×10
linux ×6
command-line ×2
terminal ×2
ubuntu ×2
windows-10 ×2
windows-subsystem-for-linux ×2
android ×1
bash-alias ×1
chromebook ×1
find ×1
grep ×1
mac ×1
mount ×1
mv ×1
pecl ×1
regex ×1
script ×1
sudo ×1
upstart ×1