我按照指定的顺序运行了以下命令:
$ln a b
$ls -i a b
523669 a 523669 b
$rm -f a
$ls -i b
523669 b
Run Code Online (Sandbox Code Playgroud)
我从这个测试中得出结论,该命令rm实际上只删除了文件名(a在这个测试中)而不是文件,因为 inode 仍然存在并且可以通过另一个文件名 ( b)检索。
我的问题是,如果一个文件只硬链接到一个文件名,那么当rm对文件执行时,真正的文件(即inode)是否被完全删除?如果没有,是否可以在没有文件名的情况下仅通过 inode 检索文件 inode?
在它的手册页中kill是这样写的
概要
Run Code Online (Sandbox Code Playgroud)kill [ -s signal | -p ] [ -a ] [ -- ] pid ... kill -l [ signal ] -p Specify that kill should only print the process id (pid) of the named processes, and not send any signals.
但是由于我在 RH 和 RHEL 中都尝试了很多次,像这样的命令kill -s SIGHUP |-p 123从未奏效并且总是报告错误
bash: -p: 命令未找到
我犯了什么错误吗?
我必须做任何配置才能开始大括号扩展吗?当我运行时mkdir {1..10},它只是创建一个目录命名{1..10}。
有人告诉我#!/bin/bash,shell 脚本文件中的第一行 shebang ( ) 是必需的,如果没有这一行,文件将无法准确运行。但是我测试了一些脚本。没有那条线,他们工作得很好。
那行只是一条评论吗?bash 是否像其他注释一样省略了这一行?还是 bash 解释它?
那条线是强制采用那种格式吗?或者只是一个有用的可读笔记?如果我换一种方式,比如说,没有!?
似乎该/etc/inputrc文件符合 shell 脚本语法。但文件名不以.sh. 文件中的第一行也没有#!。
它是另一种文件吗?
这种文件是否与.sh?
它像shell脚本一样运行吗?
它是否有像.sh后缀这样的命名约定?
如果您输入命令ls *and echo *,您会注意到结果之间的显着差异。前者递归包含,而后者完全排除子目录中的文件。对于路径名扩展,它们的行为是否相同?
因此,命令的结果echo *应该是“当前目录中的任何文件”。它应该包括点文件吗?
同样,结果是否应该ls *包含点文件?
由于权限是敏感的,明确是否允许特定用户运行命令很重要chmod吗?