如何使用 OS X 终端创建文件并在其中插入一行

GGb*_*bro 27 terminal bash command-line macos

如何使用 OS X 上的终端执行以下操作?

创建一个.inputrc在用户主目录中命名的文件,并将此行放入其中:

set completion-ignore-case On

Cal*_* Xu 36

快速回答

touch ~/.inputrc
echo "set completion-ignore-case On" >> ~/.inputrc
Run Code Online (Sandbox Code Playgroud)

解释

首先,创建文件:

touch ~/.inputrc
Run Code Online (Sandbox Code Playgroud)

然后,将内容添加到文件中:

echo "set completion-ignore-case On" >> ~/.inputrc
Run Code Online (Sandbox Code Playgroud)

touch创建一个空文件(假设该~/.inputrc文件尚不存在)。echo将文本写入“标准输出”(简称“stdout”),这通常是您的屏幕,但由于重定向 ( >>),输出被重定向到~/.inputrc. 此设置会将行附加到文件中。

如果~/.inputrc已经存在并且您想擦除(破坏)它的内容,然后将这一行写入其中(即,创建一个仅包含该行文本的文件),请执行以下操作:

echo "set completion-ignore-case On" > ~/.inputrc
Run Code Online (Sandbox Code Playgroud)

单箭头 ( >),又名“大于”符号,echo指示创建一个仅包含给定文本作为文件内容的文件,而不是将内容写入文件末尾。(实际上,echo不创建文件;shell 创建文件,丢弃任何现有内容,然后echo命令写入新内容。)


如果您使用第一种方法(使用>>)并且您发现您添加的行被涂抹到前一行,例如,

这里有一些东西
这里还有一些东西set completion-ignore-case On

然后你需要编辑文件来修复它。如果预先存在的文件的最后一行以文本字符而不是“换行”字符(即,行尾标记)结尾,就会发生这种情况。这对于.TXTWindows 上的文件很常见,但在 *nix 上很少见。

如果您事先以某种方式意识到您的.inputrc文件具有不以换行符结尾的预先存在的内容,那么您应该使用以下echo语句:

echo -e "\nset completion-ignore-case On" >> ~/.inputrc
Run Code Online (Sandbox Code Playgroud)

\n之前的语句被解释为换行符,所以换行之前的内容之后,你要添加新的东西之前添加。

或者,打字稍多但可读性更高,

echo "" >> ~/.inputrc
echo "set completion-ignore-case On" >> ~/.inputrc
Run Code Online (Sandbox Code Playgroud)

或者

(echo ""; echo "set completion-ignore-case On") >> ~/.inputrc
Run Code Online (Sandbox Code Playgroud)

做同样的事情;即,为现有文本提供缺少的换行符,然后在此set completion-…之后添加命令。


小智 5

您需要做的就是:

echo "set completion-ignore-case On" >> ~/.inputrc 
Run Code Online (Sandbox Code Playgroud)

echo 简单地通过正常输出通道(stdout)回显给它的文本

>>从左侧命令输出的标准输出写入右手文件,而你的情况是~/.inputrc

~/ 是相同的 /home/your_username/