标签: bash

从一个 shell 脚本导入另一个 shell 脚本中的变量而不执行引用的 shell 脚本

我有 2 个 shell 脚本,file1.sh 和 file2.sh

文件1.sh

#!/usr/bin/env bash 
export var1="/data/share"
export var2='password'
echo "Hello"
Run Code Online (Sandbox Code Playgroud)

文件2.sh

#!/usr/bin/env bash 
source file1.sh
echo $var1
echo $var2
Run Code Online (Sandbox Code Playgroud)

当我执行 file2.sh 时,我得到以下输出

Hello
/data/share
password
Run Code Online (Sandbox Code Playgroud)

但我的预期输出是

/data/share
password
Run Code Online (Sandbox Code Playgroud)

file1.sh 在 file2.sh 中引用时被执行。如何在 file2.sh 中单独导入变量而不执行 file1.sh?

linux bash shell command-line shell-script

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

编写 bash 函数时出现意外标记“(”附近的语法错误

我有

testapi() { docker-compose -f /home/me/projects/api/docker-compose.yml run -e "API_BRANCH=${1-master}" --rm api_test ;}
Run Code Online (Sandbox Code Playgroud)

它会导致错误:

$ src
bash: /home/me/.bash_profile: line 56: syntax error near unexpected token `('
bash: /home/me/.bash_profile: line 56: `testapi() { docker-compose -f /home/me/projects/api/docker-compose.yml run -e "API_BRANCH=${1-master}" --rm api_test ;}'
Run Code Online (Sandbox Code Playgroud)

运行会产生帮助消息:

$ testapi
Run a one-off command on a service.

For example:

    $ docker-compose run web python manage.py shell
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏,ty

linux bash ubuntu docker

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

在适用于 Linux 的 Windows 子系统中更改光标形状

有没有办法改变 Linux 终端的 Windows 子系统中的光标形状?我希望光标能够反映我在 vim 或 vi 模式下所处的状态。

例如,在 Git Bash 中,我可以使用echo -ne "\e[2 q"echo -ne "\e[6 q"在块光标和行光标之间切换。这些在WSL中似乎没有任何作用。

bash windows-subsystem-for-linux windows-10-v1607

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

可以删除 Notepad++ 样式吗?(我的意思是样式配置器的语言颜色样式)

我在 Notepadd ++ 中使用 Unix .sh文件时遇到以下问题:

如果整个文档的内容用heredoc命令包装,则整个文档将以一种颜色着色。例如:

**<< 'EOF0'**

Content of the document --- All of which will be dyed in a single color.

**EOF0**
Run Code Online (Sandbox Code Playgroud)

图片示例:

1 - 没有定界符:

在此输入图像描述


2 - 使用定界符:

在此输入图像描述


为什么我刚才描述的情况是有问题的:

当使用很长的脚本时,由于一个(heredoc)命令,所有内容都以一种单一颜色着色,这可能会很烦人,当您知道在一天结束时,使用多个命令会更舒服-color 文档,就像没有此命令一样。

我试图解决它:

我试图去Settings > Style configurator > Language --- Bash那里以某种方式完全删除 HERE DELEM && HERE Q,但我在 GUI 中没有找到这样的方法。

我的问题:

如何从 Notepad++ 中删除这两种样式(或任何其他样式),以便它们不会影响 .sh 文档中文本的颜色?(在我的例子中是 .sh 文件)?

我只是不让这样的包装器(heredocs 是文本包装器)以任何颜色着色...我只是想完全删除它们的“本机”Notepad++ 风格...

bash notepad++ colors

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

使用 BASH (OSX) 通过 USB 访问 MTP 设备

有许多 3rd 方应用程序允许通过 USB 访问 MTP 设备。这里只有 2 个 http://mac.eltima.com/sync-mac.html http://mac.eltima.com/mtp-file-transfer.html

所以我的问题是,为什么不能直接使用 bash 命令来做到这一点?有没有 bash 专家愿意插话?

文章从窗户上MTP装置

建议 将 MTP 设备公开为读/写文件系统是不可能的。

如果是这样,应用程序如何实现这一点?

usb bash mtp macos

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

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
查看次数

stty 的超级键符号

尝试在 ubuntu 盒子上交换 Ctrl 和 Super 键。

已成功使用 xmodmap 交换 Super 和 Ctrl。现在我只需要将 stty intr 更改为 Super_L + C

我一辈子都找不到超级键的符号。(例如^是控制键)

有谁知道 super 和 stty 的表示法是什么?我希望能够打字

stty intr Super_L + C
Run Code Online (Sandbox Code Playgroud)

例如。

或者其他更好的方法让 Super+C 成为中断

linux bash ubuntu stty

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

如何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 登录时的错误消息 --&gt; “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
查看次数