Questions tagged «bash»

Bash是Bourne Again SHell,它是经典Unix sh(shell)的继承者。

5
将复杂的多行字符串写入变量的干净方法
我需要在bash脚本中的变量中写入一些复杂的xml。xml需要在bash脚本中可读,因为这是xml片段所在的位置,而不是从另一个文件或源中读取的。 所以我的问题是,如果我想在bash脚本中使用一个长字符串以使其易于阅读,那么最好的处理方法是什么? 理想情况下,我想要: 不必逃脱任何角色 跨多行使其可读 保持缩进 可以用EOF或其他方式完成此功能,有人可以给我一个例子吗? 例如 String = <<EOF <?xml version="1.0" encoding='UTF-8'?> <painting> <img src="madonna.jpg" alt='Foligno Madonna, by Raphael'/> <caption>This is Raphael's "Foligno" Madonna, painted in <date>1511</date>-<date>1512</date>.</caption> </painting> EOF
109 bash 



13
如何在bash脚本日志中添加时间戳?
我有一个不断运行的脚本,我输出到日志文件: script.sh >> /var/log/logfile 我想在附加到日志的每一行之前添加一个时间戳。喜欢: Sat Sep 10 21:33:06 UTC 2011 The server has booted up. Hmmph. 我可以使用柔术吗?
94 linux  bash  logging  shell 

9
mysqldump到tar.gz
通常在用mysqldump命令转储MySQL数据库后,我立即tar / gzip生成的文件。我正在寻找一种在一个命令中执行此操作的方法: 所以从这个: mysqldump dbname -u root -p > dbname.sql tar czvf dbname.sql.tgz dbname.sql rm dbname.sql 对于这样的事情: mysqldump dbname -u root -p > some wizardry > dbname.sql.tgz 甚至更好(因为我通常将转储文件保存到另一台服务器): mysqldump dbname -u root -p > send dbname.sql.tgz to user@host 我在debian上运行bash。
88 mysql  debian  bash  gzip  tar 

7
以没有nologin shell的用户身份运行脚本
我所需要做的就是以具有nologin/false指示的shell 的特定用户身份运行特定脚本/etc/passwd。 我将以root用户身份运行脚本,并且应该以其他用户身份运行。运行: ~# su -c "/bin/touch /tmp/test" testuser 可以,但是我需要测试用户的有效外壳。我知道我可以使用禁用密码passwd -d testuser并保留外壳,/bin/bash这样可以确保一点安全,但是我需要nologin/false外壳。 基本上,我需要的是crontab将作业设置为以特定用户身份运行时的操作,无论该用户是否具有nologin/false外壳。 ps我发现了该线程以nologin用户身份执行命令,但是我不知道concatenate该命令如何执行su -s /bin/sh $user我需要运行的脚本。
87 linux  bash  shell  su  login 


7
使用初始命令运行交互式bash子shell,而无需立即返回(“ super”)shell
我想运行一个bash子shell,(1)运行一些命令,(2),然后保留在该subshel​​l中以按照我的意愿进行。我可以单独执行以下每个操作: 使用-c标志运行命令: $> bash -c "ls; pwd; <other commands...>" 但是,执行命令后,它将立即返回“ super”外壳。我还可以运行一个交互式子shell: 开始新的bash过程: $> bash 直到我明确地说出来,它才会退出子外壳……但是我无法运行任何初始命令。我找到的最接近的解决方案是: $> bash -c "ls; pwd; <other commands>; exec bash" 它可以工作,但不是我想要的方式,因为它在一个子shell中运行给定命令,然后打开一个单独的命令进行交互。 我想单行执行此操作。退出子外壳后,我应该回到常规的“超级”外壳,而不会发生任何事件。一定有办法~~ NB:我没有问... 不问在哪里可以掌握bash手册页 不问如何从文件中读取初始化命令...我知道该怎么做,这不是我要寻找的解决方案 对使用tmux或gnu屏幕不感兴趣 不愿意为此提供背景信息。即,该问题是笼统的,并非出于任何特定目的 如果可能的话,我想避免使用变通办法来实现我想要的目的,但是要以一种“肮脏”的方式。我只想单行执行此操作。特别是我不想做这样的事情xterm -e 'ls'
86 bash 

7
您可以有多个〜/ .ssh / config文件吗?
我们有一个堡垒服务器,可用于连接多个主机,而.ssh / config已增长到一千多行(我们有数百个主机要连接)。这开始变得有点笨拙,我想知道是否有一种方法可以将.ssh / config文件分解为多个文件。理想情况下,我们将在其他地方指定将其他文件视为.ssh / config文件,这可能类似于: ~/.ssh/config ~/.ssh/config_1 ~/.ssh/config_2 ~/.ssh/config_3 ... 我已经阅读了ssh / config上的文档,但我认为这是不可能的。但是也许其他人也遇到了类似的问题并找到了解决方案。
82 linux  ssh  unix  bash 


12
如何在ssh上使用sudo运行任意复杂的命令?
我有一个只能以我的用户名(myuser)登录的系统,但是我需要以其他用户(scriptuser)的身份运行命令。到目前为止,我已经提出了以下命令来运行所需的命令: ssh -tq myuser@hostname "sudo -u scriptuser bash -c \"ls -al\"" 但是,如果在尝试运行更复杂的命令时(例如,[[ -d "/tmp/Some directory" ]] && rm -rf "/tmp/Some directory"我很快遇到引用问题)。我不确定如何将示例复杂命令传递给bash -c,当\"已经确定了我要传递的命令的边界时(因此我不知道如何引用/ tmp / Some目录,其中包括空格。 有没有一种通用的解决方案,无论引用多么复杂/疯狂,我都可以传递任何命令,还是我已经达到了某种限制?还有其他可能甚至更易读的解决方案吗?
80 ssh  bash  scripting  sudo 


7
记录管理员在生产服务器上运行的所有命令
管理员通过个人用户名登录服务器,然后运行sudo -i成为root 用户是公司的公司政策。在运行时sudo -i,sudo将创建一个名为的环境变量SUDO_USER,其中包含原始用户的用户名。 是否可以使用类似于以下语法的方式在syslog中记录所有命令: ${TIME/DATE STAMP}: [${REAL_USER}|${SUDO_USER}]: ${CMD} 一个示例条目为: Sat Jan 19 22:28:46 CST 2013: [root|ksoviero]: yum install random-pkg 显然,它不必完全是上面的语法,它只需要包含最少的实际用户(例如root),sudo用户(例如ksoviero)和运行的完整命令(例如yum)。安装random-pkg)。 我已经尝试过了snoopy,但是没有包含SUDO_USER变量。
70 centos  bash  logging  sudo 

8
如何获得刚刚开始的过程的pid
我想启动进程(例如myCommand)并获取其pid(以便稍后将其杀死)。 我尝试了ps并按名称过滤,但无法按名称区分进程 myCommand ps ux | awk '/<myCommand>/ {print $2}' 因为进程名称不是唯一的。 我可以通过以下方式运行流程: myCommand & 我发现可以通过以下方式获取此PID: echo $! 有没有更简单的解决方案? 我很乐意执行myCommand并通过一行命令获得其PID。
70 linux  unix  bash  process  pid 

10
bash与zsh相比的独特功能
我已经是zsh用户一段时间了(在tcsh之前和csh之前)。我对此非常满意,但是想知道zsh中是否存在bash的任何引人注目的功能。相反,有bsh中不存在的zsh功能。我目前的感觉是bash更好: 如果您已经熟悉它,并且不想学习新的语法。 默认情况下,它将在大多数* nix机器上都存在,而zsh可能是额外的安装。 不试图在这里展开宗教斗争,这就是为什么我只是在寻找仅存在于其中一个外壳中的功能。
67 bash  shell  zsh 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.