1、终端
提起命令行,首先要想到的是输入命令行的终端。所以先介绍一下最常用的两种终端:
bash 和 zsh
从这两张图片就能看出一些基础的区别:
- bash会显示电脑的名称及型号,而zsh则相对简洁一些
- 在使用上来看,zsh相对更好用一些,eg: 在进行目录跳转时,zsh可以利用tab键进行补全,但是bash并不可以,还有在zsh下如果使用git会显示所在的分支,对开发者来说非常方便。
安装 zsh
命令行安装
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
切换
$ zsh //在bash下输入,即跳转至zsh
$ bash //在zsh下输入,即跳转至bash
ps:介绍一款更好用的终端工具(guake)
安装
$ sudo apt-get update
$ sudo apt-get install guake
设置guake为默认的终端使用
$ sudo update-alternatives --config x-terminal-emulator
//然后输入guake所在的序号
2、 命令行操作
- 文件及目录操作
- cd — 切换目录
$ cd /home //进入home文件夹下
$ cd //回到主文件夹下
$ cd .. //回到上一层
- mkdir — 创建文件夹
$ mkdir demo //创建一个名字为demo的文件夹
- touch — 创建文件
$ touch demo.* //创建一个名字为demo的文件,其中后缀名可以自己填写,如.c 、.txt等等
- cp — 复制
$ cp demo1.txt demo //复制demo1.txt到demo文件夹下
更多关于cp的命令可利用cp --help来查找
- rm — 移除
$ rm demo1 //删除文件demo1
$ rm demo2 -r // 删除文件夹demo2
$ rm demo3 -rf //强制删除文件夹demo3
-
pwd — 查看当前所在目录
pwd.png - ls — 查看当前文件夹下所含有有文件及文件夹
$ ls //显示当前文件夹下的文件及文件夹
$ ls -a //显示当前文件夹下所有文件(包括隐藏文件)
$ ls -l //或直接可以用ll来代替该命令,显示每一个文件的属性,通常包括:文件或目录的节点、种类、权限模式、链接数量、所归属的用户和用户组、最近访问或修改的时间等内容。
执行结果如下图:
ls.png
- tar — 打包
$ tar -cf Demo.tar *.jpg //将所有.jpg的文件打成一个名为Demo.tar的包。-c是表示产生新的包,-f指定包的文件名。
$ tar -rf Demo.tar *.gif //将所有.gif的文件增加到Demo.tar的包里面去。-r是表示增加文件的意思。
$ tar -uf Demo.tar logo.gif //更新原来tar包Demo.tar中logo.gif文件,-u是表示更新文件的意思。
$ tar -tf Demo.tar //列出Demo.tar包中所有文件,-t是列出文件的意思
$ tar -xf Demo.tar //解出Demo.tar包中所有文件,-x是解开的意思
- zip — 压缩
$ zip -r demo.zip 1.c 2.c 3.c //创建一个demo.zip并将1.c、2.c、3.c三个文件添加到demo.zip中
$ unzip demo.zip //解压demo.zip
$ unzip *.zip // 解压所有以.zip结尾的压缩包
$ unzip -v demo.zip //当我不想解压,只想看压缩包中有什么时,执行这条命令
- find — 查找
$ find [目录名] -name "*.c" //在该目录下找到所有以.c结尾的文件
$ find [目录名] -perm //按照文件权限来查找文件
$ find [目录名] -user //按照文件属主来查找文件
- grep
grep命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户 - less 和 more — 查看文件内容
$ less demo.c
$ more demo.c
less和more的区别:
more只能向后查看文件,且会显示百分比
less可以上下翻看
- tail
$ tail -n number 文件名 //查看文件倒数第number行内容
$ tail -n +number 文件名 //从第number行开始查看文件内容
$ tail -f 文件名 //循环查看文件内容
- 帐号相关操作
- su — 切换进root权限
- sudo — 切换为管理员
- woami — 查看当前用户
- passwd — 修改当前用户的密码
- 包管理 — 相关操作
apt-cache search package 搜索软件包
apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-get install package 安装包
sudo apt-get install package --reinstall 重新安装包
sudo apt-get -f install 修复安装
sudo apt-get remove package 删除包
sudo apt-get remove package --purge 删除包,包括配置文件等
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
apt-cache depends package 了解使用该包依赖那些包
apt-cache rdepends package 查看该包被哪些包依赖
sudo apt-get build-dep package 安装相关的编译环境
apt-get source package 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理无用的包
sudo apt-get check 检查是否有损坏的依赖
- 进程相关
- **ps **
$ ps
ps结果显示.png
结果显示为四列:这些信息在显示时未排序
PID: 运行着的命令(CMD)的进程编号
TTY: 命令所运行的位置(终端)
TIME: 运行着的该命令所占用的CPU处理时间
CMD: 该进程所运行的命令
$ ps -ax //显示所有当前进程
$ ps -u you //根据用户过滤进程
$ ps -aux --sort -pcpu | less //根据 CPU 使用来升序排序
$ ps -aux --sort -pmem | less //根据 内存使用 来升序排序
$ ps -C 进程名 // 通过进程名和PID过滤
- kill — 杀死进程
$ kill -l //列出信号名称
$ kill 进程号 //杀死该进程
$ kill -9 进程号 //彻底杀死该进程
- 系统信息相关
- top
$ top -h //help显示帮助
$ top -v //version显示版本
$ top -u you //显示指定用户的进程
$ top -p 进程名 //显示指定进程
$ top -n //number进入top后,top会定时刷新状态,这个值就是设置刷新几次
$ top -d //delay进入top后,top会定时刷新状态,这个值就是设置几秒刷新一次
$ top -b //Batch mode,top刷新状态默认是在原数据上刷新,使用这个参数后,会一屏一屏的显示数据。结合重定向功能和计划任务,这个参数在记录服务器运行状态时非常有用。
- df
$ df -a //显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统
$ df -k //以k字节为单位显示
$ df -i //显示i节点信息,而不是磁盘块
$ df -t //显示各指定类型的文件系统的磁盘空间使用情况
$ df -x //列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)
$ df -T //显示文件系统类型
- uname — 显示当前操作系统名称
$ uname //显示操作系统名称
$ uname -a //显示指定的所有信息
uname.png
- 网络相关
- ping — 用来测试与目标主机的联通性
- telnet — 通常用来远程登录
- curl — 是一个利用URL规则在命令行下工作的文件传输工具,是一款很强大的http命令行工具
- netstat — 用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等
- 修改hosts请看 host翻墙
相关工具与资源
- oh-my-zsh: https://github.com/robbyrussell/oh-my-zsh
- oh-my-zsh介绍:http://macshuo.com/?p=676
- 常用命令行介绍: https://github.com/iamcoach/console/blob/master/COMMANDS.md
- 常用命令行cheet sheet: https://bbs.excellence-girls.org/topic/167
- 每个程序员都应该知道的8个Linux命令: http://www.imooc.com/article/1276
- 29个你必须知道的Linux命令: http://www.imooc.com/article/1285
- Linux mkdir、tar 和 kill 命令的 4 个有用小技巧: http://www.imooc.com/article/1316
- 慕课网 《Linux达人养成计划 I》:http://www.imooc.com/learn/175
- 慕课网 《Linux达人养成计划 II》:http://www.imooc.com/learn/111
- 慕课网上更多Linux相关课程:http://www.imooc.com/course/list?c=linux
- Ubuntu各种技巧:http://wiki.ubuntu.org.cn/UbuntuSkills
- Ubuntu常用命令行教程:http://teliute.org/linux/Tecli/
- 书籍《鸟哥的Linux私房菜》: https://book.douban.com/subject/4889838/
网友评论