征服命令行

简介: 命令行(command line),也称为 CLI, Terminal, bash, shell……我们中有很多人很怕使用它,但其实只要你知道一些基本的命令和概念,就没什么好怕的了。(文中接下来的内容,命令行统一用 CLI 称呼)

命令行(command line),也称为 CLI, Terminal, bash, shell……我们中有很多人很怕使用它,但其实只要你知道一些基本的命令和概念,就没什么好怕的了。(文中接下来的内容,命令行统一用 CLI 称呼)

image.png

什么时候需要用到 CLI?

80 年代那种只能用命令行来控制电脑运行的时代早已成为历史,现在的操作系统基本都已图形界面化,虽然有些地方还是不可避免的要用到它。那我们今天就来看一下,有哪些地方需要用到命令行呢?

  • 远程服务(不止于 FTP 文件上传下载)
  • 现代编程框架(如 Ruby on Rails)
  • 像 Git/Subversion 一类的版本控制系统(在没有一个优秀的 GUI 解决方案的情况下)

这些是最常用到的。不过今天的重点是初步学习。


开始

Mac 下可以使用 Terminal.app

image.png

Windows 下可以按 win + R,输入 cmd 打开命令行工具,或者使用 Git Bash

image.png

基本的认知

CLI 无非几个步骤:

  1. 输入一个命令
  2. 添加一些参数
  3. 按回车键确认

大多数命令只对你当前的目录(location)有效,因此,第一个要知道的命令就是帮助我们找到“现在在哪里”:

image.png

pwd 代表 __p__rint __w__orking __d__irectory:返回结果为“显示当前正在进行工作的目录”。

cd 代表 __c__hange __d__irectory:返回结果为“改变当前工作目录”。下图是进入当前目录下的一个子目录:

image.png

..:返回上一级目录(当前目录的父目录)

image.png

~ 是一种特殊的路径符号,代表着当前用户的“home”文件夹,故此有两种方法可以到你的 home 文件夹:

  1. 提供完整的路径:

$ cd /Users/<your-username>/projects/

  1. 或用:

$ cd ~/projects/

  1. 另一个重要的命令 ls,用于列出当前目录或指定目录的内容:

$ ls path/to/folder

  1. 这个命令的两个重要的可选参数:
  • -l:输出一个附加信息的列表。
  • -a 标志:把隐藏的文件(夹)也显示出来,这个在如使用版本控制等很多情况下都很有用。

结合一下,你可以在当前目录下这样使用:

image.png

或者在别的路径下调用:

$ ls -la path/to/folder

文件(夹)相关的命令

删除

删除文件:

$ rm path/to/file.ext

删除文件夹要加上-r(recursive),这样就会把目录里的所有内容都删除:

$ rm -r path/to/folder

移动

例子:

$ mv path/to/file.ext different/path/file.ext

这个命令也能用来给文件重命名:

$mv old-filename.ext new-filename.ext

复制

使用 cp 命令,用法同 mv


新建

使用 mkdir(make directory):

$ mkdir new-folder

输出

命令行还可以用来显示文件的内容。虽然使用编辑器来执行这一任务会更优雅,但有在有些情况下使用命令行反倒会方便一些。比如,当你只是想快速浏览一下,或因为是远程服务(这样图形界面操作的方式行不通),使用命令行就会变得很便捷:

使用 cat 命令会输出一个完整的文件内容

image.png

headtail 命令非常相似,分别是只显示前 10 行、后 10 行内容。

需要注意的是,less 命令有所不同:它虽然也用于显示输出,但它可以控制页面流程本身,也就是它只显示一个页面的内容,然后只能等待下一步指示。屏幕的最后一行显示的是当前文件名或只是一个等待接收命令的冒号 :,这时候按空格键将向前翻一页,按 b 键将后退一页,按 q 将退出 less 命令。


CTRL 键的使用

  • CTRL + A:光标移到行首
  • CTRL + E:光标移到行末
  • CTRL + C:终止当前运行的命令


用 TAB 键完成内容自动补充

输入文件名和路径的时候很容易出错,这时候就需要 TAB 键来帮你自动完成所写的内容。

例如当你想切换到一个别的目录,你可以手动输入每一个部分的路径:

$ cd ~/design/favorite-customer/mockups/

或者使用 TAB 键快速完成:

image.png

你输入的字符不是每次都是明确的——因为“de”也可以是文件夹中“development”或“dentist”,在这种情况下 TAB 键不能自动补充你的输入,但它会有一个可能选项的列表,然后自动补全一些文字让你输入地更明确些。


用方向键查看历史命令

CLI 会像浏览器一样记录你最近的命令历史,所以:

  • 向上键 ↑ 翻向更早的记录
  • 向下键 ↓ 翻向更近期的记录

image.png

CLI 的替代品

现在有很多图形界面工具可以让你脱离 CLI,如 FTP 的客户端 Transmit ,版本控制器客户端 Tower。但不可否认,CLI 在某些情况下仍然是最好的选择。

相关文章
开源测试平台横向测评系列『流马』篇:流马使用及总结
【使用篇】 ● 接口测试:创建接口(添加引用公共参数、添加引用自定义参数)、测试用例(参数关联)、业务流程测试实践 ● web自动化测试:元素管理(添加元素)、测试用例(添加元素)、设计测试场景 ● 测试计划、测试集合与测试用例相互之间的关系 【总结篇】 ● 使用总结:常见的使用注意事项,如变量引用、函数引用、关联参数引用等 ● 优化建议:结合真实使用过程,从用户角度出发,提出的7条优化建议 ● 优缺点总结:优点、缺点、评分(从不同角度评测打分)
开源测试平台横向测评系列『流马』篇:流马使用及总结
|
开发框架 人工智能 运维
蓝鲸自动化运维平台
蓝鲸自动化运维平台 1.蓝鲸简介 官网:https://bk.tencent.com/docs/ 腾讯蓝鲸智云,简称蓝鲸,是腾讯互动娱乐事业群(Interactive Entertainment Group,简称 IEG)自研自用的一套用于构建企业研发运营一体化体系的 PaaS 开发框架,提供了 aPaaS(DevOps 流水线、运行环境托管、前后台框架)和 iPaaS(持续集成、CMDB、作业平台、容器管理、数据平台、AI 等原子平台)等模块,帮助企业技术人员快速构建基础运营 PaaS。
3490 0
蓝鲸自动化运维平台
|
12月前
|
人工智能 算法 开发工具
快手封号一般封多久?
一、封禁时长梯度设计原理
|
图形学 Android开发 iOS开发
穿越数字洪流,揭秘Unity3d中的视频魔法!Windows、Android和iOS如何征服RTSP与RTMP的终极指南!
【8月更文挑战第15天】在数字媒体的海洋中,实时视频流是连接世界的桥梁。对于那些渴望在Unity3d中搭建这座桥梁的开发者来说,本文将揭示如何在Windows、Android和iOS平台上征服RTSP与RTMP的秘密。我们将深入探讨这两种协议的特性,以及在不同平台上实现流畅播放的技巧。无论你是追求稳定性的RTSP拥趸,还是低延迟的RTMP忠实粉丝,这里都有你需要的答案。让我们一起穿越数字洪流,探索Unity3d中视频魔法的世界吧!
610 2
|
安全 网络安全 数据安全/隐私保护
Cisco-网络地址转换动态NAT
Cisco-网络地址转换动态NAT
363 1
|
算法 搜索推荐 Java
太实用了!阿里内部强推的超全Java算法学习指南,已被彻底征服
算法和数据结构一直以来都是程序员的基本内功。 数据结构可以看作是算法实现的容器,通过一系列特殊结构的数据集合,能够将算法更为高效而可靠地执行起来。
|
移动开发
在使用钉钉H5微应用时,通过消息通知链接跳转到特定页面可能会出现一些问题
在使用钉钉H5微应用时,通过消息通知链接跳转到特定页面可能会出现一些问题
910 2
|
Kubernetes Cloud Native 数据库
云原生|kubernetes|k8s下部署SQLServer以及Navicat连接SQLServer报错:远程主机强迫关闭了一个现有的连接 错误的解决
云原生|kubernetes|k8s下部署SQLServer以及Navicat连接SQLServer报错:远程主机强迫关闭了一个现有的连接 错误的解决
1095 0
|
数据采集 canal SQL
一篇文章搞懂数据仓库:常用ETL工具、方法
一篇文章搞懂数据仓库:常用ETL工具、方法
一篇文章搞懂数据仓库:常用ETL工具、方法
|
API Android开发
Jetpack新成员SplashScreen:为全新的应用启动效果赋能!(2)
Jetpack新成员SplashScreen:为全新的应用启动效果赋能!(2)
Jetpack新成员SplashScreen:为全新的应用启动效果赋能!(2)