最近都在更新,主要涉及 iOS, Python 和 golang,欢迎关注 晨晓(chenxiaopost)
由于先在微信后台编辑的文章,转换 markdown 太麻烦了。。上面是完整内容的截图,下面是排版混乱的文本。
在前文中,我分享了自己收集的一些便于使用的命令行命令,由于行文仓促没有进行必要的交代和拓展,本文会补全这些信息同时新增一些使用的命令行介绍。
为什么使用命令行?《乔布斯传》中有介绍,乔布斯在参观了施乐( Xerox )之后,对其简洁优雅的用户图形界面 (Graphic User Interface, 简称 GUI) 感到震撼,后续凭借用户图形界面在个人电脑领域做出了不小的成就。可以说,用户图形界面变革了操作电脑必须掌握命令行的局面,将个人电脑走进千家万户铺就了路基。
尽管如此,命令行操作仍然有着很多用户图形界面无可比拟的优势。
用户图形界面难以做到精准操控,点击某个页面左上角第一个像素可以作为一个例子加以印证。
由于第一条的缘故,用户图形界面不便于将操作自动化,尤其在面对大小各异的屏幕分辨率时。
用户图形界面是对某些核心操作优化体验之后的封装,省略了细节,灵活性不够。
系统内置的用户图形界面的应用程序数量有限,而新安装应用程序需要下载时间和硬盘空间,在切换使用环境时不便。
程序出现无法响应时命令行有时能作为补救措施。
在学习命令行之前,你可能需要区分 Terminal, Console, TTY, Shell 的概念,可以移步 https://www.zhihu.com/question/21711307 进行访问。简单的说,Shell 就是命令行程序解释器,最常见的有 Bash 和 Zsh 等,我推荐大家使用 Oh-My-Zsh 搭配 Zsh 使用。
由于第一台电脑诞生于上世纪的美国大学校园,故而很多命令会隐含英语缩写,下文会适当标明一些缩写方便记忆。
(1)便于理解其他命令的命令
whatis COMMAND
man COMMAND COMMAND --help
which COMMAND whereis COMMAND
clear
exit
(2)文件操作命令
Unix 系统有一条知名的信条「一切皆文件」,无论是硬件外设,网络端口都被当作文件,每个文件有自己的 URI,通常以 / 开头的是基于系统根目录的绝对路径,以 ~/ 开头的是基于用户家目录的绝对路径,以 ./ 和 ../ 开头的是基于当前目录或上级目录的相对路径。
ls [DIRECTORY]
cd DIRECTORY
pwd
cp SOURCE TARGET
mv SOURCE TARGET
rm DIRECTORY
mkdir DIRECTORY
touch FILENAME
open DIRECTORY
open -e FILENAME
open -a APPLICATION FILENAME
chflags DIRECTORY
chmod 755 DIRECTORY
chmod a+x DIRECTORY
chown GROUP:USER DIRECTORY
1
superarm 2019-04-09 17:07:01 +08:00
Cool,加油
|
2
lynntsuiplu 2019-04-09 17:15:42 +08:00
想了些,应该是关注不看系列(那还是先关注吧
|
3
azh7138m 2019-04-09 17:18:56 +08:00 via Android
cli 还是 gui 都行的吧。。。
罗列基础也算是心得吗。。。 |
4
shawndev OP @azh7138m
抱歉刚下班看到您的回复,针对你的问题展开回复一下。 第一,关于「 cli 还是 gui 都行的吧。。。」,我解读为通常 cli 可以做的事情 gui 都可以做。 首先,相当一部分操作 gui 无法像 cli 一样轻易的完成,比如 1 )当可用磁盘空间小于 20g 时清理 xcode 产生的 archive 目录,光是 archive 目录的具体 uri 大部分开发者都没办法轻易记住 2 )数清楚某个工程目录下一共有多少 ios 源代码文件,包含.h 和.m。 其次,bash 脚本更容易自动化这个言论我相信是站得住脚的,即使退而求其次选择 applescript 也难以完成多种 bash 命令组合的功能。 第二,关于「罗列基础也算是心得吗。。。」 首先,上面粘贴的图片确实主要是罗列基础,在文章第一句也说了,因为这个系列文章的第一篇讲述的是一些现成的命令,例如如何实现免密登录远程主机和别名登录远程主机,而 bash 对于很多小白其实是个黑盒,前文提到的 echo 到文件我考虑到可能有人不理解其功能,所以在第二篇补充了简要说明。 其次,我不是简单的罗列了命令,如果只是想罗列命令,将 PATH 变量下各个目录 ls 一下然后拼接起来会比现在更全,再不济各个命令的 man 页面也有相关命令,可是这些 man 页面很多是 linux 下的命令,mac 下无法使用。而且我针对这些命令做了分组,简要说明了命令的来源,方便记忆。 最后,其实这些命令有很多更详细的参数没有列举,我相信告诉有了 whatis 和 man 两个命令,加上后面命令分类,需要时再去查询要好过死记硬背。 谢谢,希望您可以关注我的公众号,不断反馈帮助我做的更好。后续我会针对 git,openssl,ffmpeg,以及开发相关的一系列命令,如 make,ld,lipo,otool 等做更细致更有针对性的总结。 @azh7138m |
6
shawndev OP @lynntsuiplu 哈哈,多看,多练,总能有所收获的。后面也会分享我近五年开发感到受益匪浅的网络资料。
|
7
shawndev OP @azh7138m 您可以查看我这个系列的第一篇博文,如果没有基础的铺垫,不知道环境变量,就很难理解 IFS 是什么含义,以及为什么需要修改 IFS,又如何通过修改 IFS 获取所有网络连接的 dns 连接方式。
|
8
metrxqin 2019-04-09 21:11:25 +08:00
汪汪汪 (增加此文噪音)
|
9
eret9616 2019-04-09 21:13:44 +08:00
汪汪汪 (增加此文噪音)
|
10
azh7138m 2019-04-09 21:18:19 +08:00 via Android
那写个 shell 入门好了(
其实如果看一个命令的常见用法可以去 tldr.jsx 我只是觉得叫做心得 和 实际内容的预期偏差比较大 |
11
shawndev OP @azh7138m 感谢你的回复,我目前在用的是 devhints.io ,应该和你说的网址功能类似,现在你说的工具也纳入我的工具箱了。基于你的反馈我准备针对之前使用的一些稍微复杂的命令说一下问题产生的背景,bash 的解决方案,以及每一行的作用。毕竟心得是很务虚的东西,总结成切实可行的知识方便自己回顾,也方便其他不同程度的人查漏补缺。
|