流畅地使用命令行是一个常被忽略的技能,或被认为是神秘的奥义。但是,它会以明显而微妙的方式改善你作为工程师的灵活度和生产力。以我有限的程序媛经历已然发觉命令行真是一个艺术的存在。
简单的几个字母组合就能产生意想不到的效果,有句话说得好:
图形界面让简单的任务变得更简单,但是命令行让复杂的任务变得可能
如果你是一名Linux开发者,可能会更频繁地使用命令行,本文主要是结合我自身学习和工作时发现的有用的命令行使用小窍门和笔记,希望和大家共享。有些小窍门是很基础的,而有些是相当地特别、复杂、或者晦涩难懂。希望和大家一起学习。
因为我用的是Ubuntu,所以以下都以Ubuntu为例说明。
如何学习命令##
如果我们已经把系统装好,启动之后就是这个样子。
如果对Ubuntu感兴趣的话戳这里哟。
使用命令行,我们先要打开一个叫做”终端“的软件,这个软件是系统已经预装的了,所以我们可以敲ctrl+alt+t打开它
学习命令行之前我们先了解一下这些字符的含义以及命令的组成。
图中冒号以前的部分称作命令提示符由“username@machinename” 后面跟上当前工作目录组成;
其中 ~ 代表当前用户的主目录( home ),对于 never 用户来说这个位置就是 /home/never,后面我们介绍文件系统结构的时候,会对什么是当前工作目录有进一步的了解。
后面的美元符号就告诉我们可以开始输入命令了,如果我们随便输入一些字符,就会报错 “command not found”。
一个合法的命令一般由三部分组成,命令本身,命令参数,操作对象。
命令的例子:
$ ls
$ mkdir ttt
$ rm -r ttt
作为开发者,入手一个新的工具的时候,基本原则不必每个知识点都逐一学习,实际动手中学习就好了。如果要看书,千万不要看手册型的大部的课本,课本通常都讲的太深了而且是重理论轻动手。所以还是自己动手敲一遍记忆更加深刻。
对于已经基本学会的命令,如果忘了具体细节,可以使用 manpage,手册。如果要查看 rm 这个命令的文档,我们可以敲
$ man rm
然后敲 /-r 就可以查找 -r 这个参数的意义了,查找下一处,敲 n,退出,敲 q 。
常用的基础命令##
一般的命令行都是可以加参数的,不同参数代表不同的操作。
1. 文件/文件夹操作
- ** ls **---列出当前目录下的文件或者目录名字
-a 显示所有文件和目录
-A 显示所有文件和目录除了.和..
-l 显示详细信息
-h 将文件容量以较为易懂的方式列出(如:GB,MB)
-t 按时间显示
-
cd ---切换目录
输入:cd 【相对路径或者绝对路径】例如:cd /etc 则切换到etc目录下
特殊的cd命令搭配:
cd ~ 或者 cd ---切换到自己的主文件夹(root权限下,到/root目录下。用户abc权限下,到/home/abc目录下)
cd .. ---返回上一个目录
**cd - ** ---返回刚才的目录(例如:本来在/etc目录下,cd到了/root目录下。输入cd - 则回到/etc目录) - pwd ---用于显示当前所在目录的路径
- which ---用于获得执行文件的位置
- clear ---清除终端
- mv ---移动/重命名文件
- **rm ** ---删除文件/文件夹(-r 表示递归删除目录)
- mkdir ---新建目录
- cat --- 连接文件
- touch ---新建一个文件
2. 用户相关操作
- whoami ---打印当前用户信息,如:
- su ---切换用户
- sudo ---切换为root用户,具有最高权限
3. 安装软件
- apt-get update --- 更新系统包管理器
- apt-get install --- 使用安装软件
- apt-get upgrade --- 更新所有使用包管理器安装的软件
- apt-get remove PACKAGE ---移除或卸载包
4. 其它
- grep --- 打印出匹配条件的文字行
- chown --- 更改拥有者命令
输入命令 sudo chown root:root t.txt 可以将文件的所有者和用户组改为 root,这时原来的所有者将变成其他用户;
好用的终端推荐##
上面介绍了一些常用的命令,这里安利一个好用的终端吧,听说和命令行很配哦!
oh-my-zsh + guake :一个很酷炫的终端软件,让你分分钟爱上命令行,它有美观的界面以及强大的可操作性,就是酱紫的。
是不是很赞那,快来试一试吧!
参考资料:
https://github.com/iamcoach/console/blob/master/COMMANDS.md
http://happypeter.github.io/LGCB/book/02_hello_cli.html
https://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-103-1/
https://github.com/robbyrussell/oh-my-zsh