标签: bash

什么\; 在脚本中是什么意思?

\;以下命令中的含义是什么?我也不确定是什么{}意思。是否\;真的有必要?

find ./ -name file_1 -exec cp {} ./ \;
Run Code Online (Sandbox Code Playgroud)

bash shell-script find

0
推荐指数
1
解决办法
4386
查看次数

没有任何命令在 linux 终端中工作

突然间,我无法在我的 debian 终端中执行任何命令:

pi@rpi ~ $ ls
-bash: ls: command not found
Run Code Online (Sandbox Code Playgroud)

或者

pi@rpi ~ $ sudo omxplayer -r -o hdmi mymovie.mkv
-bash: /usr/bin/sudo: No such file or directory
Run Code Online (Sandbox Code Playgroud)

或者

pi@rpi ~ $ nano text.txt
-bash: nano: command not found
Run Code Online (Sandbox Code Playgroud)

什么都行不通。在一切正常前一分钟,我正在看电影,没有运行其他任何东西。我什至reboot无法正确重新启动它,因为它也失败了。硬重置即将到来......知道吗?

更新:我尝试断开 ssh 会话,但无法再次连接。不得不关闭它并再次返回。现在好了,但这不是第一次发生这种情况。我真的很感激一些提示。

linux debian terminal bash

0
推荐指数
1
解决办法
4828
查看次数

允许非root用户执行特定命令

正如标题一样 - 我想允许非 root 用户执行特定的命令,但不是二进制的。例如:

# killall sshd
Run Code Online (Sandbox Code Playgroud)

但不允许杀死任何进程。

linux root bash

0
推荐指数
1
解决办法
3409
查看次数

在 Mac OS X 和 Sublime Text 2 中的终端之间创建符号链接时遇到问题,因此可以从命令行启动

我正在使用 Mac OS X Yosemite,我希望能够使用如下命令从终端打开 Sublime Text 2:

sublime .
Run Code Online (Sandbox Code Playgroud)

我已将其输入终端,如 Sublime Text 2 网站所示:

ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" ~/bin/sublime
Run Code Online (Sandbox Code Playgroud)

还有这个变体:

ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/sublime
Run Code Online (Sandbox Code Playgroud)

在终端中,如果我输入:

echo $PATH
Run Code Online (Sandbox Code Playgroud)

我得到:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Run Code Online (Sandbox Code Playgroud)

我试过编辑我的.bash_profile,现在它是空白的

毕竟,我尝试sublime .得到以下错误:

-bash: sublime: 命令未找到

我对 Mac OS X 和终端配置完全陌生,我真的很难弄清楚为什么我不能让它工作,所以任何帮助将不胜感激。

terminal bash symbolic-link sublime-text-2 macos

0
推荐指数
1
解决办法
1224
查看次数

sed 命令返回“sed:替换表达式中的错误选项”

例如:- 我有一个名为 file.txt 的文件

$ cat file.txt
$key
Run Code Online (Sandbox Code Playgroud)

我有一个环境变量,例如:文本文件中的 $key

让我们说 $key = 1234,所以我可以用下面的命令替换该值

sed -i 's/$key/'"$key"'/' file.txt 
Run Code Online (Sandbox Code Playgroud)

它变成

$ cat file.txt
1234
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果值

$key = 1/2/3/4
Run Code Online (Sandbox Code Playgroud)

我无法运行以下命令

sed -i 's/$key/'"$key"'/' file.txt  
Run Code Online (Sandbox Code Playgroud)

它会报错

sed: bad option in substitution expression
Run Code Online (Sandbox Code Playgroud)

因为斜线它正在打破。我可以通过直接给出值来解决它,但我不想以这种方式使用它。

sed -i 's/$key/1\/2\/3\/4/' file.txt 
Run Code Online (Sandbox Code Playgroud)

linux script bash sed command-line

0
推荐指数
1
解决办法
5492
查看次数

如果块在 false 上执行第二个命令

我是 bash 新手(冒充 Linux 系统管理员的 PHP 开发人员)。
我在 bash 脚本中有以下 if 块:

 if [ "$DAY"=="Sunday" ];
 then
 cp /Drive_D/videos_bu/daily/$TODAY /Drive_D/videos_bu/weekly/$WEEK
 printf "\n==========\nWeekly Backup - $TODAY SUCCESS!\n==========\n\n" >> $LOG
 fi
Run Code Online (Sandbox Code Playgroud)

即使测试命令为假,printf 行也会执行。谁能告诉我为什么?

TIA

罗杰

linux bash

0
推荐指数
1
解决办法
60
查看次数

如何在 shellscript 中使用“#”

如何在 shellscript 中使用 #-symbol 并防止超出该范围的所有内容都被解释为注释?我已经用 java 编写了一个 IRC-bot,我想给出一个包含开头哈希的频道名称。

bash

0
推荐指数
1
解决办法
88
查看次数

意外标记“}”附近的语法错误

我正在编写一个程序,其中包含我兄弟要求的一些随机基准。但是当我写完它时,我去测试它,结果如下:

./benchmarksuite.sh: line 45: syntax error near unexpected token `}'
./benchmarksuite.sh: line 45: `}'
Run Code Online (Sandbox Code Playgroud)

那么我的代码到底有什么问题呢?

这是代码:

#!/bin/bash

drivetest()
{
        echo "How much data do you want to write (in MiB):"
        read data
        echo "Are you sure you want to perform a $data MiB write onto your disk?[Y/N]"
        read confirm
        if [ "$confirm" == "Y" ]; then
                dd bs=1M count=$data if=/dev/zero of=test conv=fdatasync
        elif [ "$verify" == "y" ]; then
                dd bs=1M count=$data if=/dev/zero of=test conv=fdatasync
        else
                echo "Exiting the test." …
Run Code Online (Sandbox Code Playgroud)

bash shell-script code

0
推荐指数
1
解决办法
5130
查看次数

如何在早于 v4 的 bash 上使用 globstar

我们使用此命令使用mocha运行所有测试:mocha ./src/test/**/*.js --recursive

注意双**. 它在任何现代 bash 上都可以正常工作,但 CI 系统是 RedHat 和GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu).

我读到v3 不支持双 globstar

  • 我试图通过执行来启用它shopt -s globstar
    • 但没能说shopt: globstar: invalid shell option name
  • 我要求客户的 devops 更新 bash
    • 但他说“它没有告诉我有新版本的 bash 可用”。
  • 这个其他答案没有帮助。

问题:如何**在 linux bash v3.* 上执行命令?任何解决方法?

bash javascript globbing redhat-enterprise-linux

0
推荐指数
1
解决办法
616
查看次数

为什么在没有匹配时grep打印?

$ ps ax | grep 6557
#=> 6582 s003  S+     0:00.01 grep 6557
Run Code Online (Sandbox Code Playgroud)

但是用活动监视器快速检查,没有进程的 pid 为 6557。而且网上的一切都说 grep 在没有匹配时应该返回 0。

bash grep

0
推荐指数
1
解决办法
329
查看次数