我正在处理 shell 脚本,我想将命令的 O/P 存储在数组中。我有一个包含行和列的文件,我想从中提取第三列并将所有值存储在数组中。如果假设我的文件中有以下内容info.txt
abc xyz pqr akl
mnt var man lak
qer tag sam bob
Run Code Online (Sandbox Code Playgroud)
我想在数组中存储 pqr、man 和 sam 让我们调用 name[1], name[2], name [3]
有人可以帮我解决这个问题。
我正在运行默认 Debian linux 的 Amazon ec2 实例上运行一个网站。我设置了一个 cronjob 来复制站点文件,获取数据库印记,然后将它们压缩。我想将文件存档保存在与 bash 脚本本身相同的目录中,该目录位于 /var/www/[a new directory]/[a new directory]/[etc]/ 中的深处。我创建了一个只能读取和转储数据库,但不能写入的 mysql 用户。
脚本如下
#/bin/bash
CURRPATH=$(pwd)
SITEPATH="/var/www/html"
MYSQLUSER="user"
MYSQLPASS="password"
MYSQLDB="database"
CURRDATE=$(date +"%Y-%m-%d__%T_%p")
DATETAG="Backup_$CURRDATE"
TEMPDIR="$CURRPATH/$DATETAG"
ARCHIVENAME="$DATETAG.zip"
# I first copy the files so I can stick a database imprint in the same directory
cp -r "$SITEPATH/" "$CURRPATH/"
mv "$CURRPATH/html" "$TEMPDIR"
mysqldump -u "$MYSQLUSER" -p"$MYSQLPASS" "$MYSQLDB" > "$TEMPDIR/BackupDB_$CURRDATE.sql"
cd $CURRPATH
zip -r "$ARCHIVENAME" "$DATETAG"
rm -rf "$TEMPDIR"
Run Code Online (Sandbox Code Playgroud)
我用 crontab 设置了这个,它完美地工作,除了一个问题 - 存档最终在 ~/root 文件夹中(我用 root 用户设置了 …
这几年出现了一些Linux系统在运行各种命令时会输出奇怪的字符。这是我sensors在其中一台机器上的命令输出的示例:
acpitz-virtual-0
Adapter: Virtual device
temp1: +45.5°C (crit = +126.0°C)
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +44.0°C (high = +100.0°C, crit = +100.0°C)
Core 1: +45.0°C (high = +100.0°C, crit = +100.0°C)
nouveau-pci-0100
Adapter: PCI adapter
temp1: -62.0°C (high = +95.0°C, crit = +99.0°C)
Run Code Online (Sandbox Code Playgroud)
注意Â整个地方的角色。为什么在某些环境中会发生这种情况,而在其他环境中不会发生这种情况?我能做些什么来纠正这个问题?
我正在尝试将系统所有用户的提示值($PS1 变量)更改为相同的值。
我将以下内容存储在文件 /etc/ps1 中:
PS1='`
if [ $? -eq 0 ];
then echo -n "\[\033[00;35m\]\u\[\033[01;32m\]@\[\033[00;35m\]\h\[\033[00;32m\](\[\033[01;35m\]\W\[\033[01;32m\])\[\033[00;32m\]\$";
else echo -n "\[\033[00;35m\]\u\[\033[01;31m\]@\[\033[00;35m\]\h\[\033[01;31m\](\[\033[35m\]\W\[\033[31m\])\[\033[00;31m\]\$";
fi`\[\033[0m\]'
Run Code Online (Sandbox Code Playgroud)
在我的单用户帐户下,我可以将source /etc/ps1它添加到我的 ~/.profile 文件中(有趣的是,当我将它添加到 ~/.bashrc 时它不起作用)。如果我将其添加到 /etc/profile 或 /etc/bashrc.basrch 以使所有用户都发生这种情况,则不会发生任何事情。我正在拔头发试图让它发挥作用。这是在 Debian 7.1.0 (Linux 3.2.46) 上。
我有一个需要停止服务的小 shell 脚本。这需要在 ubuntu (14.04)、debian 和 Arch 上工作。现在我所做的类似于
case $(cat /etc/issue) 在
*Ubuntu*)
服务命令
*Debian*)
/etc/init.d/servicename 命令
*拱*)
systemctl 服务命令
esac
有没有更好的方法来做到这一点?
假设我有包含以下内容的文件 temp.txt:
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)
您将如何使用 BASH 从第 3 行开始读取文件的内容,以便输出如下所示:
3
4
5
6
Run Code Online (Sandbox Code Playgroud) lvextend 没有安装在我的 CentOS 映像上,我该如何安装?
# lvextend
-bash: lvextend: command not found
Run Code Online (Sandbox Code Playgroud) 我在 cron.d 中有一个条目:
31 17 * * * root /home/some_user/.bash_profile; /home/some_user/bin/some_script
Run Code Online (Sandbox Code Playgroud)
配置文件设置了一个特定的路径,我在配置文件中回显当前路径以确保其正确。但是,当脚本执行时,其中的命令失败,因为它不在 PATH 中,并且当我在脚本中显示当前 PATH 时 - 它不是配置文件中设置的。
为什么配置文件中设置的 PATH 在脚本的执行中不存在?
我有一个这样的脚本:
/root/bin/script1.sh
Run Code Online (Sandbox Code Playgroud)
将此行放在 .bashrc 中
/root/bin/script1.sh &
Run Code Online (Sandbox Code Playgroud)
script1.sh不运行 - 问题是 &。没有“&”脚本运行完美
我将点文件保存在公共 github 存储库中,其中包括我的 aws 密钥的路径,这似乎是一件等待发生的可怕事情。
所以它是这样的:
function superssh { ssh user@something -i /file/path/to/keys;}
Run Code Online (Sandbox Code Playgroud)
有什么更好的方法可以提高我的安全性?