标签: bash

如何在shell脚本中包含目录中的所有文件(在这种情况下为/etc/init.d/iptables)

/etc/init.d/iptables start|stop|restart在不同的 ubuntu 服务器上有一个脚本(这是一个普通的 shell 脚本)

对于每个新服务,我必须编辑并插入一行以打开端口。这导致不同机器上有许多不同版本的 init.d 脚本。

是否可以自动包含假设所有文件/etc/iptables/include.d/

目标是在/etc/init.d/iptables的启动函数中应该只有一行,如

include /etc/iptables/include.d/*
Run Code Online (Sandbox Code Playgroud)

/etc/iptables/include.d/我添加了一个附加文件之后,我只想说

/etc/init.d/iptables restart
Run Code Online (Sandbox Code Playgroud)

编辑:正如 Saurabh 指出的那样,当命令需要特定顺序时,这可能会导致问题。高级设置可能有不同的目录,例如:

/etc/iptables/include01.d/
/etc/iptables/include02.d/
/etc/iptables/include03.d/
Run Code Online (Sandbox Code Playgroud)

并像这样包括它们:

    包含 /etc/iptables/include01.d/*
    ...也许一些代码在主文件中......
    包括/etc/iptables/include02.d/*
    包括/etc/iptables/include03.d/*

linux unix shell bash iptables

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

从 bash 脚本检测 Ubuntu 键盘

请原谅我对 linux 操作系统/硬件问题的无知......我只是一个程序员 :)

我有一个应用程序调用一些 bash 脚本来启动外部应用程序,在这种情况下是 Firefox。该应用程序在具有触摸屏功能的信息亭上运行。在启动 Firefox 时,我还启动了一个允许用户进行键盘输入的虚拟键盘应用程序。

然而,信息亭还具有 PS/2 和 USB 插槽,允许用户插入键盘。如果插入了键盘,如果我不必启动虚拟键盘并为 Firefox 窗口提供更多屏幕空间,那就太好了。

有没有办法让我检测键盘是否从 bash 脚本插入?它会出现在 /dev 中,如果是,它会出现在一致的位置吗?如果用户使用 PS/2 或 USB 键盘会有所不同吗?

谢谢!

ubuntu bash keyboard

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

如何删除文件中的标记文本块?

如何使用 sed、grep 或其他程序删除文件中标记文本块的所有实例?

如果我有一个包含以下内容的文件:

随机
文本
// START TEXT
内部
文本
// END TEXT

随机
// START TEXT
asdf
// END TEXT
文本

如何删除开始/结束行中的所有文本块,生成以下内容?

随机
文本
更多
随机
文本

scripting linux bash grep sed

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

如何在linux上预先创建目录用于文件存储

寻找一种在 linux 上预先创建目录以用于存储大量文件的方法。

我们将使用GUID生成文件 ID - 我需要在 Linux Web 服务器上保留这些文件的副本。我计划使用子目录来拆分文件(它是 ext3)...例如,文件名 055c102b-62fb-4671-a3c7-68b9515ec53e.swf 将位于 /data/files/0/5/5/055c102b- 62fb-4671-a3c7-68b9515ec53e.swf(取前3个字符作为目录名)

我的问题是 - 如何提前创建 /data/files/?/?/?/ 目录?在哪里 ?可以是 az 或 0-9

linux bash directory

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

修复目录和文件所有权的 Bash 脚本

我的客户让我将一些文件夹部署到他客户网站的一堆主目录中。我使用 Bash 脚本完成了此操作,但最终使用了 root 帐户权限。

我如何制作一个 Bash 脚本来获取 /home/用户下的每个文件夹(不是隐藏文件或文件夹),获取该文件夹的用户和组所有权,然后执行 chown -R {user}.{group} /home /用户

服务器正在运行 CentOS Linux。

linux permissions bash directory

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

在来自命令行的 Subversion 提交消息中使用换行或回车

我在 Ubuntu 10.04 上使用 Subversion 1.6.6,运行 bash shell。我想在我的提交消息中插入回车、换行或换行符,以便在阅读日志时,注释的格式正确。当我使用系统编辑器或为提交注释指定一个文件时,它工作正常,但我真正想要的是能够执行以下操作:

svn ci -m "This is the first line\nThis is the second line"
Run Code Online (Sandbox Code Playgroud)

并将评论显示为:

This is the first line
This is the second line
Run Code Online (Sandbox Code Playgroud)

我的例子不起作用,它产生输出:

这是第一行\n这是第二行

那么,有没有办法做到这一点?如果是这样,如何?

linux bash command-line-interface svn

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

-bash: ./flume: 没有这样的文件或目录但是水槽在那里并且在其他地方工作

我们有一个构建在 CentOS 4 32 位 Linux 上的产品,它可以在 32 位和 64 位 CentOS/RHEL 4 和 5 以及 SLES 10 上未经修改地运行。它也在 SLES 9 64 位上未经修改地运行。[SLES 9 32 位需要不同的 libstdc++。

主二进制可执行文件的名称是 flume

昨天我们尝试将它放在 64 位 Ubuntu 10 上,即使文件在那里并且大小合适,我们也会得到:

-bash: ./flume: No such file or directory
Run Code Online (Sandbox Code Playgroud)

file flume 显示它是一个 32 位 ELF(不记得确切的输出,并且系统位于隔离网络上)

如果放入/usr/local/bin,则:

which flume
/usr/local/bin/flume
Run Code Online (Sandbox Code Playgroud)

我还没有尝试 ldd flume

我现在怀疑某个图书馆不存在。

这是一个非常无益的信息,也是我以前从未见过的。

这是 Ubuntu 特有的,还是仅此安装特有的。

我们放弃并转向 RHEL 4 系统,一切都很好。但我确实想知道是什么导致了这种情况。

ubuntu bash

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

在 bash 中转义星号 (*) 字符

我就是做不到。如果 * 在变量中,则扩展为当前文件夹中的文件列表。echo "*" 工作正常。

#!/bin/bash
c="GRANT ALL ON \*.* TO '$1'@'localhost';"
mysql < $c
exit 0;
Run Code Online (Sandbox Code Playgroud)

linux bash

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

将服务器添加到 known_hosts

我想从命令行将 github.com 添加到 known_hosts 文件,因为我正在创建一个 puppet 清单来配置远程服务器。

我试过了:

"ssh-keyscan -H github.com > /home/ubuntu/.ssh/known_hosts"
Run Code Online (Sandbox Code Playgroud)

但是当服务器尝试访问github时:

Failed to add the RSA host key for IP address '207.97.227.239' to the list 
of known hosts (/home/ubuntu/.ssh/known_hosts).
Run Code Online (Sandbox Code Playgroud)

我也试过:

"ssh-keyscan -H github.com,207.97.227.239 > /home/ubuntu/.ssh/known_hosts"`
Run Code Online (Sandbox Code Playgroud)

但是访问github抛出:

Host key verification failed.
Run Code Online (Sandbox Code Playgroud)

我确定这没有其他用途,但是如果我 ssh 我的服务器,然后 ssh github 并按照步骤操作,我会收到以下消息Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts,然后它将完美运行。

谢谢

ubuntu ssh bash puppet

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

如何获取通过管道传输到 tee 的进程的退出代码?

我有这样的 bash 代码(Mac OS X):

foo.sh | tee foo.log echo $?

问题是那$?包含 tee 的退出代码而不是 foo.sh 的退出代码。如何获取 foo.sh 的退出代码?

shell bash mac-osx

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