Questions tagged «bash»

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


3
如何通过脚本在Docker容器中设置root密码?
我有一个在主机上运行并创建/启动/停止Docker容器的脚本。我希望该脚本更改容器中root用户的密码。 由于容器是ssh服务器,因此我尝试: sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root' 但这不起作用。在继续并花费更多时间调试它之前,我想知道是否有更聪明的方法来进行此操作。 我了解正确的“ docker方式”是制作一个由Dockerfile运行的脚本,该脚本从共享卷中提取密码并将其设置为root密码。这听起来很复杂,但是我知道该怎么做,并且可以很好地用于我使用的另一个Docker映像。但是我不想为此做。 我只需要一个使用Docker或ssh来非交互地更改用户密码的命令。
11 ssh  bash  docker  passwd 

2
为什么在主管中使用`bash -c`而不是直接调用脚本?
我开始使用它supervisord来控制服务器中的服务。我不是Linux的专业用户,但是可以很好地使用它并使其运行。 出于好奇,我已经注意到,supervisor中的大多数命令看起来像这样: [program:install] command=bash -c "/src/etc/install.sh" 我已经读过bash的手册,并且知道-c应该使用该变量来插入在字符串之后传递的变量。 因此bash -c,考虑到没有传递/使用的变量,在超级用户(或其他任何地方)中使用而不是直接调用脚本(如下面的示例)有什么意义? [program:install] command=/src/etc/install.sh 谢谢!

3
将stderr和stdout传递给不同的命令(而不仅仅是文件)
我正在为ldap制作备份脚本。我希望将错误转到/ var / log中的文件,并将输出转到备份文件夹中的另一个文件。当前,我将重定向到一个临时文件,然后将该临时文件发送到日志。我宁愿作为1班轮来做这件事... /usr/bin/ldapsearch -x -LLL -b "dc=contoso,dc=com" "(objectclass=*)" -h ldap.server -v 2>>/tmp/ldaptmp.err | gzip -c > /mnt/backups/ldap/`date +\%Y\%m\%d`.ldif.gz || logger -t ldapbackup -p local6.err error exit $? cat /tmp/ldaptmp.err | grep -v "ldap_initialize( ldap://ldap.server )" | grep -v "filter: (objectclass=\*)" | grep -v "requesting: All userApplication attributes" >$ERR_LOG …
11 linux  bash 


4
SED跨多行替换
我试图找到这三行: <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> --> 并替换为: <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 当我尝试 sudo sed -i 's:<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />:' /myfile.xml 它找不到它,我也尝试将\ n放入其中,但仍然无法正常工作: sudo sed -i 's:<!--\n <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />\n -->:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />:' /myfile.xml 这些不会引发任何错误,只是不会取消注释。任何建议将帮助谢谢!
11 linux  bash  sed 

7
查找目录,其中缺少具有特定结尾的文件
我想显示所有目录,这些目录不包含以特定文件结尾的文件。因此,我尝试使用以下代码: find . -type d \! -exec test -e '{}/*.ENDING' \; -print 在此示例中,我想显示所有目录,这些目录不包含带有结尾的文件.ENDING,但这不起作用。 我的错误在哪里?
10 linux  bash  shell 

2
符号链接和sudo
我创建一个符号链接: ln -s /tmp/folder1 /tmp/folder2 然后我转到/ tmp / folder2并运行pwd: $ cd /tmp/folder2/ $ pwd /tmp/folder2 $ sudo pwd /tmp/folder1 # <-- This is the odd part 为什么pwd用sudo给出原始目录?我正在编写bash脚本,并且需要当前目录的绝对路径。使用sudo我似乎无法获得原始目录。

4
您将如何简化此命令?
我对strace / netstat /等还很陌生。我正在使用此命令来获取处理我的请求(telnet)的apache进程的踪迹,是否可以简化一下? sudo strace -o /tmp/strace -f -s4096 -r -p $(netstat -antlp | \ grep $(lsof -p `pidof telnet` | grep TCP | \ perl -n -e'/localhost:(\d+)/ && print $1') | grep apache2 | \ perl -n -e'/ESTABLISHED (\d+)/ && print $1') 谢谢!


1
验证拒绝命令
我发布了该^z; bg; disown序列,以便允许我关闭一个ssh会话,在该会话中我正在运行一个非常重要的长期运行的进程。此过程将状态输出写入stderr,即使分离后仍继续这样做(已通过lsof验证,stderr fd对r / w打开)。 有没有办法确定该进程确实已被取消(如果shell撤消了,则将不会撤消SIGHUP)?
10 bash  process 

3
在bash中进行编辑时如何保存+关闭文件?
好的-我是linux新手-我正在尝试通过edit <filename>命令以默认方式从bash编辑文件(我假设是“ vi”?)。 问题是我该死,我无法保存并退出编辑模式- 该备忘单似乎表明ESC应该可以解决问题,但似乎不起作用。 我正在通过ssh从Mac连接到Linux suse企业版11盒。 任何帮助表示赞赏!
10 linux  bash  vi 

4
每当有人通过SSH登录到Linux机器时执行程序
我有一个小型的SSH服务器,我想编写一个脚本,以便每次有人通过SSH登录时运行。 现在,我将如何处理? 我希望每次ANYBODY登录时都运行该脚本,并且我至少需要访问登录者的用户名以及该登录者的IP地址。 我考虑过使用/etc/bash.bashrc,但这是一个好的解决方案吗?例如,有没有一种方法可以使用户禁用其使用,从而禁用我的脚本?如果可以,我还有其他选择吗? 谢谢。
10 linux  bash  ssh 

4
通过远程SSH连接使用rsync时,在远程路径中转义空格
使用SSH将rsync连接到远程服务器时,如何在远程路径中转义空格等?一个简单的反斜杠会转出用于本地bash提示的空间,但是在远程计算机上,该空间将被视为路径的中断,从而标记该路径的结尾。 因此,当我执行rsync -avz /path/to/source/some\ dir/ user@host.tld:/path/to/dest/some\ dir/该操作时,远程服务器将读取该内容,/path/to/dest/some/并且由于无法远程找到该目的地,因为实际目的地是“某个目录”而不是“某个”。 如果我尝试相同的命令并转义反斜杠和空格以超过本地bash提示符并为远程服务器维护反斜杠(共三个反斜杠:)/path/to/dest/some\\\ dir/,则确实会将反斜杠发送到远程服务器,但是远程服务器然后将路径解释为,/path/to/dest/some\/而不是/path/to/dest/some\ dir/仍然删除空格和其后的字符。 如果我尝试用引号将路径引起来,它的行为几乎相同,可以有效地在空格处切断路径。因此,它也只能通过本地bash提示。 最初,我使用的路径中包含“-”(空格-连字符-空格)段,并且远程服务器返回错误rsync: on remote machine: -: unknown option,这首先是整个节省空间的工作的开始。 那么,我该怎么做才能使它在远程服务器上正常工作,而不必从远程路径中删除空格或其他错误字符,例如连字符?
10 ssh  bash  rsync  remote  path 

3
为什么CTRL-r在OS X上表现异常(仅显示命令的一部分)
Ctrl+ r是一个很棒的小工具,可用于搜索您.bash_history以前运行的命令。 但是,当我在OS X Terminal.app中使用它时,我看到奇怪的行为,并且我想知道是否还有其他人看到相同的东西或知道如何修复它。 Ctrl+r 输入类似 find 哦,酷,看...这是我想要的命令 find . -exec grep -q "hello world" '{}' \; -print 我想运行该命令,但将hello world更改为其他名称。 所以我打←或→ 现在,该命令在命令行上是SORTA,但它始终看起来像是该命令的某些截短版本,如下所示:-q "blog_posts_by" '{}' \; -print,其中有整个命令,我可以使用光标键在该行上移动,但不是全部它被打印。在线上显示的内容与终端实际认为我正在编辑的内容之间存在脱节。 有人知道为什么会发生这种情况吗?在网络上搜索并非易事。
10 bash  mac-osx  terminal 

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.