- Shell命令
- Linux结构
- kernel
- 管理计算机的硬件资源
 - 为上层应用程序提供运行环境
 
 - 系统调用
- 内核给上层应用程序提供的接口
 
 - 库函数
- 系统调用的封装
- 方便使用
 - 增加代码的可移植性
 
 
 - 系统调用的封装
 - shell
- 命令解释器
- 命令:一般来说,命令就是可执行程序
 - 脚本 (script):命令的集合
 - 具体的shell
- sh
 - csh
 - bash
 - ksh
 - zsh
 
 
 
 - 命令解释器
 
 - kernel
 - 用户子系统相关命令
- 查看所有用户
- cat /etc/passwd
 - man 5 passwd
 
 - 添加用户
- useradd
- -m
 - -s /bin/bash
 
 
 - useradd
 - 删除用户
- userdel
- -r
 
 
 - userdel
 - 修改密码
- passwd
 
 - 切换用户
- su
 
 - 退出切换
- exit
 
 
 - 查看所有用户
 - 文件
- 目录
- 常见的目录
- /
 - /bin
 - /lib
 - /proc
 - /dev
 - /var
 - /etc
 - /root
 - /home/{username}
 
 - 打印当前工作目录
- pwd
 
 - 切换当前工作目录
- cd
- cd
 - cd ~
 - cd .
 - cd ..
 - cd -
- 上一次目录保存到 OLDPWD 环境变量中
 
 
 
 - cd
 - 创建目录
- mkdir
- -p
- mkdir -p a/b/c
 
 
 - -p
 
 - mkdir
 - 删除空目录
- rmdir
- -p
- rmdir -p a/b/c
 
 
 - -p
 
 - rmdir
 - 显示目录项
- ls
- 常用选项
- -a
 - -i
 - -l
- 第一个字段
- 第一个字符
- 文件类型
- -:普通文件
 - d
 - c
 - b
 - l
 - p
 - s
 
 
 - 文件类型
 - 其它九个字符
- 权限
- 拥有者
 - 所属组
 - 其他人
 
 
 - 权限
 
 - 第一个字符
 - 硬链接数
 - 拥有者
 - 所属组
 - 大小
 - 最近修改时间
 - 文件名
 
 - 第一个字段
 
 
 - 常用选项
 - tree
 
 - ls
 - 复制
- cp
- 格式
- cp SOURCE DEST
 - cp -r SOURCE DEST
 - cp SOURCE… DEST(已存在的目录)
 
 - 常用选项
- -r
 - -n
 - -i
 
 
 - 格式
 
 - cp
 - 移动
- mv
- 格式
- mv SOURCE DEST (重命名)
 - mv SOURCE… DEST (已存在的目录,移动)
 
 - 常用选项
- -n
 - -i
 
 
 - 格式
 
 - mv
 - 删除文件或文件夹
- rm
- 常用选项
- -r
 - -i
 - -f: 永远不提示
 
 
 - 常用选项
 
 - rm
 
 - 常见的目录
 - 普通文件
- 创建文件
- touch a.txt
 - echo “Hello world” > a.txt
 - vim a.txt
 
 - 查找文件
- which
- 作用:查找可执行程序
 - 原理:根据 PATH 环境变量,依次查找
 - 常用选项
- -a
 
 
 - find
- 作用:在目录下,递归地查找文件
 - 格式:find [目录…] 查找条件
 - 查找条件
- -name 通配符
 - -type c
- f: regular file
 - d: directory
 - p: named pipe
 - c: character device
 - b: block device
 - l: symbolic link
 - s: domain socket
 
 - -size  n[bcwkMG]
- 单位
- b: block (默认)
 - c: character
 - w: word (2-bytes)
 - k
 - M
 - G
 
 - -size 4M
 - -size +4M
 - -size -4M
 
 - 单位
 - -empty
 - -user, -uid
 - -group, -gid
 - -perm 三个八进制数字
 - 时间
- -atime, -amin
 - -ctime, -cmin
 - -mtime, -mmin
- -mtime 3
 - -mtime +3
 - -mtime -3
 
 
 - 组合
- -a (and)
 - -o (or)
 - ! (not)
 
 
 
 
 - which
 - 查看文件内容
- cat
- 作用:拼接文件内容,并将结果输出到 stdout
 - 常用选项
- -n
 
 
 - head
- 作用:显示文件的头几行
 - 常用选项
- -n
- -n 20
 - -n -5
 
 
 - -n
 
 - tail
- 作用:显示文件的后几行
 - 常用选项
- -n
- -n 20
 - -n +5
 
 - -F
- 显示文件追加的内容
- 看日志文件
 
 
 - 显示文件追加的内容
 
 - -n
 
 - less (more)
- 作用:单页浏览
 - 常用命令
- f: forward
 - b: backward
 - d: down
 - u: up
 - q: qut
 - :n (next)
 - :p (previous)
 
 
 
 - cat
 - 搜索文件内容
- grep (globally regular expression print)
- 作用:打印文件中所有匹配正则表达式的行
 - 常用选项
- -E: 使用扩展的正则表达式语法
 - -n: 显示行号
 - -i: 忽略大小些
 - -v: 显示不匹配正则表达式的行
 - -c: 显示行数
 
 
 
 - grep (globally regular expression print)
 - 文件的权限
- 目录权限的含义
- r
- 查看目录项
- ls, tree
 
 
 - 查看目录项
 - w
- 添加和删除目录项
 
 - x
- 目录最基本的权限,rw都依赖x权限
- cd
 
 
 - 目录最基本的权限,rw都依赖x权限
 
 - r
 - chmod
- 文字设定法
- chmod [ugoa] [+-=] [rwx] item
 
 - 数字设定法
- chmod 三个八进制数字 item
 
 
 - 文字设定法
 - umask
- 文件创建掩码
 - 查看当前文件创建掩码
- umask
 
 - 修改文件创建掩码
- umask 四个八进制数字
- 0002
 
 
 - umask 四个八进制数字
 - 原理
- umask 指定的想去掉的权限
 - 普通文件:666 & ~umask
 - 目录文件:777 & ~umask
 
 
 
 - 目录权限的含义
 - 链接
- 硬链接
- ln 文件 硬链接
 
 - 符号链接
- 一个文本文件,文件的内容是另一个文件的路径 (相对路径,绝对路径)
 - ln -s 文件 符号链接
 - 类比
- Windows上的快捷方式
 - 指针
 
 
 
 - 硬链接
 
 - 创建文件
 
 - 目录
 - 通配符
- *: 匹配任意多个字符 (包括0个)
 - ?: 匹配任意一个字符
 - 集合/类
- [abc]
 - [!abc]
 - [0-9a-zA-Z_]
 
 
 - 重定向
- stdin
- <
 
 - stdout
, >>
 - stderr
- 2>, 2>>
 
 
 - stdin
 - 正则表达式
- 基本单位
- 字符
 - 转义字符
 - 集合
- [abc]
 - [^abc]
 - [a-zA-Z0-9]
 
 - .
- 表示任意一个字符
 
 - (expr)
 
 - 基本操作
- 拼接
- [abc]x
- “贴贴”
 
 
 - [abc]x
 - 重复
*- ?
 - {m}
 - {m, n}
 - {n, }
 
 
 - 拼接
 - 指定位置
- ^
 - $
 - <
- 词首
 
 - >
- 词尾
 
 
 
 - 基本单位
 - 命令的组合
- cmd1 ; cmd2
 - cmd1 | cmd2
- 原理
- cmd1 的 stdout 重定向到管道的一端
 - cmd2 的 stdin 重定向到管道的另一端
 
 
 - 原理
 - cmd1 | xargs cmd2
- 将cmd1的输出,作为cmd2的命令行参数
 
 
 - 其它
- 查看帮助手册
- man
- Tips: Be a MAN!
 - 格式:man [手册编号] 词条
 - man手册
- 1: shell命令
 - 2:系统调用
 - 3:库函数
 - ……
 
 
 
 - man
 - 关机命令
- shutdown
- -P, –poweroff
 - -r, –reboot
 - -H, –halt
 - -c (cancel)
 
 
 - shutdown
 - 别名
- alias
- 查看别名:alias
 - 设置别名:alias cd=’sudo rm -rf’
 - bash的配置文件
- ~/.bashrc
- source ~/.bashrc
 
 
 - ~/.bashrc
 
 
 - alias
 - 上传和下载
- scp
- 上传:将本地文件复制到远程
 - 下载:将远程文件复制到本地
 - 本地路径
- 绝对路径
 - 相对路径
 
 - 远程路径
- 用户名@IP:绝对路径
 
 
 
 - scp
 - 打包和压缩
- tar
- 主选项
- c: 创建
 - x: 释放
 - r: 追加
 - t: 查看
 
 - 辅选项
- v: verbose
- 显示详细过程
 
 - f
- 指定包裹的名字
 
 - z
- 采用gzip算法进行压缩和解压缩
 
 
 - v: verbose
 
 - 主选项
 
 - tar
 
 - 查看帮助手册
 
 - Linux结构