Questions tagged «bash»

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



1
我偶然更改了符号链接/ bin / sh
我正在使用Ubuntu 11.1。符号链接/ bin / sh指向我系统中的破折号。/ bin / bash指向sh。我不小心将/ bin / sh更改为指向/ bin / bash。现在,我无法打开终端。我如何从这个混乱中恢复?
ubuntu  bash  sh 

1
将数组值传递给命令args
我正在尝试编写一个脚本,该脚本对数组的每个元素执行命令,而与数组中的值数量无关。但是,我想出的唯一解决方案如下(以watch命令为例): watch ${ARRAY[0]} watch ${ARRAY[1]} watch ${ARRAY[2]} …在数组中放置了要监视的其他命令。 显然,这绝对不是我想要的,因为这取决于我在代码中编写的数组位置的数量,这显然是一个问题。我已经尝试过类似的东西: watch "${ARRAY[*]}" …但是不管有没有双引号,它都行不通。任何建议将不胜感激。
bash 

2
Bash命令和选项顺序
当我发出: bash -l -c "./test" 子外壳确实可以作为登录外壳运行,但是在以下情况下: bash -c "./test1" -l 父外壳(我正在运行命令的外壳)似乎忽略了该-l选项,并且子外壳未作为登录外壳运行。 如果我是对的,原因是该命令的选项顺序bash是相关的,在这种情况下,该-l选项必须在before之前-c。我对吗?
linux  bash  shell 

1
使用bash脚本SSH时无法正常退出
我有一个脚本,可以SSH到服务器并设置环境 ssh -t -t dev.example.com <<EOF cd var/dev/ ...other commands... EOF 但是,当exit脚本运行后我在终端中键入内容时,它会挂起并且不会退出。退出的唯一方法是使用Ctrl+c 我该如何更改以便输入exit并退出?


1
如果在外壳程序脚本中为-else,则将参数与字符串匹配
对于以下shell脚本- #!/bin/sh main_version=0 feature_version=0 patch_version=0 if [[ $1 -eq "m" ]]; then main_version=$((main_version+1)) fi if [[ $1 -eq "f" ]]; then feature_version=$((feature_version+1)) fi if [[ $1 -eq "p" ]]; then patch_version=$((patch_version+1)) fi echo $main_version echo $feature_version echo $patch_version 即使我m使用参数传递,它也会增加所有变量./<script-name>.sh m 是什么原因呢?

1
Bash脚本复制的备份文件大于及其子文件,按日期排序
我有Veeam备份到nas,但我想每天将最后的备份复制到可移动单元。这意味着复制与vbk相关的vbk和vib文件。 我列出的文件清单示例: -rwxr--r-- 1 root wheel 255999550464 May 27 23:24 SRV-DATA2017-05-27T220411.vbk -rwxr--r-- 1 root wheel 304592896 May 28 22:04 SRV-DATA2017-05-28T220053.vib -rwxr--r-- 1 root wheel 1070917632 May 29 22:04 SRV-DATA2017-05-29T220034.vib -rwxr--r-- 1 root wheel 1196136448 May 30 22:04 SRV-DATA2017-05-30T220037.vib -rwxr--r-- 1 root wheel 1326031872 May 31 22:04 SRV-DATA2017-05-31T220040.vib -rwxr--r-- 1 root …

3
我得到响应/root/gcc-4.8.2/bin:当我在bash.rc中设置路径时,没有这样的文件或目录
我的系统中已经有gcc 4.4.7。我的系统是RHEL 6.6。 [root@gksrv Desktop]# gcc --version gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 我想升级到gcc-4.8.2,然后完成了在系统上安装它的所有步骤。 键入后得到的输出的最后部分make install如下: Libraries have …

2
将tmux放置在rc.local中时不会触发
我想在树莓派-2上启动时启动tmux。我已经写了一个session.sh文件,并将其放在~/bin/主目录中的文件中。这~/bin/也包含在中$PATH,因此可以触发。 Bash文件如下所示: #!/bin/sh mySession(){ tmux new-session -d -s SessionName tmux new-window -d -n 'windowName' "~/bin/myPythonScript.py" } mySession exit 0 我也使用以下方式授予了所有脚本的执行权,包括上述bash脚本chmod +x session.sh 在rc.local中,我指的是触发该文件,如下所示: #!/bin/sh scriptSession(){ echo "starting the tmux session" ~/bin/session.sh & } scriptSession exit 0 我已经尝试过多次重启Pi,但是会话从未触发过。 当我执行时sudo tmux ls,它只显示error Connecting to Server 但是,当我这样做sudo /etc/rc.local或sudo ~/bin/session.sh会话开始时!我不希望发生这种情况,因为我希望启动时自动启动而不是用户触发的会话 任何想法可能是什么问题? 编辑 我还尝试使用rc.local文件中的以下内容在bash子外壳中收集失败日志: (scriptSession)&>>/var/log/myLog.txt …
bash  tmux 

1
在终端中执行脚本
因此,我不想导航到脚本的位置并运行./script.sh,而是希望能够从任何地方键入“ script”并运行该脚本。我认为可以通过将脚本放在/ usr / bin或/etc/init.d中来完成吗?在这种情况下,如果我没有通过计算机的root访问权限,该怎么办?/ home / me中是否有个人目录,我可以在其中放置脚本来实现此目的? 运行Debian。
bash 

2
'hhighlighter'包装器脚本说找不到命令
我已经从https://github.com/paoloantinori/hhighlighter获得了包装脚本'hhighlighter',该脚本可以为stdout中的任何颜色着色。我遵循了有关安装ack-grep的说明,在〜/ .bashrc中为ack = ack-grep创建了别名,将h()函数放在〜/ .bashrc中,在终端中键入时一切正常。但是,当将完全相同的命令放在bash脚本中时,它表示未找到命令。我会在这里举例说明... root@kali:~# echo "abcd" | h a b c d abcd 这是我的脚本的样子 #!/bin/bash echo "abcd" | h a b c d 就像键入的命令一样,但是这里是运行脚本时的输出 root@kali:~# ./test.sh ./test.sh: line 1: h: command not found 当直接在终端中键入而不是在bash脚本中使用完全相同的命令时,如何工作?

1
在变量中捕获bash命令错误
我psql在bash脚本中使用(PostgreSQL)命令: function create_database () { sudo -u postgres psql -c "CREATE DATABASE $1 WITH OWNER $2;" 2>ERROR if [[ $? -ne 0]; then echo "error -> $ERROR" return 1 else: .... return 0 } 我正在尝试捕获error并将其传递给变量,但是该变量为空。

1
如何编辑一个文件,但要在两个位置进行更新?
我想做的是让我的计算机在编辑本地文件时自动更新备份文件。例如。我有一个正在工作的网站目录。每个站点都是其自己的目录。我在本地处理这些文件,但是公司政策规定它们必须位于服务器上,以防万一我们的编码员发生了某些事情(例如,大脑从思考变为艰苦)。 我需要做的是以某种方式将我的本地目录链接到远程目录。 要考虑的一件事是,远程目录与本地目录的结构不同。远程目录包含公司文件,其中包含网站文件夹,而我的本地目录只是一个充满网站文件夹的htdocs文件夹。我需要更新本地文件夹,例如 htdocs> cool-website 到远程服务器,例如 公司>酷公司>网站 远程服务器只是网络上的硬盘驱动器,因此它实际上并未上传到Internet上的某个位置,而只是在另一个驱动器上进行复制。 我想我可以为此使用rsync吗?只需在每个要备份的站点上运行命令?如果可能的话,我想使它自动化。 最后一件事,我不能仅将文件存储在网络服务器上并将它们链接到我的本地驱动器,因为我将计算机带回家进行处理,实际上需要文件存在于硬盘中。
linux  bash  rsync 

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.