标签: bash

iTerm/OSX 终端:从窗口边缘更改文本边距

目前,我在 OS X 上使用 iTerm。我的终端看起来像这样:

我的终端

我在 GitHub 上看到了这张终端设置的图片,我想模仿一下:

目标终端

具体来说,我想更改窗口左侧/底部的填充/边距。虽然有问题的图片似乎使用了 OSX 的默认终端,但我希望它也可以在 iTerm 中完成,尽管特定于 OSX 终端的解决方案也可以工作。

我试过查看 iTerm 和 OSX 终端的首选项(特别是在 iTerm 的“窗口”部分下,但我已经看过其他地方),但我还没有找到调整字符从左侧开始的位置的选项。

我还尝试在 Bash 中以编程方式实现这一点:

bash -l | sed 's/^/ /'

这似乎工作得很好,尽管它只缩进程序输出,而不是我的提示行(而且我在将这样的管道命令设置为我的登录 shell 时遇到了麻烦)。

此外,它只是调整stdout,不会stderr与管道它bash -l 2>&1只是隐藏所有猛砸输出的完全。

我是否刚刚忽略了 iTerm/OSX 终端中的某些设置?有没有其他方法可以在终端窗口中设置“内部文本区域”(即沿边设置填充)?

terminal bash command-line macos

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

首先引用另一个文件的脚本

嗨,我有一个脚本,在其中我需要从脚本生成的 IP 中获取主机名。该脚本会将这些 IP 生成为 1 个只有 1 列的整洁文件。它实际上只是 IP 地址(每行 1 个)。我有另一个名为“db”的文件,如下所示:

IP Hostname
Run Code Online (Sandbox Code Playgroud)

'db' 是我的数据库,用于存储委派给这些 IP 的 IP 地址和主机名列表。这些是静态地址,不会改变,通常是服务器或交换机等。我需要的是脚本生成的 IP 地址,我想用这个数据库文件中的主机名 FIRST 解析它们,如果没有在那里找到它,然后运行host命令。我已经在做后者,host但我真的希望它们首先来自我的 db 文件。最终输出只需要 1 个文件和 1 列主机名。我有一些使用 awk 和数组的想法,但似乎无法完全得到我需要的东西。

networking linux script bash awk

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

rm -r 命令的警告

我想rm在递归删除目录时提示我,如下所示:

$ rm -r <dir>
Do you want to remove the dir(Y/N)?
Run Code Online (Sandbox Code Playgroud)

有没有我可以传递的论点可以rm做到这一点?

bash shell

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

获取 xargs:尝试在文件中查找文本时未终止的引号

我正在使用带有 bash shell 的 Mac 10.9.5。我试图在一组文件中搜索文本实例,但由于某种原因,在一个特定目录中,我收到了这个奇怪的“未终止的引用”错误......

Daves-MacBook-Pro:sbadmin davea$ find src/main/webapp/WEB-INF/ -name "*" | xargs grep 'addresses' > /tmp/addr
xargs: unterminated quote
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题?

bash grep xargs

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

如何杀死从 rc.local 开始的连续进程?

我正在使用 Raspbian(基于 Debian)操作系统开发 Raspberry Pi。为了测试,我在/etc/rc.local

python /home/pi/test.py
Run Code Online (Sandbox Code Playgroud)

启动此脚本运行良好。但问题是我忘记了脚本中有一个无限循环,例如:

while True:
    print 'Hello"
    time.sleep(5)
Run Code Online (Sandbox Code Playgroud)

这个循环阻塞了系统启动,所以我无法进入系统编辑脚本。Ctrl+C 无法杀死它。所以我想知道如何杀死一个从 开始的连续进程rc.local

linux debian bash raspberry-pi raspbian

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

循环脚本直到文件存在

我正在尝试让脚本在 /tmp 中找到一个名为 sleep.txt 的文件,但它一直在循环

这是我所拥有的:

#!/bin/sh

set -x
until [ $(ls -la | grep -w "sleep.txt" | wc -l) != 0 ];
do
        echo "Sleep.txt doesn't exist as of yet..."
done
        echo "Sleep.txt now exists!!!"
        sleep 2
exit
Run Code Online (Sandbox Code Playgroud)

bash shell-script

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

如何制作一个用今天的日期命名文件的 bash 脚本

我正在尝试制作一个脚本来备份我的服务器,但我对 bash 脚本的了解非常有限。我希望脚本将备份文件命名为 ht-“今天的日期”。我该怎么做?是否可以将命令(例如 date 命令)用作变量?

script bash shell bash-scripting

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

Bash 引号在命令替换时未转义

有人可以解释我为什么这样做(列出名称中包含空格的目录的内容):

ret="$(ls "my dir")"
Run Code Online (Sandbox Code Playgroud)

它不应该被解释为:

ret="$(ls "
my dir
")"
Run Code Online (Sandbox Code Playgroud)

例如:

ls "my" "dir"
Run Code Online (Sandbox Code Playgroud)

ls "my dir"
Run Code Online (Sandbox Code Playgroud)

linux unix script bash shell-script

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

apt-get 请求的脚本回答“要继续在 bash 中输入短语‘是的,按我说的做!’”

我的脚本正在 chroot 中用 systemd 替换 sysvinit,同时使用 debootstrap 构建 debian 映像。

由于这是一个“危险”的动作,apt-get 会问一个愚蠢的问题:“要继续输入‘是的,按我说的做!’”

我该如何编写对此的回复?

编辑:我尝试了所有 -y --yes --force-yes 选项,但它们不起作用。

debian bash debootstrap bash-scripting apt

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

粘贴以制表符开头的 Bash 命令时完成

我正在写一个Dockerfile我正在使用选项卡(我通常在任何地方都使用)进行格式化的文件。

但是我复制了一个多行命令,其中第二行以两个制表符开头,即:

apt-get -y update && \
    apt-get -y install collectd \ # begin two tabs
Run Code Online (Sandbox Code Playgroud)

第一行正确执行,但第二行尝试“自动完成”,显示所有可能的命令,然后:

> stall collectd
# [ apt-get updating ]
bash: stall: command not found
Run Code Online (Sandbox Code Playgroud)

我了解“自动完成”行为,但是stall collectd?为什么 Bash 会吃掉这apt-get -y in部分?

bash command-line readline autocomplete tab-completion

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