是否可以在一个命令中创建一个包含一些文本的 html 文件(我仅使用我的名字作为示例),放在与您所在目录不同的目录中?我对 Ubuntu 还很陌生,如能得到任何帮助我将不胜感激。
答案1
您可以使用重定向,如果给定的目标不存在,则创建一个文件(如果存在,则覆盖该文件,因此请务必小心)。命令的输出不会写入终端,而是写入目标文件。
echo "something" > target
因此,将其替换target
为您要创建的文件的路径,以及"something"
您想要放入文件中的内容......
echo "zanna s" > /home/zanna/playground/new-file
该目录必须已经存在,并且您必须具有在该目录中写入的权限。如果没有,sudo
则不会帮助您,因为重定向是由 shell 本身完成的,并且 shell 不是以 root 身份运行的。解决这个问题的方法不过, 。其中之一是tee
,这是您的另一个选择(尽管这可能使其成为两个命令)。该tee
命令同时写入标准输出(终端)和指定文件,因此它比使用重定向更具信息性:
echo "various things" | tee /path/to/file
这个|
东西就是一个“管道”。它把左边命令的输出变成右边命令的输入。所以echo
( various things
) 的输出就变成了 的输入tee
。
可以echo
使用选项提供多行输出-e
,尽管这很尴尬:
zanna@peach:~$ echo -e "things\non\nseveral\nlines\n" | tee playground/new-file
things
on
several
lines
在上面的命令中,我使用了文件的相对路径(取决于当前位置的路径)。playground
是当前目录的子目录,因此这可以正常工作。如果您使用绝对路径(例如/home/zanna/playground/file
或~/playground/file
或$HOME/playground/file
),则无论当前工作目录是什么,相同的命令都将起作用。
我不知道你说的 html 文件是什么意思。也许它应该有一个扩展名:
echo "$USER" | tee ~/subdirectory/file.html
答案2
为了避免echo
多行文字的尴尬,可以使用另一个 bash 功能:
cat > /path/to/my_file.html << EOF
<!DOCTYPE html>
<html>
<head>
<title>Simple example</title>
</head>
<body>
<p>You just wrote `echo HTML` file with $SHELL as user ${USER}!</p>
</body>
</html>
EOF
请注意,EOF 可以是任何字符串,只要它不出现在输入中的单独行上即可。另请注意,一些 bash 构造(如反引号和变量替换)仍然有效。
如果您以交互方式而不是使用脚本来执行此操作,那么类似编辑器的程序nano
可能更适合这项工作。
答案3
您想将该文件复制到另一个目录吗?
cp <filename> <path/to/new/directory>
或者如果您想在另一个目录中创建一个新文件......
nano file.html /path/to/new/directory
你想写什么就写什么……
然后在该文件中编辑或写入新内容
nano /path/to/new/directory/file.html