我有数千个目录,它们都有这种格式;
/var/www/vhosts/[USERNAME].company.com/conf/
Run Code Online (Sandbox Code Playgroud)
我有一个名为 x.txt 的文件,它的内容应该有
[USERNAME] and some static text...
Run Code Online (Sandbox Code Playgroud)
因此,当我执行 dir /var/www/vhosts/*/conf/ 时,我获得了需要将文件复制到其下的所有目录,但是,我不知道如何获取该 [USERNAME] 并将其放入我需要复制的那个文件。
欢迎所有建议。我只能在这个环境中使用 shell 脚本。
谢谢,
你好,
我正在编写一个简单的 bash 脚本,需要将文件的内容解析为数组。文件中的条目以“换行符”分隔——所以文件看起来像这样:
path/to/file
path/to/other/file
Run Code Online (Sandbox Code Playgroud)
我想解析内容并迭代它们。我的代码目前看起来像:
CONTENT=`cat /path/to/text/file.txt`
for PATH in $CONTENT
do
echo $PATH
chmod -R 440 $PATH
fi
Run Code Online (Sandbox Code Playgroud)
此代码适用于带有 UNIX 行结尾的文件。但是,对于 Windows 格式的文本文件,它会令人窒息。“echo $PATH”语句生成正确的路径,但 chmod 失败,表示该文件不存在。我的诀窍是 Windows 行尾没有被修剪,所以它试图修改一个包含换行符的文件路径。
无论目标文件是使用 Unix 还是 Windows 换行符创建的,我都需要使这件事起作用——但鉴于我对 shell 脚本有点陌生,我不太确定该怎么做。
我感谢您的帮助!
我有一个用 sudo -- 调用的脚本,我sudo script希望能够看到运行该脚本的用户的用户名(不是 root)。
坚持whoami或id -un在脚本内只是给我root。
一个应用程序在我的 /tmp 目录中创建了一个名为“-123456”的目录。
在 Bash 中,rm -rf * 返回:bash: cd: -7: invalid option
rm -rf "-123456" 同样的事情。
帮助?
我有一个在 CentOS 5.4 上用 yum 安装的软件包列表
[root@server ~]# yum list installed
...
Installed Packages
GConf2.x86_64 2.14.0-9.el5 installed
ImageMagick.x86_64 6.2.8.0-4.el5_1.1 installed
MAKEDEV.x86_64 3.23-1.2 installed
MySQL-python.x86_64 1.2.1-1 installed
Run Code Online (Sandbox Code Playgroud)
我想rpm使用本地下载这些
yumdownloader --resolve MySQL-python-1.2.1-1.x86_64 等等。
但是包格式不同(MySQL-python.x86_64 1.2.1-1vs MySQL-python-1.2.1-1.x86_64)所以我无法使用上面的命令下载它们。
我不想解析 的输出yum list installed,也不想使用 的内容,/var/log/yum.log*因为我必须考虑擦除的包和版本差异。但是/var/log/yum.log*确实有我需要的格式...
May 25 14:58:15 Installed: groff-1.18.1.1-11.1.x86_64
May 25 14:58:15 Installed: bzip2-1.0.3-4.el5_2.x86_64
Run Code Online (Sandbox Code Playgroud)
有什么建议?
正如标题所暗示的,哪个更适合匹配数字,[[:digit:]]还是[0-9]?
我正在使用 bash shell
谢谢 :)
我的红帽 linux 盒子上有一小段代码,比如
echo $ddate";"$time";"$cpu >> /home/logfile
输出在 vi
2010-04-10 12:23:32;01
2010-04-10 12:23:32;01
2010-04-10 12:23:32;01
Run Code Online (Sandbox Code Playgroud)
但是当我将它 ftp 到 Windows 机器并在记事本中打开它时
我懂了
2010-04-10 12:23:32;01 [] 2010-04-10 12:23:32;01 [] 2010-04-10 12:23:32;01
Run Code Online (Sandbox Code Playgroud)
它显示在一行中,如果我将其复制到 excel 中,则显示在不同的行中。
我的猜测是记事本无法理解换行符 []
有没有办法可以用不同的方式编写它,以便它可以在记事本中正确显示。
在 Unix 中分隔常规命令是将分号放在最后,如下所示:
cd /path/to/file;./someExecutable;
Run Code Online (Sandbox Code Playgroud)
但它似乎不适用于这样的命令:
./myProgram1 > /dev/null &
./myProgram2 > /dev/null &
=>./myProgram1 > /dev/null &;./myProgram2 > /dev/null &;
Run Code Online (Sandbox Code Playgroud)
有没有办法将这些命令分开?
另外,如果我将粘贴复制到命令提示符,以下两种情况是否相同?谢谢。
cd /path/to/file;./someExecutable;
cd /path/to/file;
./someExecutable;
Run Code Online (Sandbox Code Playgroud) 我可以使用此脚本从 linux 连接到 windows RDP 会话:
#!/bin/bash
/usr/bin/rdesktop -N -x m -u Administrator -p secret123 -d DOMAIN1 127.0.0.1:33891
Run Code Online (Sandbox Code Playgroud)
(远程 Windows 服务器的 rdp 端口被安全地隧道连接到本地主机上的端口 33891)
但是这个脚本没有正确传输密码:
#!/bin/bash
/usr/bin/rdesktop -N -x m -u Administrator -p #secret$123# -d DOMAIN2 127.0.0.1:33892
Run Code Online (Sandbox Code Playgroud)
我必须如何对密码中的特殊字符进行编码?
我还想知道如果我选择 /bin/sh 作为脚本的 shell 是否会有所不同。
编辑:
我发现这有效:
\#秘密\$123\#
基本上,我正在尝试设置一个 shell 脚本,让我在新服务器上自动配置一些参数
特别是,我想在 php.ini 中设置
error_log= /var/log/php_errors.log error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
在我的 bash 脚本中,我有这个:
ERROR_REPORTING="error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED"
ERROR_LOG="/var/log/php_errors.log"
#CREATE LOG FILE
sed -i 's/error_reporting = .*/error_reporting = '${ERROR_REPORTING}'/' /etc/php.ini
touch $ERROR_LOG
chown apache:apache $ERROR_LOG
#The ; in the next line is because the line is commented by default on RHEL5
sed -i 's/;error_log = .*/error_log = '${ERROR_LOG}'/' /etc/php.ini
Run Code Online (Sandbox Code Playgroud)
但是,这似乎不起作用,并且错误对我来说并不明显……有人可以纠正我的错误吗?