Questions tagged «bash»

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

7
无法使用Synology NAS上的/ bin / bash Shell通过SSH登录到任何帐户
我正在尝试在嵌入式设备(Synology DS212 + NAS)上运行的ARM Linux上将bash安装为默认外壳。但是确实有什么问题,我不知道这是什么。 症状: 1)根目录将/ bin / bash作为默认外壳,并且可以通过SSH正常登录: $ grep root /etc/passwd root:x:0:0:root:/root:/bin/bash $ ssh root@NAS root@NAS's password: Last login: Sun Dec 16 14:06:56 2012 from desktop # 2)joeuser将/ bin / bash作为默认外壳,并在尝试通过SSH登录时收到“权限被拒绝”: $ grep joeuser /etc/passwd joeuser:x:1029:100:Joe User:/home/joeuser:/bin/bash $ ssh joeuser@localhost joeuser@NAS's password: Last login: Sun Dec 16 …
30 linux  ssh  bash  synology 


6
强制SSH使用特定的Shell
有什么方法可以强制SSH在远程端使用特定的Shell,而不管用户的默认Shell是什么? 我尝试过类似的解决方案: ssh host.domain.com /bin/bash -c 'complicated, multi-line command' 但是不幸的是,远程端的默认Shell负责解析“复杂的多行命令”部分,而我很难对其进行足够的转义以使其同时适用于Bash和C Shell用户。

6
如果启动后台进程然后注销,它将继续运行吗?
在与同事长时间讨论之后问这个问题,我真的很想在此澄清一下。 我启动了后台进程,方法是将“ &” 添加到命令行,或者通过将其停止CTRL-Z并以“ bg” 在后台恢复。然后我注销。 怎么了? 我们非常确定它应该被SIGHUP杀死,但这没有发生。再次登录后,该进程愉快地运行,并pstree显示出该进程已被采纳init。 这是预期的行为吗? 但是,如果是的话,该nohup命令的目的是什么?看起来无论有没有这个过程,进程都不会被杀死…… 编辑1 一些更多的细节: 该命令是从SSH会话而不是从物理控制台启动的。 该命令在没有 nohup和/或&;的情况下启动。然后将其CTRL-Z与暂停,并在与一起恢复后台bg。 ssh会话没有删除。实际注销(“ exit”命令)。 该过程是scp文件复制操作。 再次登录后,pstree显示进程正在运行并且是的子进程init。 编辑2 为了更清楚地说明问题:将进程置于后台(使用&或bg)使其SIGHUP像nohup命令一样被忽略吗? 编辑3 我尝试手动发送一个SIGHUPto scp:它退出了,所以它绝对不会忽略该信号。 然后,我再次尝试启动它,将其置于后台并注销:它被“采纳” init并保持运行,并且重新登录后在此找到了它。 我现在很困惑。好像没有SIGHUP发出任何注销消息。

7
如何使用sudo执行bash函数?
我在全局bashrc中定义了一个bash函数,该函数需要root特权才能工作。如何使用sudo运行它,例如sudo myfunction。默认情况下,它给出一个错误: sudo:myfunction:找不到命令
29 bash  sudo 

8
从find命令输出中删除路径
我有一个bash脚本,用于将代码从Beta环境部署到生产环境,但是目前我不得不手动将文件列表添加到txt文件中,有时我会错过一些。基本上,我的部署脚本通过cat / loops复制文件。(也可以导出/导入数据库,但这不相关..lol) 无论如何,我想使用该find命令生成最近14天内修改的文件列表。问题是我需要删除路径./才能使部署脚本正常工作。 这是find命令用法的示例: 找 。-f -mtime -14> deploy.txt 这是deploy.txt部署脚本中的内容: for i in `cat deploy.txt`; do cp -i /home/user/beta/public_html/$i /home/user/public_html/$i; done 任何想法如何使用bash脚本来实现这一目标? 谢谢!
29 bash  find 

8
bash脚本中的多选菜单
我是一名新手,但是我想创建一个脚本,允许用户从选项列表中选择多个选项。 本质上,我想要的是类似于以下示例的内容: #!/bin/bash OPTIONS="Hello Quit" select opt in $OPTIONS; do if [ "$opt" = "Quit" ]; then echo done exit elif [ "$opt" = "Hello" ]; then echo Hello World else clear echo bad option fi done (摘自http://www.faqs.org/docs/Linux-HOWTO/Bash-Prog-Intro-HOWTO.html#ss9.1) 但是,我的脚本将具有更多选项,并且我希望允许选择倍数。所以像这样: 1)选项1 2)选项2 3)选项3 4)选项4 5)完成 对他们所选择的对象有反馈也会很棒,例如,在他们已经选择的对象旁边加号。例如,如果您选择“ 1”,我想翻页以清除并重新打印: 1) Option 1 + …
28 bash  scripting 


4
如何使用Bash删除所有隐藏的文件和目录?
显而易见的解决方案产生的退出代码为1: bash$ rm -rf .* rm: cannot remove directory `.' rm: cannot remove directory `..' bash$ echo $? 1 一种可能的解决方案是跳过“。” 和“ ..”目录,但只会删除名称长度超过3个字符的文件: bash$ rm -f .??*
28 bash  files 

4
什么是/ bin / dash?
我认为这/bin/sh是我选择的壳的符号链接。我一直都用过bash,所以我认为那/bin/sh指向/bin/bash。事实证明,它指向/bin/dash。 它变得更有趣。我开始dash做echo $SHELL,它打印出来/bin/bash(所以它们基本相同吗?)。但是,的手册页与的手册页dash完全不同bash(所以它们不一样吗?)。
27 linux  bash  shell 

12
无法从CRON(凭证)运行AWS CLI
尝试运行简单的AWS CLI备份脚本。它在包含文件中的各行之间循环,将这些路径备份到S3,然后将输出转储到日志文件中。当我直接运行此命令时,它运行没有任何错误。当我通过CRON运行它时,我的输出日志中出现“无法找到凭据”错误。 shell脚本: AWS_CONFIG_FILE="~/.aws/config" while read p; do /usr/local/bin/aws s3 cp $p s3://PATH/TO/BUCKET --recursive >> /PATH/TO/LOG 2>&1 done </PATH/TO/INCLUDE/include.txt 我仅在看到错误后才将该行添加到配置文件中,认为这可能会解决问题(即使我很确定默认情况下这就是AWS的外观)。 Shell脚本以root身份运行。我可以在指定位置看到AWS配置文件。这一切对我来说都很不错(就像我说的那样,它在CRON之外运行良好)。

3
如何反复调用rsync,直到文件成功传输
我正在尝试从不可靠的远程服务器同步文件,这意味着连接往往会“随机”失败 rsync:连接意外关闭 Rsync是通过--partial调用的,因此我希望能够在循环中调用rsync,直到文件完全传输为止。似乎没有标志告诉rsync重试。 编写脚本的最佳方法是什么?一个bash for loop?
27 linux  bash  rsync 

6
防止xargs因错误退出
根据手册页,如果执行行之一以错误255退出,则xargs将退出: 如果以状态255退出命令的任何调用,则xargs将立即停止,而无需读取任何进一步的输入。发生这种情况时,将在stderr上发出错误消息。 如何获得xargs 不这样做? 我有一个要运行的大约1500行批处理作业,一次要运行50行。我发现它总是快要死了,而没有完成工作。不好! 更好的问题是描述我要做什么的问题: 我如何一次运行1500行批处理脚本,一次运行50行,这样它就不会在中间退出该作业,并且将输出捕获到某种日志文件中?

4
BASH脚本,用于单个命令的su到www-data
正如我写的这篇博客文章所述,我正在致力于自动创建Subversion存储库和相关网站。我遇到了一些问题,我需要向www-data用户运行以下命令: svnadmin create /svn/repository 脚本开头会进行检查,以确保脚本以root或sudo的身份运行,并且此命令之后的所有内容都需要以root身份运行。有什么好方法可以将一个命令作为www-data运行,然后切换回root来完成?
26 ubuntu  bash  svn  su 

7
Bash脚本:要求脚本以root身份(或使用sudo)运行
我正在尝试编写bash脚本(在Ubuntu中),该脚本将使用tar备份目录。 如何在脚本中进行检查,使其只能以root身份(或使用sudo)运行? 例如,如果用户运行该脚本,则应说该脚本必须以sudo特权运行,然后退出。如果脚本以root身份执行,它将继续通过检查。 我知道必须有一个简单的解决方案,但我只是无法通过谷歌搜索找到它。

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.