标签: bash

如何在 Windows 10 中启用 Bash?

虽然它似乎与这个问题重复,但事实是,微软最近宣布 bash 将直接从 Windows 运行

显然,我更喜欢在安装 cygwin 之前使用该解决方案。

问题是,那篇博文有点说这已经是可能的,但我找不到在我的 Windows 安装中启用它的方法。

我应该怎么做才能按照链接的微软博客文章中的说明直接运行 bash?

bash windows-10

3
推荐指数
1
解决办法
1988
查看次数

Bash 通过解析 find 的输出来移动和重命名

我嵌套了 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中的解析和变量赋值。如何在“/”处拆分路径并形成如上所述的新路径和文件名?

提前谢谢了!

linux bash command-line find mv

3
推荐指数
1
解决办法
1350
查看次数

如何在终端底部上方添加空行

在 vim 和许多其他文本编辑器中,您可以将文件末尾向上滚动到屏幕顶部,同时将其余行显示为空白。但是在终端中,默认情况下,行尾固定在终端屏幕的末尾,因此您当前的行始终出现在底部。在最后一行和屏幕底部之间添加空行时,如何向上滚动当前行?

谢谢

linux mac terminal bash ubuntu

3
推荐指数
1
解决办法
1994
查看次数

Windows 10 Ubuntu Bash:别名不起作用(:找不到命令)

我在 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

3
推荐指数
1
解决办法
7645
查看次数

从 Windows 创建文件夹,然后从 Windows 10 WSL 中的 Bash 访问

我正在从 Windows 运行 Ubuntu。

当我从newFolder根目录中调用的Windows 创建一个文件夹C:\Users\myuser\AppData\Local\lxss\root\Newfolder时,当我运行时从 Bash创建一个文件夹时,我ls没有看到刚刚创建的新文件夹。

我该如何解决这个问题,以便我可以从 Windows 创建文件夹和文件,然后从 Bash 访问它们?

bash ubuntu windows-10 windows-subsystem-for-linux

3
推荐指数
2
解决办法
2万
查看次数

我怎样才能幂等地 pecl 安装一个模块两次?

我有一个应该可以重新运行的 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 但是有没有更简单的方法来实现相同的目标?

linux bash pecl

3
推荐指数
1
解决办法
1365
查看次数

如何将新贵启动的进程置于前台?

是否可以将 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)

linux bash upstart

3
推荐指数
1
解决办法
454
查看次数

带有包含管道字符的正则表达式的 grep

我正在尝试使用包含管道字符的正则表达式进行 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对其进行测试,结果如预期。

linux bash grep regex command-line

3
推荐指数
1
解决办法
7408
查看次数

如何在 Termux 终端 android 应用程序中制作快捷方式 bash 脚本?

我不得不求助于 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 一个已经创建的脚本,但我不知道把它放在哪里以便我可以快捷地使用它。

linux script terminal bash android

3
推荐指数
1
解决办法
2万
查看次数

即使使用 sudo,Chromebook 的权限也被拒绝

当我在 Chromebook 的 shell 上编译我的 C++ 代码时,我收到错误bash: ./a.out: Permission denied. 即使我使用 sudo: 运行也会发生这种情况sudo: unable to execute ./a.out: Permission denied。为什么会发生这种情况?

mount sudo bash chromebook

3
推荐指数
1
解决办法
8725
查看次数