Questions tagged «bash»

Bash是来自GNU Project的类Unix操作系统的免费外壳。

4
ssh权限仅在cron作业中被拒绝
有一个非常奇怪的问题。我创建了一个小的bash脚本,该脚本通过ssh(使用公共密钥身份验证)在远程主机上运行命令。 当我从命令行手动运行此脚本时,它可以正常工作,但是当放置在/etc/cron.hourly中时,它将失败并显示Permission denied, please try again.错误。 我使用ssh -i /root/.ssh/id_rsa user@remote "command";在脚本中显式设置了密钥。 该脚本以root身份运行(我在echo `id` > /tmp/whoami.log复查中添加了a );和 ssh密钥不受密码保护... 该系统是Ubuntu 12.04服务器,我在远程端没有太多访问权限来进行故障排除,但是正如我所说,手动运行ssh或从命令行运行相同的bash脚本即可。 知道为什么会这样或如何解决吗? 更新 原来我弄错了,并且ssh密钥受密码保护(通过钥匙串加载ssh-agent),因此为什么它从脚本失败而不是从bash会话运行时失败。将. ~/.keychain/$HOSTNAME-sh脚本添加到我的脚本即可解决问题(感谢@grawity指出了正确的方向并提供了完整的答案)。
13 bash  ssh  cron 

3
rsync在Bash脚本中抱怨`缺少尾随-'
尝试在屏幕会话中将文件从一台服务器同步到另一台服务器。我决定不是每次都写长命令,而是决定放入一个Bash脚本。但是,当我运行它时,出现Missing trailing-" in remote-shell command.错误。 想知道脚本中出了什么问题。 root@127.0.0.1:~# /raid/data/module/bin/rbk.sh Movies /raid/data/Movies rsync_target/ /raid/data/module/bin/screen -S Movies /opt/bin/rsync --rsh="ssh -p 10022 -c des"\ --rsync-path="/opt/bin/rsync" --inplace --progress -a -vv \ /raid/data/Movies sys@192.168.1.15:/raid/data/rsync_target/ Missing trailing-" in remote-shell command. rsync error: syntax or usage error (code 1) at main.c(361) [sender=3.0.5] 该脚本回显将首先执行的操作,然后执行命令。以下是我的脚本的转储: #!/bin/bash SCREEN="/raid/data/module/bin/screen" SCREENOPT="-S" SCREEN_TITLE=$1 RSYNC="/opt/bin/rsync" …
13 bash  ssh  rsync 


6
在没有打开终端的情况下在Windows 10上运行bash后台进程
在Windows 10上进行任何编程时,我通常使用linux子系统,因此所有路径都相对于~。我有一个永远在后台运行的python脚本,直到杀死该进程为止。在没有开放终端的Windows 10 bash上,我该怎么做? 我尝试过的事情: bash -c "python3 script.py 从运行。 nohup python3 -u script.py 然后关闭终端。 setsid python3 script.py 然后关闭终端。 这些都不起作用。有没有办法做到这一点?另外,如果我从W10 AND bash运行脚本,而不必每次都切换它们,是否有一种方法可以更改路径,使它们起作用?

5
在终端中输入$ PATH后没有这样的文件或目录
当我在终端上写 echo $PATH 我的输出是 :/home/bo/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/usr/bin:/sbin:/bin 但是当我只写: $PATH 这个输出我不明白正确,输出是: bash: :/home/bo/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/usr/bin:/sbin:/bin: No such file or directory 我的问题是,为什么它写“没有这样的文件或目录?” PATH变量中的每个目录都存在。
13 linux  bash  path 

1
sed中的-n选项有什么作用?
这是以下产品的手册页条目-n: -n 禁止自动打印图案空间 我注意到,当不使用-n对某些操作,每行被打印到标准输出(和所请求的线被印刷两次): $ cat test.txt first second third fourth fifth $ sed -n '2,3p' test.txt second third $ sed '2,3p' test.txt first second second third third fourth fifth 但是,该法律不适用于其他命令: $ sed -n 's/t/T/' test.txt $ sed 's/t/T/' test.txt firsT second Third fourTh fifTh 那么究竟是-n什么呢?


7
如何将bash脚本参数传递给子Shell
我有一个包装器脚本,可以完成一些工作,然后将原始参数传递给另一个工具: #!/bin/bash # ... other_tool -a -b "$@" 除非“其他工具”在子shell中运行,否则此方法工作正常: #!/bin/bash # ... bash -c "other_tool -a -b $@" 如果我这样调用包装器脚本: wrapper.sh -x "blah blup" 然后,仅将第一个原始参数(-x)传递给“ other_tool”。实际上,我不创建子外壳,而是将原始参数传递给Android手机上的外壳,这不会有任何区别: #!/bin/bash # ... adb sh -c "other_tool -a -b $@"
13 bash 


3
屏幕未设置LD_LIBRARY_PATH
screen在bash中运行将擦除变量LD_LIBRARY_PATH。我已经读了一些书,看来这是预期的行为,但是我需要解决它。 解决方法是将LD_LIBRARY_PATH声明添加到中~/.bashrc。就我而言,在启动外壳程序和调用屏幕之间,LD_LIBRARY_PATH发生了很大变化,因此我需要将LD_LIBRARY_PATH 的当前值放入screen会话中。

2
Ubuntu:运行另一个命令的输出
我有输出不同命令行的命令行,例如: > commandlineA param1 param2 commandlineB param1 我希望有一个命令行执行,它将使用给定的参数运行commandlineB。 有没有简单的方法可以使用单个命令行来执行此操作,或者我需要运行一个小的bash文件,该文件将输出存储在变量中然后运行它? 谢谢

8
制作BASH脚本`for`处理带空格的文件名(或解决方法)
虽然我使用BASH已有好几年了,但我在BASH脚本编写方面的经验相对有限。 我的代码如下。它应该从当前目录中获取整个目录结构并将其复制到其中 $OUTDIR。 for DIR in `find . -type d -printf "\"%P\"\040"` do echo mkdir -p \"${OUTPATH}${DIR}\" # Using echo for debug; working script will simply execute mkdir echo Created $DIR done 问题是,这是我的文件结构的示例: $ ls Expect The Impossible-Stellar Kart Five Iron Frenzy - Cheeses... Five Score and Seven Years Ago-Relient …
12 bash  find  filenames 

2
如何调试bash完成?
我创建了一些bash完成函数,这些函数看起来都是孤立的,但是当我尝试使用它们标签时,会给我意想不到的结果。 是否可以连接bashdb,然后尝试选项卡完成某些内容并逐步调试并确定出现了什么问题?

4
使用Wget递归抓取网站并下载图像
您如何指示wget递归爬网网站并仅下载某些类型的图像? 我尝试使用它来爬网站点,并且仅下载Jpeg图像: wget --no-parent --wait=10 --limit-rate=100K --recursive --accept=jpg,jpeg --no-directories http://somedomain/images/page1.html 但是,即使page1.html包含数百个子页面的链接,而这些子页面本身都具有直接链接到图像的信息,wget仍会报告诸如“删除subpage13.html,因为它应被拒绝,因为它应该被拒绝”之类的信息,并且从不下载任何图像,因为没有图像直接链接到该页面。从起始页面开始。 我假设这是因为我的--accept既用于引导爬网,也用于过滤要下载的内容,而我希望它仅用于引导内容的下载。如何让wget抓取所有链接,但仅下载具有某些扩展名的文件(例如* .jpeg)? 编辑:此外,某些页面是动态的,并且是通过CGI脚本生成的(例如img.cgi?fo9s0f989wefw90e)。即使我将cgi添加到我的接受列表(例如--accept = jpg,jpeg,html,cgi)中,也始终会被拒绝。有没有解决的办法?

6
Windows 10 Linux Bash Shell Ctrl + Space未在Emacs中设置标记
在Windows 10中,我安装了Linux Bash子系统。但是我对Emacs中的快捷方式有疑问Ctrl+ space没有设置标记点。 我尝试过但没有帮助的事情: 我试图在Windows控制台的属性菜单中取消选中“启用Ctrl键快捷方式” 我尝试使用其他终端ConEmu失败。 我想知道这是否与ubuntu有关,后者与ctrl + space存在类似问题,而Windows linux bash正在使用ubuntu存储库。

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.