`sh -c`命令——解决命令权限问题、一条命令中执行多个指令

这篇具有很好参考价值的文章主要介绍了`sh -c`命令——解决命令权限问题、一条命令中执行多个指令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

sh -c在Shell中执行一个字符串作为命令,可以在一条命令中执行多个指令。

语法如下:

sh -c 'command'

其中,command是要执行的命令或命令串。

案例

[root@localhost shyn]# sh -c 'echo 111; echo 222'
111
222

使用sh -c与直接终端敲命令的区别

**1、sh -c属于非交互模式

  • 在终端上敲入命令就可以显示对应结果,这样与终端进行交互执行命令的方式就称为交互模式。
  • 非交互模式就是调用 bash 解释器,通过 bash -c 后接命令的形式来解释执行命令

2、sh -c多个命令可以在一行中执行

3、sh -c方便编程调用

  • 使用sh -c命令的一个常见场景是通过其他程序或脚本调用Shell命令。
  • 例如,在一个Python脚本中使用subprocess模块调用Shell命令时,可以使用sh -c来执行包含多个命令的脚本。

使用sh -c解决命令权限问题

下面例子中sudo执行echo追加命令报错权限不足,原因是重定向符号 ">" ">>"也是 bash 的命令。我们使用 sudo 只是让 echo 命令具有了 root 权限,但是没有让 “>” ">>" 命令也具有 root 权限,所以 bash 会认为这两个命令都没有像 test.csv文件写入信息的权限。

[shyn@localhost ~]$ sudo echo "hhh" >>test
bash: test: 权限不够
[shyn@localhost shyn]# ll
总用量 8
-rw-r--r--. 1 root root 12 38 05:41 test
[shyn@localhost ~]$ sudo sh -c 'echo "hhh" >>test'
[sudo] shyn 的密码:
[shyn@localhost ~]$

解决方法:利用 "sh -c" 命令,它可以让 bash 将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。文章来源地址https://www.toymoban.com/news/detail-838879.html

到了这里,关于`sh -c`命令——解决命令权限问题、一条命令中执行多个指令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在linux系统下中.sh文件无法执行的问题及两种解决方法

    在写了shell脚本1.sh文件后,想要执行该脚本,结果提示我权限不够: 然后我就加上了管理员的权限:(其实这里提示的并不是管理员的权限不够,而是这个shell脚本并没有执行的权限)  结果提示我找不到命令,但是我使用ls查看后,发现1.sh文件存在。 解决方法一: 首先我

    2024年02月11日
    浏览(40)
  • 在shell脚本中切换用户之后再执行多个函数以及执行多行命令的方法和遇到的问题

    其中,username是您要切换到的用户的用户名,function1和function2是您要执行的函数名称,您可以根据需要添加更多函数和命令。在EOF标记之间的所有内容都将作为切换后的用户执行。请注意,您需要确保切换后的用户具有执行所需命令和函数的权限。 其中,username为要切换到的

    2024年02月04日
    浏览(92)
  • 恢复Windows 11经典右键菜单:一条命令解决显示更多选项问题

    在 Windows 11 中,微软引入了大量的新视觉变化,以及对经典的 Windows 10 右键菜单进行了改造。不过,这个新右键菜单可能让一些用户感到陌生,因为它隐藏了大部分选项,只在一个名为“显示更多选项”的子菜单中提供更多功能。这一改变虽然让菜单看起来更美观,但可能不

    2024年02月07日
    浏览(60)
  • Linux 反复执行一条命令--watch命令

    在Linux中,我们可能会需要反复的执行一个命令以查看状态的变化,比如之前我在启动一个项目的时候没有什么反应,于是我便自己写脚本反复 curl 这个端口,下面用输出 Hello World 举出这个例子: 我们的需求是非常简单地,只需要不断地间隔一秒输出 Hello World ,但是却需要

    2023年04月21日
    浏览(47)
  • linux 下执行命令需要再次输入密码才能执行,如何在一条命令中执行

    当我在 linux 下执行如下命令时 需要再次输入cc 用户的密码才能运行, 现在我需要在一条命令中执行,不单独去输入密码执行命令 这样就可以使用一条命令执行 cc 用户下面的脚本了

    2024年02月11日
    浏览(71)
  • [K8S:命令执行:权限异常:解决篇]:通过更新kubeconfig配置相关信息

    执行K8S相关命令显示关键信息 2.1.1:执行命令: 这一步应该在安装K8S kubeadm init后面执行,之前安装忘记这一步。 [root@vboxnode3ccccccttttttchenyang ~]# mkdir -p $HOME/.kube [root@vboxnode3ccccccttttttchenyang ~]# [root@vboxnode3ccccccttttttchenyang ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config cp:是否覆

    2024年02月03日
    浏览(40)
  • VMware执行命令hadoop-daemon.sh start journalnode报错hadoop-daemon.sh: 未找到命令...

    首先启动hadoop1节点的Zookeeper服务 然后启动hadoop1节点的Journalnode执行命令hadoop-daemon.sh start journalnode报错hadoop-daemon.sh: 未找到命令... [root@hadoop1 bin]# hadoop-daemon.sh start journalnode bash: hadoop-daemon.sh: 未找到命令... 通过执行命令locate hadoop-daemon.sh 发现hadoop-daemon.sh文件并不在目录bin下

    2024年02月04日
    浏览(48)
  • Mac 执行 .sh命令报错 command not found

    使用 终端 执行 .sh 命令,可输入: 如果提示 Permission denied 权限不足,可增加 sudo ,命令如下: 如果提示 command not found 可以这样:

    2024年02月14日
    浏览(46)
  • Mac 终端-z‘sh提示 Permission denied 权限问题(VSCode提示没有权限,无法保存文件问题)

    一个文件有3种权限,读、写、可执行,Permission denied就是没有可执行权限,所以需要加上可执行权限。 1. 进入终端先 cd到该文件的目录下 2. 执行命令 chmod a+x ./ 文件名 二:赋予文件夹权限 $ sudo chmod -R 777  目录路径 其中 -R 是指级联应用到目录里的所有子目录和文件 777 是所

    2024年02月03日
    浏览(84)
  • Cmd下用route命令解决多个IP选择线路的问题

    一台电脑两条线路一个电信IP一个联通的IP,解决访问电信的时候自动走电信线路,访问联通的时候自动走联通的线路,我们可以用到下面这个命令 ROUTE DOS命令我们都可以在 Cmd 下用 route /? 来查看他的帮助信息 先看一下他的帮助 Manipulates network routing tables. ROUTE [-f] [-p] [comman

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包