我发出了ps -ef|grep java命令,这是我得到的条目之一:
subhrcho 875 803 0 Jan23 pts/5 00:02:27 [java] <defunct>
Run Code Online (Sandbox Code Playgroud)
这里是什么<defunct>意思?该进程是 PID=875 的进程是什么状态?
这是这个 xkcd 漫画的一部分,其中的想法是作者无法编写排序程序,因此他添加了删除所有文件的代码
system("rm -rf ./");
system("rm -rf ~/*");
system("rm -rf /");
Run Code Online (Sandbox Code Playgroud)
AFAIK 删除所有内容的规范方法是删除rm /从 root 开始的所有内容。这是最后一个命令和之前的两个命令,尝试访问rm当前目录和主目录的内容。
为什么不只是rm /?
如果我test在 bash 中执行命令,test(评估条件表达式)内置实用程序将启动:
$ type test
test is a shell builtin
$ type -a test
test is a shell builtin
test is /usr/local/bin/test
test is /usr/bin/test
$
Run Code Online (Sandbox Code Playgroud)
但是,如type -a test上面的输出所示,test在 /usr/local/bin 目录中有另一个,在 /usr/bin 目录中有另一个。可执行文件是如何排序的,即总是首选内置命令,然后其余命令取决于 $PATH 变量中的目录顺序?此外,是否可以更改启动的可执行文件的顺序,例如,如果我输入test,则启动 /usr/bin/test 而不是 bash-builtin test?
Mac OS X 终端标记非常有用。
例如,当我键入一个回显大量输出的命令时,很容易阅读以Cmd+Up. 它会滚动到最后一个命令,并强调它,因为有选项自动标记提示线,并Cmd+Up会滚动到最后关口。
是否有具有此功能的终端模拟器?或者一些插件,什么的。你如何快速进入最后一个命令,突出显示它?
假设您打开了一个终端仿真器 (T1),PID 为 6350。
从另一个终端,键入以下命令 (C1):
echo "ls\n" > /proc/6350/fd/0
Run Code Online (Sandbox Code Playgroud)
这会写入lsT1 中的新行,但不会执行它。为什么?
我也尝试使用cat|bashwithecho "ls\n" > /proc/catid/fd/0但它仍然没有执行。
如何将命令回显到另一个终端并执行命令?
可能的答案:
$ mkfifo toto;
$ bash < toto;
$ echo "ls" > toto;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您不能再直接在终端中写入(所有内容的显示方式都与命令 (C1) 在此终端中显示的内容相同。
您在终端中键入的命令与包含在脚本中的命令之间有什么区别吗?
我正在阅读这篇文章并尝试第一个答案中的所有命令......我现在真的没有其他更好的事情要做。
无论如何,我都浏览了它们关于rm. 引起我兴趣的是:
root@headdesk:~# type ls
ls is /bin/ls
root@headdesk:~# hash ls
root@headdesk:~# type ls
ls is hashed (/bin/ls)
root@headdesk:~#
Run Code Online (Sandbox Code Playgroud)
跑步help/man hash不是很有帮助,help type也不是真的(它没有提到hash任何地方)。由于我似乎无法在 man/info/help 页面中找到关系,除非我遗漏了一些东西,有人可以解释一下hashing 对type命令做了什么吗?
是否可以在没有-附加到末尾的情况下打印 SHA 总和?
$ echo test | sha1sum
4e1243bd22c66e76c2ba9eddc1f91394e57f9f83 - <--- this "-" dash/hyphen
Run Code Online (Sandbox Code Playgroud)
我知道我们可以使用awk和其他命令行工具,但是可以不使用其他工具来完成吗?
$ echo test | sha1sum | awk '{print $1}'
4e1243bd22c66e76c2ba9eddc1f91394e57f9f83
Run Code Online (Sandbox Code Playgroud) 根据man sshd:
LOGIN PROCESS\n When a user successfully logs in, sshd does the following:\n\n <...>\n\n 9. Runs user's shell or command. All commands are run under the\n user's login shell as specified in the system password data\xe2\x80\x90\n base.\nRun Code Online (Sandbox Code Playgroud)\n不过,尚不清楚“在用户的登录 shell 下运行”字面意思是“登录 shell,如bash -l”?我的实验表明,不,不是:
$ ssh u@h shopt -q login_shell && echo 'Login shell' || echo 'Not login shell'\nNot login shell\nRun Code Online (Sandbox Code Playgroud)\n我不明白为什么会这样?它导致运行的命令无法获得通常的环境,就像登录到 shell 一样。这很麻烦。
\n