Windows和Unix/Linux的文件路径分隔符及命令行参数风格
Unix是最先出现的,使用的文件分隔符就是slash '/'。比如:
$ pwd
/home/engineer/work
然后随着网络协议的发展,网络地址也采用了类似的分隔符,比如:
http://www.google.com/index.html
众所周知,比尔盖茨发明了Dos系统,在Dos系统里,命令的参数是斜线形式的,比如:
C:\DOING\Coding>dir /P/B
CH101
执行dos命令时,解析命令行参数时,如果出现斜线,那后面的一个字母就是参数。
这就没法使用斜线来表示路径的分隔了,于是使用了back slash反斜线 '\'。
Dos里使用反斜线,于是在图形操作系统Windows中也继承了Dos的用法,尤其一开始Windows的核心还是Dos系统。
但随着Windows系统的不断升级和更新,Dos系统已经边缘化或者淘汰了,现在在Windows资源管理器里或者代码编程里,使用斜线来表示路径也能正常使用了,两种方式很多情况下可以互换。
-----------------------------------------------------------------------
那么这里还要说一下类Unix系统的shell命令的参数形式,一般分三种:
1,Unix风格
Unix风格的参数是从贝尔实验室开发的AT&T Unix系统上原有的命令继承下来的。比如:
$ls -lar
$git commit -am "xxx"
一个短横线后面可以同时接多个字母参数,也可以分开。
$ls -a -r -l
$ls -arl
2,GNU风格
一般是Linux系统用的Linux内核加GNU的软件,使用的两个短线,double dash:
$ grep --extended-regexp --recursive *.c ./
$ grep -E -r *.c ./
$ grep -Er *.c ./
当然Linux系统里也支持Unix风格,一般是一个shell命令的参数两种形式都支持,一种是long option,一种short option,分别是两个短横线后面接个单词,和一个短横线后面接个字母。
使用双横线的好处,后面单词中可以使用单个短横线作为分隔符。
3,BSD风格
伯克利软件发行版(Berkeley software distribution,BSD)是加州大学伯克利分校开发的一个Unix版本。比如:
$ ps aux
$ tar xzvf test.tar.gz
$ ps -aux
tar, tape archive命令和ps命令。
上面这三种风格,随着操作系统不断完善,兼容性和支持性上一般都不会造成使用上的困扰。
较为常用的还是前两种,主要区别就是长短不同。
还有个小技巧,Linux命令的结构一般是:
命令 + 参数 + 文件/路径
当我们使用短横线来表示参数,那以短横线开头的文件名就没法使用了。
比如一个文件名为"-myfile.txt"的文件。这时我们使用一个不带参数的双横线,来表示命令行参数的结束。
$ git checkout -- -myfile.txt