标签: bash

Windows 10 上 Ubuntu 上的 Bash 中的磁盘设备

在 Windows 10 中,您可以在 Windows上的 Ubuntu 上启用 Bash。我已经这样做了,但我正在努力弄清楚如何访问磁盘设备。例如,在普通的 Ubuntu 中,如果我想将一个闪存驱动器的低级副本复制到另一个,我可能会执行dd if=/dev/sdb of=/dev/sdc bs=4K,但这些/dev/sd?设备似乎不存在于 Windows 上的 Ubuntu 上的 Bash 中。lsblk也没有列出任何设备。既然dd安装了,我想相信一定有办法访问磁盘设备。这能做到吗?如何?

在 Windows 上的 Ubuntu 上重击

bash hard-drive windows-10 windows-subsystem-for-linux

6
推荐指数
1
解决办法
7710
查看次数

如何grep并只获取匹配的字符串?

随意更改标题,因为它与我的问题 100% 不匹配

我在一个文件中有这样的东西:

junk
long_ass_string "/I/want/this/$code/$name" long_ass_string
junk
Run Code Online (Sandbox Code Playgroud)

举例说明:

  • /我/想/本/部分始终是相同的
  • $code$name是动态的,每个字符串都不同
  • long_ass_string中可以有更多的/I/want/this/$code/$name字符串,我想获得所有这些字符串。
  • 引号 (this => " ) 出现在每个/I/want/this/$code/$name字符串中。

到目前为止,我已经尝试...

grep -w "/I/want/this/*" file# 输出 long_ass_string
grep -o "/I/want/this/*" file# 输出 /I/want/this/

想避免使用仅在之前和/或之后获得 x 个额外字符的解决方案

linux bash grep

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

如何摆脱 ssh 登录时的错误消息 --> “setterm:终端 xterm 不支持 --blength”

每当我 ssh 进入我的arch linux框时,我都会收到此错误消息:

setterm: terminal xterm does not support --blength
Run Code Online (Sandbox Code Playgroud)

同样在执行时:

$ sudo su -
Run Code Online (Sandbox Code Playgroud)

有趣的是在使用时不是

$ sudo su
Run Code Online (Sandbox Code Playgroud)

我已经筛选了各种手册页,试图找到设置此终端属性的位置。那些包括settermterminfo。我走了这么远

find / -type f -iname "terminfo" -exec grep -i blength {} \;

那返回了 0 个结果。也调查过/etc/.bashrc/etc/bash.basrc但没有发现任何调用setterm甚至包含*blength*在其声明中的内容。

这个问题真的只是一个小麻烦,但我觉得它非常令人恼火,因为我不喜欢看到running使用systemctl status --system. 此外,我确保 PuTTY(使用 SuperPuTTY 作为其前端)没有传递任何命令。我真的很感激关于这个问题的一些建议。非常感谢。

terminal bash xterm putty arch-linux

6
推荐指数
1
解决办法
3412
查看次数

从多个 Markdown 文件编译 PDF 书

我有一个这样的文件夹结构,根据主题在目录中包含配方 .md 文件:

Recipes
    |- Mains
    |   |- recipe1.md
    |   |- recipe2.md
    |- Desserts
        |- recipe3.md
        |- recipe4.md
Run Code Online (Sandbox Code Playgroud)

如何将所有这些 Markdown 文件编译成一本 PDF 书?

我需要每个食谱占据一个单独的页面,标题部分(章节)由找到食谱的文件夹定义。我还想要一个包含每个食谱名称的目录,它在哪个页面上以及它在哪个章节中。

我可以使用 pandoc 和 LaTeX 来做到这一点吗?或者也许是一个命令行程序来构建维基?

pdf bash markdown pandoc

6
推荐指数
1
解决办法
3389
查看次数

WSL - 将尾随空格添加到 Bash 代码中,根据窗口大小粘贴到 CMD WSL TTY 中

我在 Windows 上有一些 Bash 脚本,有时我会将它们从 Notepad++ 复制到 WSL(基于 CMD)终端仿真器 (TTY) 中以执行它们。

问题:

当我通过以下命令将其复制并粘贴到 WSL Nano 中时,尾随空格(nano 中的绿色框)会添加到每个脚本中:

nano ~/script.sh
Run Code Online (Sandbox Code Playgroud)

这些尾随空格字符不是脚本的一部分,实际上会破坏它在 Linux 中的执行,因此不应该在脚本中。

WSL TTY 窗口越窄,粘贴时形成的回车就越多。

当我用 Nano 打开脚本时,脚本一直包含这些绿色框,当文件被保存时,它似乎没有去掉这些字符(应该是这样),所以有人可以声称这是 Nano 中的一个错误,但实际上dos2unix是在文件上执行也不会去除尾随的空格。

在此处输入图片说明

在此处输入图片说明

想要的情况:

我希望在将 Bash 脚本(或任何其他数据)从 Windows 复制和粘贴到 WSL Nano 时,复制时不会形成尾随空格。

更多信息:

https://github.com/Microsoft/BashOnWindows/issues/2006

https://savannah.gnu.org/bugs/?50879

如果您尝试在 WSL 中重现:

  1. 确保从 Notepad++ 复制脚本,该脚本具有 Unix EOL (LF),并且仅包含制表缩进。
  2. 确保您的 nano 脚本文件以 结尾.sh,因此您将获得 Bash 突出显示。如果您仍然没有它,请尝试通过 SSH 隧道连接到远程 Ubuntu 服务器(如果您有)并在那里以相同的方式创建脚本文件,那么您肯定会有这种行为。
  3. 无论哪种方式,请确保您的 Nano 窗口很窄(大约占视口的 25-50%)并且您粘贴了大部分文本)。

bash tty carriage-return cmd.exe windows-subsystem-for-linux

6
推荐指数
2
解决办法
839
查看次数

哪些 bash rc 文件在非交互式/非登录 shell 上运行?

我的理解

  • 没有为非交互式/非登录 shell 调用 rc 文件;例如,那些由cron运行的
    (我不确定这一点,并且会依靠社区的专业知识)

  • 非交互式shell 需要设置BASH_ENV环境变量,这样才能将其设置为特定的 rc 文件(例如,BASH_ENV=$HOME/.bash_profile

希望

我不确定是否有过多的 rc 文件可用,所以很好奇是否有我不熟悉的文件。希望找到一个满足以下条件的rc文件:

  • 无论交互/登录模式如何调用,因此全局 shell 环境变量可以在一个地方设置
  • 表现更像 csh/tcsh

linux bash cron bashrc bash-scripting

6
推荐指数
1
解决办法
3503
查看次数

列出大于指定大小的文件,然后创建它们的 md5sum 或 sha256sum

我想知道如何从当前目录中的文件(超过指定大小的文件)创建一个包含 md5sums 的列表。我可以做一个或另一个,但我不知道如何将两者结合起来。

terminal bash md5sum

6
推荐指数
1
解决办法
495
查看次数

如何让Powershell脚本执行git命令?

再会!

我根本不熟悉 Powershell,我想制作一个脚本,该脚本每晚凌晨 2 点在给定目录位置执行 git pull 命令。所以基本上脚本必须“cd”到那个位置,然后执行“git pull”。

我知道 Windows 有调度程序,您可以在其中调用脚本,我只是不知道如何制作该脚本。

提前致谢。

温暖的问候。

powershell bash git command-line

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

在命令提示符下运行 PHP 有效,但在 Git Bash 中无效

我最近买了一台新的笔记本电脑,并且正在对其进行设置。

我已经安装了 WAMP,这是我用来进行 PHP 开发的工具(安装 Apache2、MySql 和 PHP)。

我也喜欢使用 Git Bash 作为我首选的命令行工具,但是当我尝试通过命令行使用 PHP 执行任何操作时 - 我得到了一个奇怪的结果;没有任何反应,也没有错误:

在此处输入图片说明

现在,如果我通过命令提示符运行它,它工作得很好:

在此处输入图片说明

我已经为 PHP 设置了正确的 PATH 变量并进行了三重检查:

在此处输入图片说明

我该怎么做才能让 PHP 通过我的 Git Bash 命令行工作?

编辑

的输出ll /c/wamp64/bin/php/php7.0.10/php

-rwxr-xr-x 1 james.b 1049089 122368 Aug 18  2016 /c/wamp64/bin/php/php7.0.10/php*
Run Code Online (Sandbox Code Playgroud)

的输出echo $PATH | tr ":" "\n"

/c/Users/James.b/bin
/mingw64/bin
/usr/local/bin
/usr/bin
/bin
/mingw64/bin
/usr/bin
/c/Users/James.b/bin
/c/ProgramData/Oracle/Java/javapath
/c/WINDOWS/system32
/c/WINDOWS
/c/WINDOWS/System32/Wbem
/c/WINDOWS/System32/WindowsPowerShell/v1.0
/c/Go/bin
/c/wamp64/bin/php/php7.0.10
/c/ProgramData/ComposerSetup/bin
/c/Program Files/Microsoft/Web Platform Installer
/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/110/Tools/Binn
/c/Program Files (x86)/Microsoft SQL Server/120/Tools/Binn …
Run Code Online (Sandbox Code Playgroud)

bash command-line environment-variables php git-bash

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

echo $(pwd) 和 echo "$(pwd)" 有什么区别?

echo $(pwd)和之间有什么区别echo "$(pwd)"

我记得它们是同一个东西,但是这两个命令给了我不同的输出。

这是我的输出:

/usr/share/locale ? 21:19:24
$ echo $(pwd)
 usr shar  l cal 

/usr/share/locale ? 21:19:32
$ echo "$(pwd)"
/usr/share/locale
Run Code Online (Sandbox Code Playgroud)

好像掉了很多字符echo $(pwd),所以很多脚本不能正常运行。例如,我必须使用eval "$(something --alias)"而不是eval $(something --alias).

我尝试过echo $(pwd)echo "$(pwd)"在 docker 容器中,输出是相同的。

我的系统有问题吗?

linux bash shell

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