Shell 基本命令

Shell 简介

命令行 (CLI) 严格来讲与 Shell 是两个东西
命令行是供用户输入命令的界面,本身只是接受输入,然后将命令传递给命令解释器
Shell 就是这个命令解释器程序,在用户与系统之间提供面向行的可交互接口

Linux 的 Shell 有很多类型,默认是 Bourne Again Shell (BASH)
还有 Z-Shell (ZSH), TCSH Shell 等种类,不同的 Shell 语法与特性不尽相同

Linux 的命令行提示符默认为 $,如果获得了 root 身份,提示符将变为 #

浏览硬盘

$ cd /		## 进入根目录
$ ls		## 列出当前目录下的文件和目录

$ cd home/ 	## 进入 /home 目录
$ ls		## 列出当前目录下的文件与目录

$ cd /etc/ 	## 进入 /etc/ 目录
$ ls		## 列出当前目录下的文件与目录
  • etc 目录下面存的是系统以及绝大部分应用软件的配置文件
    home目录下存放着系统中所有用户的主目录
  • Linux 使用纯文本文件来配置软件

提高效率:补全与通配符

文件名没全输入完时,按一下 Tab 键将自动补全剩下的内容
如果剩下的内容有多种选择时,按两下 Tab 键,Shell 会给出所有的可能文件的列表,可以移动光标选择

补全不止适用于文件名,也适用于 Linux 命令名称
(Linux 命令本质上就是一些存放在 /usr/bin/ 目录下的可执行文件)

使用通配符可以匹配文件名的一部分,它们是 “*” “?” “[]”。(可以类比正则表达式中的符号)
*: 匹配任意长度的字符串
?: 匹配一个字符
[]: 匹配所有括号内的字符

$ ls *.cpp	## 列出所有 cpp 文件
a.cpp vf.cpp fuijeri3.cpp

$ ls text?
text1 text2 textn textl

$ ls text[a-c]
texta textc

$ ls text[aA]
texta textA

查看目录与文件

pwd
  1. 功能:显示当前所在的位置 (工作目录)
  2. 参数:无
$ cd /usr/local/bin/
$ pwd
/usr/local/bin
cd
  1. 功能:切换工作目录的基本工具
  2. 参数:cd [PATH]
$ cd /usr/bin
$ cd ..		## 移动到当前目录的父目录 usr

$ cd /usr/bin
$ cd		## 移动到用户主目录 home

$ cd /usr/bin
$ cd ~		## 移动到用户主目录 home
  1. 注意
    • .. 表示上一级目录
    • . 表示当前目录
    • ~ 表示用户主目录
ls
  1. 功能:列出目录内容 (list)
  2. 参数:ls [OPTION] [PATH]
    • ls: 列出当前目录下可显示的文件与目录,不同类型的内容颜色不同
    • ls -F: 列出当前目录下可显示的文件与目录,不同类型的内容后的符号不同
    • ls -a: 列出当前目录下所有文件与目录 (可显示的与隐含的)
    • ls -l: 列出当前目录下可显示的文件与目录,并列出详细属性
    • ls [PATH]: 列出指定目录下可显示的文件与目录
  3. 注意
    • ls 的选项可组合使用,使用一根短线,如 ls -aF, ls -l /usr/bin/
    • Windows 的 dir,vdir 命令,Linux 也可以使用。vdir 相当于 ls -l
cat / more
  1. 功能
    • cat 查看文本文件的全部内容
    • more 按页查看文本文件的内容
  2. 参数:cat [OPTION] [FILE]more [FILE]
    • cat -n [FILE]: 显示行号
  3. 注意
    • cat 后可以跟多个文件名,也可以使用通配符
    • more 只显示一页内容,翻页按空格,向下一行按 Enter,推出按 Q
head / tail
  1. 功能:阅读文本文件的开头 / 结尾的 n 行
  2. 参数:head/tail -n [NUMBER] [FILE]
less
  1. 功能:更强大的 more,有很多功能
  2. 参数:less [FILE]
    • less -M [FILE]: 显示更多文件信息
  3. 注意
    • less 在最下方显示冒号等待输入命令
    • 翻页按空格,向上翻页按 A
    • 搜索某一字符串 用 /[Content],继续查找按 /+Enter
grep
  1. 功能:查找文件内容
  2. 参数:grep [OPTION] pattern [FILE]
  3. 注意
    • 可以同时搜索多个文件
    • 使用 egrep 命令可以使用拓展正则表达式
find
  1. 功能:在指定范围内查找文件
  2. 参数:find [OPTION] [PATH] [expression]
    • -type 指定文件的类型 (b c d f p l)
    • -atime 指定最后使用在 n 天前的文件 (+n 表示大于 n, -n 表示小于 n)
    • -mtime 指定最后修改在 n 天前的文件 (+n 表示大于 n, -n 表示小于 n)
    • -print 将结果打印到标准输出 ([expression])
  3. 注意
    • find 的搜索方式是在查找范围内挨个进子目录查找,所以费时较长
locate
  1. 比 find 更快的查找文件
  2. 注意
    • locate 通过建立文件名数据库的方式查找,所以耗时比 find 短
    • 不过文件名数据库需要使用 updatedb 命令及时更新

运行和查找程序

从终端运行程序只需输入程序名称

$ firefox

这样按下 Enter 后,终端会被挂起,直到程序运行完毕
若要使成虚线后台运行,终端不被挂起,请加 &

$ firefox &

查找程序使用 whereis 命令,会返回程序的可执行文件,源码文件,手册
使用 -b 选项只返回可执行文件

查看用户与版本信息

一台服务器同时会有多人登录,使用 who 命令查看那些人登录,时间,控制台
用 whoami 命令返回自己的用户名

使用 uname -r 返回内核信息,uname -a 返回系统所有信息

寻求帮助

man
  1. 功能:显示 Linux 指令的帮助手册
  2. 参数:man [COMMAND]
  3. 注意
    • man 在终端显示手册时实际调用的是 less 操作也是类似的
whatis
  1. 功能:显示 Linux 指令的命令简介
  2. 参数:whatis [COMMAND]
apropos
  1. 功能:与 whatis 相反,通过功能列出可能的指令
  2. 参数:apropos [Function]