我试图解析一些 nginx 配置
λ tree sites-enabled/ sites-available/
sites-enabled/
├── bank.cwrcoding.com.conf
├── calendar.cwrcoding.com.conf
├── cloud.cwrcoding.com.conf
├── cwrcoding.com.conf
├── drive.cwrcoding.com.conf
├── groups.cwrcoding.com.conf
├── mail.cwrcoding.com.conf
├── sites.cwrcoding.com.conf
├── studentenverwaltung.cwrcoding.com.conf
├── wekan.cwrcoding.com.conf
└── www.cwrcoding.com.conf
sites-available/
├── bank.cwrcoding.com.conf
├── calendar.cwrcoding.com.conf
├── cloud.cwrcoding.com.conf
├── cwrcoding.com.conf
├── drive.cwrcoding.com.conf
├── groups.cwrcoding.com.conf
├── mail.cwrcoding.com.conf
├── sites.cwrcoding.com.conf
├── studentenverwaltung.cwrcoding.com.conf
├── wekan.cwrcoding.com.conf
└── www.cwrcoding.com.conf
sites-enabled/* 文件每个都包含一行:
include sites-availabe/cwrcoding.com.conf;
当尝试遍历启用站点的/ *文件,剪切这些文件并尝试将其内容作为文件读取时,我遇到了一些奇怪的错误,所以我尝试了一个简约的工作解决方案,并从那里开始工作,但是以下发生:
λ for enabled in sites-enabled/*
> do
> echo "$(cat "$enabled") |"
> echo ==========
> done
include sites-available/bank.cwrcoding.com.conf; |
==========
|clude sites-available/calendar.cwrcoding.com.conf;
==========
|clude sites-available/cloud.cwrcoding.com.conf;
==========
|clude sites-available/cwrcoding.com.conf;
==========
|clude sites-available/drive.cwrcoding.com.conf;
==========
|clude sites-available/groups.cwrcoding.com.conf;
==========
|clude sites-available/mail.cwrcoding.com.conf;
==========
|clude sites-available/sites.cwrcoding.com.conf;
==========
|clude sites-available/studentenverwaltung.cwrcoding.com.conf;
==========
include sites-available/wekan.cwrcoding.com.conf; |
==========
|clude sites-available/www.cwrcoding.com.conf;
==========
如您所见,对于大多数站点,cat输出的第一个字符被替换为命令替换后的文本。
谁能解释发生了什么?还是我发现了一些错误?
问题是您的文件具有 DOS/Windows 样式的行尾。作为一种快速解决方法,请替换:
和:
在这里,
tr
在显示文件之前删除回车符,避免出现问题。dos2unix
但是,如果您的文件打算在 Unix 系统上使用,则最好使用一个或类似的实用程序从文件本身中删除回车符。例子
让我们创建两个 DOS 样式的文件:
让我们运行原始命令:
注意损坏的输出。
通过
tr
应用,我们会收到我们期望的输出: