Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

原来命令行也是门艺术 #27

Open
FrankKai opened this issue Apr 19, 2018 · 0 comments
Open

原来命令行也是门艺术 #27

FrankKai opened this issue Apr 19, 2018 · 0 comments
Labels

Comments

@FrankKai
Copy link
Owner

curl -Lo ...
这个命令是什么意思呢?通过curl --help 查到了下表。

-L, --location      Follow redirects (H)
     --location-trusted  Like '--location', and send auth to other hosts (H)
     --login-options OPTIONS  Server login options (IMAP, POP3, SMTP)

但是看不懂 -Lo是什么操作,印象中git也有。

usage: git [--version] [--help] [-C <path>] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

配置:

git config --global user.name "姓名"
git config --global user.email "邮箱"

常用:

git add .
git commit -m ""
git pull
git push

代码审计相关:

git pull --rebase origin 分支名
git push origin HEAD:refs/for/分支名 

从上面的git代码可以看出来,有些命令后面跟一个横线"-",有的命令后 main跟两个横线"--"。

那么一个横线参数,两个横线参数的区别什么呢?

难道"-"是"--"的父集?

这是一个由于读书少导致的主观错误臆测。

通过度娘,我搜索到了这个好问题:linux中间有的命令是一个横杠,有的命令是两个横杠。请问这有什么区别吗?

其中有一段非常好的回答:

正好前段时间看《UNIX 编程艺术》10.5 节提到,过来回答一下。

Unix 程序的命令行选项有三种风格:Unix 风格、GNU 风格和 X toolkit 风格。

Unix 风格

即题主说的 -a 这种。在选项需要加参数的时候,紧跟在选项后面即可(或者加空格)。比如登录 mysql server 的时候:

$ mysql -u root -p

或者

$ mysql -uroot -p

均可。这时,root 就是 u 的参数,表示使用 root 用户登录。另外加不加空格看程序怎么才处理了,没有明确的规定。

GNU 风格

即题主说的 --help 这种,使用两个连字符加上关键词(而不是单个字符)。这种风格的出现是因为有一些复杂的 GNU 程序,仅仅 26 个字母(或者算上大小写 52 个)不够使用而发展出来的。另外一个有点是容易理解,因为出现的不再是缩写的字母。选项参数可以使用空格分割也可以使用"="来分割。如:

$ ls --human-readable --sort=time

如果使用 Unix 风格,那么上条命令则是

$ ls -ht

是不是更加易读呢?

X toolkit 风格

这是一种比较不常见的风格,使用单个连字符加上关键词。只有 X 相关的程序才使用这种风格,一般不建议使用。

$ xeyes -display joesws:0 -geometry 1000x1000+0+0

看上去和 GNU 风格差不多,只是双连字符改成了单个连字符。

这个回答已经很详尽了,但是还是需要去看《Unix编程艺术》,242页到248页讲得非常详尽,将三种命令行的来龙去脉都讲清楚了,而且还给出了一些常见的Unix命令参数表,非常值得一看。

但是说到底,还是需要在实践中去不断学习各种命令行的使用,罗列下目前我所知道的提供命令行参数的应用程序。

  • git
  • node python java go
  • npm yarn cnpm maven
  • curl
  • mongodb mysql
  • docker kubectl
  • brew
  • choco
  • mac/linux 系统命令
  • windows 系统命令

等等等等,还有很多,就不一一罗列了,每一种工具都需要大量的实践。

有一个很好的查看帮助的方法,命令后面添加-h,--help或者help参数。比如foo -h,foo --help , foo help,可以直接在终端中去查看命令行的使用方法。

That ' s it !

@FrankKai FrankKai added the Linux label Mar 6, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant