标签: bash

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

如何使用 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万
查看次数

使用另一个变量作为一部分的 Bash 变量赋值

我有以下摘录自用于备份数据库的 bash 脚本

#!/bin/bash
DB=database_name
DBUSER=username
FILENAME=$DB_$(date +%s).sql
Run Code Online (Sandbox Code Playgroud)

我想重新使用的值DB的范围内FILENAME变量赋值,但它不会让我使用替代这种方式。我只是得到文件名的时间戳。

是否有可能实现我想要的,如果是这样,语法是什么?

谢谢。

scripting bash

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

如何让 bash 将 shell 命令记录到 syslog?

Bash 4.1能够将历史记录到系统日志中。但是我似乎无法让它在 FreeBSD 8 下工作。
我尝试从端口重新编译 bash,-DWITH_SYSLOG=但无济于事。有没有人设法让日志记录在 FreeBSD 下工作?Linux呢?

linux freebsd bash

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

使用 Expect 的 SU 和运行命令

我想 su 到另一个用户,使用 expect,然后以该用户身份运行图形程序。我正在使用 kcalc 进行测试:

#!/usr/bin/expect
set timeout 20
spawn su dummy
expect "Password:"
send "PASS\r";
send "kcalc\r"
Run Code Online (Sandbox Code Playgroud)

我还尝试删除最后一行并将 su 更改为“su dummy -c kcalc”,但这也不起作用。我很感激任何帮助。

linux su bash expect

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

将服务器添加到 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
查看次数