对于 Web 开发实践,我在 Ubuntu 17.10 上使用 LAMP 堆栈。为此,我在 中创建目录/var/www
,每个目录都以一个项目命名。
要创建子目录,我使用终端并:
david@Ed:/var/www/html$ mkdir projectName
david@Ed:/var/www/html$ cd projectName
david@Ed:/var/www/html/projectName$ mkdir css img js
david@Ed:/var/www/html/projectName$ touch index.html
david@Ed:/var/www/html/projectName$ ls
css img index.html js
这行得通。而且,老实说,远非艰巨。但是,有没有一种方法可以简化这一点?
我知道:
mkdir -p projectName/css
将同时创建css
和 parentprojectName
目录(如果该父目录尚不存在),但仍然需要创建其他两个目录和index.html
文件(同样,这并不是特别困难,但感觉应该是不必要)。
理想情况下,我希望该命令mkdir <projectName>
在/var/www
目录中运行时会创建<projectName>
带有css
, img
,js
目录和index.html
文档的目录(该文档理想情况下包含有效 html 文档的骨架*)。但是我接受滥用mkdir
命令可能会导致不可预见/可预测的边缘情况和后果,因此最好的折衷方案可能是某种脚本。
考虑到上述情况,我创建了以下(天真/简单)脚本:
#!/bin/bash
mkdir $@
cd $@
mkdir css img js
touch index.html
我将上面的脚本调用如下:
./createDir.sh projectName
这可行,但不太理想;问题:
- created
index.html
的类型是plain text document (text/plain)
,而不是预期HTML document (text/html)
的,当然 - 没有 HTML 文档的结构(如单个脚注中所述),因为我没有添加任何内容(并且还没有找到在脚本中创建所述内容的方法)。
此外,可以预见的是,理想情况下css
,the和js
目录也将在创建时文档 (和) 完好无损。project.css
project.js
那么,有没有一种方法可以让我(使用脚本或其他方式)创建一个包含子目录和文档的目录?
* . 作为一个基本的例子:
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="js/project.js"></script>
<link href="css/project.css" rel="stylesheet" />
</head>
<body></body>
</html>
您需要一些模板供您
index.html
复制。但是您可以即时创建这样的模板,然后将其复制到所需的目的地。该install
命令可能会有所帮助:您可能需要通过运行此脚本,
sudo
因为/var/...
它不是世界可写的。我建议您执行 adduser 命令对骨架(https://unix.stackexchange.com/questions/285708/skeleton-directory-how-to-add-my-own-directories)执行的操作。
在某处制作模板/骨架,项目的所有初始文件和目录都按照项目中的方式组织。在为新项目创建目录后,只需将骨架复制到目标位置即可:
cp命令中的参数如下:
我要在这里指出一个存档参数,它允许您在模板中设置正确的文件和目录权限和所有权。它们在复制时将被保留,这样您就可以在项目中拥有具有正确权限的文件以供 Web 服务器访问它们。如果您想为每个项目拥有不同的文件所有权,则必须手动执行此操作,再次使用简单的命令(
chmod -R <permissions> <destination directory>
和chown -R <ownership> <destination directory
)。虽然这是一个不完美的答案,并且主要是在我发布问题后通过进一步搜索产生的,但我已经更新了我的脚本并解决了大部分问题。
我当前的脚本(虽然它确实是同样天真和简单)是:
这感觉有点脏,虽然它确实有效。这种当前方法的主要问题是最终的 cat 调用:
这将生成一个由其
type
属性正确标识为的文档application/javascript
,同时使用:只需创建另一个文档——具有正确的文件类型扩展名——其类型属性为
plain text document (text/plain)
.