为什么不起作用echo * | rm -f?根据我的理解,echo *应该列出目录中的所有文件,管道应该将此列表作为参数发送给rm -f命令,该命令应该删除文件。我错过了什么?
有没有更优雅的方法来找出另一个用户的默认 shell 是什么(假设我有 root 权限并使用 GNU/Linux)?我知道我可以通过查看/解析/greping/etc /etc/passwd 来得到答案,但必须有一个实用程序(例如“id”或“chsh”)具有将此信息打印到标准输出的开关.
运行类似的程序id --shell username以立即获得答案会很好。
编辑:我看到我的问题的第一个答案可以归类在“解析/查找/greping”/etc/passwd 下,所以我想强调的是,我知道有很多方法可以做到这一点(shell on-衬垫、函数、脚本……),但这不是我要问的。
我想知道大多数 GNU/Linux 发行版中预装的一些标准工具或作为 coreutils 一部分的工具是否具有此功能。
我认为该export命令仅在每个登录会话中有效,但我不确定。chsh我认为是更永久的。有人可以帮我解决这个问题吗(最好有链接/文档)?谢谢。
---x--x--- 1 root stapusr 87992 Oct 20 23:44 staprun
Run Code Online (Sandbox Code Playgroud)
我上面显示的是 file 的所有者staprun。但是 userroot不属于 group stapusr。这是什么意思?
我假设在chown userxxx:groupxxx filename执行之前,userxxx应该属于groupxxx.
在 VIM 中执行 shell 命令时,它会等待命令完成。您可以按Enter切换回 VIM,但它只会在命令完成后切换回。如果 shell 任务运行时间较长,返回 VIM 继续工作会更有利,稍后再检查 shell 输出。
什么是最简单的方法:
:!jshint %):!)我们最近启用了为一些服务的日志文件着色,我相信我们为此使用了 ANSI 转义序列。看起来像这样:
[2014-06-12 10:56:43,214] [main] [VOID] ESC[34mINFO ESC[0;39m ESC[36mc.a.m.p.s.config.DataSourceConfigESC[0;39m
Run Code Online (Sandbox Code Playgroud)
我的同事大多tail用来查看日志文件,但我less更喜欢。不幸的是,less不会自动识别这些转义码。相反,它告诉我我的日志文件“可能是一个二进制文件。还是看到了吗?”。
我知道如果我添加该-r选项,less将显示颜色,但它仍然会询问“二进制文件”问题。
有没有办法解决这个问题?如果是,我可以将其设为默认值吗?
我想要一个脚本来调用 params,它会向我当前的 shell 添加一些别名。必须根据调用参数和我启动它的当前目录来构建别名。如果可能,我不想获取脚本的源代码,只需像任何其他脚本一样运行它即可。
这是我迄今为止所做的:
我写了一个小的 shell 脚本来生成一些别名,比如
echo 'alias foo="$1"'
Run Code Online (Sandbox Code Playgroud)
并将其保存为具有 +x 权限的文件“myscript”。然后我通过控制台执行它来设置别名
$(myscipt hello)
Run Code Online (Sandbox Code Playgroud)
效果很好
当我改变我的shell脚本时
echo 'alias foo="bar $1 -param"'
Run Code Online (Sandbox Code Playgroud)
并像上面一样再次执行,结果是
bash: alias hello" not found
bash: alias -param" not found
Run Code Online (Sandbox Code Playgroud)
???。我已经摆脱了 bar 和 -param 之间的空白,但无法让它工作。
当我执行
source <(myscript hello)
Run Code Online (Sandbox Code Playgroud)
一切都像预期的一样好(这是我现在的解决方案,但不确定它是否是最好的)。
一些想法如何获得更好的解决方案?
我知道在 bash 编程中,comamnd1;command2;command3将按顺序command1&&command2&&command3运行它们,同时将它们并行运行。然而,当我结合会发生什么;和&&在一起,例如command1 ; command2 && command 3?bash;和&&bash之间的优先级是什么?以上命令是否等同于 (command1;commmand2) && command3或 (command1);(command2 && command3)
我在恢复进程时遇到问题。
当我尝试使用 使进程进入前台时jobs,它可以工作,但是如果我关闭 shell 并重新启动它,我的进程将不会出现在作业列表中。
我只知道进程名称及其 ID。我怎样才能把它放在前台?