命令基本格式及文件处理命令
命令提示符
命令提示符例子:[root@localhost ~]#,参数意义如下:
- root:当前登录用户名称
 - @:分隔用户名称和主机名称
 - localhost:主机名称
 - ~:当前所在目录
 - #:超级用户提示符,普通用户提示符是 $
 
命令格式
命令 [选项] [参数]
- 个别命令使用不遵循此格式
 - 当有多个选项时,可以写在一起
 - 简化选项与完整选项:-a 等于 --all
 
查询目录中内容:ls
ls [选项] [文件或目录]
选项:
- -a:显示所有文件,包括隐藏文件
 - -l:显示详细信息
 - -d:查看目录属性
 - -h:人性化显示文件大小
 - -i:显示 inode
 
命令 ls -l 等于命令 ll
目录处理命令
- 新建目录:mkdir
mkdir -p [目录名称]- -p 递归创建
 - 命令英文原意:make directories
 
 - 切换所在目录:cd
cd [目录名称]- cd ~ :进入当前用户的家目录
 - cd - :进入上次目录
 - cd . :进入当前目录
 - cd … :进入上一级目录
 
- 命令英文原意:change directory
 - 相对路径:参照当前所在目录,进行查找
 - 绝对路径:从根目录开始制定,一级一级递归查找。在任何目录下,都能进入指定目录
 
 - 查询所在目录位置:pwd
pwd- 命令英文原意:print working directory
 
 - 删除空目录:rmdir
rmdir [目录名称]- 命令英文原意:remove empty directories
 
 - 删除文件或目录:rm
rm -rf [文件或目录]- -r :删除目录
 - -f :强制
 
- 命令英文原意:remove
 
 - 复制命令:cp
cp [选项] [原文件或目录] [目标目录]- -r :复制目录
 - -p :连带文件属性复制
 - -d :若源文件是链接文件,则复制链接属性
 - -a :相当于 -pdr
 
- 命令英文原意:copy
 
 - 剪切或重命名命令:mv
mv [原文件或目录] [目标目录]- 命令英文原意:move
 
 
常见目录作用
- / :根目录
 - /bin :命令保存目录
 - /dev :设备文件保存目录
 - /etc :配置文件保存目录
 - /lib :系统保存目录
 - /mnt :系统挂载目录
 - /tmp :临时目录
 - /sys :
 - /var :系统相关文档内容
 - /usr :系统软件资源目录
- /usr/bin :系统命令(普通用户)
 - /usr/sbin :系统命令(超级用户)
 
 - /boot :启动目录,启动相关文件
 - /home :普通用户的家目录
 - /root :超级用户的家目录
 - /sbin :命令保存目录
 - /proc :直接写入内存的
 - /media : 挂载目录
 
链接命令
- 链接命令:ln
ln [参数] [原文件] [目标文件]- -s :创建软链接
 - 默认创建硬链接
 
- 命令英文原意:link
 - 功能描述:生成链接文件
 
 - 硬链接特征:
- 拥有相同的 I 节点和存储 Block 块,可以看做是同一个文件
 - 可通过 I 节点识别
 - 不能跨分区
 - 不能针对目录使用
 
 - 软连接特征:
- 类似 Windows 快捷方式
 - 软链接拥有自己的 I 节点和 Block 块,但是数据块中只保存原文件的文件名和 I 节点号,并没有实际的文件数据
 - 软连接文件权限都为:rwxrwxrwx
 - 修改任意文件,另一个都改变
 - 删除原文件,软链接不能使用
 
 
文件搜索命令
文件搜索命令 locate
locate 文件名(只能搜索文件名)- 在后台数据库中按文件名搜索,搜索速度更快
 
/var/lib/mlocate- locate 命令所搜索的后台数据库
 
updatedb- 更新数据库
 
/etc/updatedb.conf配置文件- PRUNE_BIND_MOUNTS = “yes” (开启搜索限制)
 - PRUNEFS = (搜索时,不搜索的文件系统)
 - PRUNENAMES = (搜索时,不搜索的文件类型)
 - PRUNEPATHS = (搜索时,不搜索的路径)
 
命令搜索命令 whereis 与 which
- whereis
- 搜索命令所在路径及帮助文档所在位置
 - 选项
- -b 只查找可执行文件
 - -m 只查找帮助文件
 
 
 - which (能看到命令的别名,只能看到命令的所在位置)
 
文件搜索命令 find
find [搜索范围] [搜索条件]- 搜索文件
 
find / -name install.log- 避免大范围搜索,会非常耗费系统资源
 - find 是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配
 - Linux 中的通配符
- 
- 匹配任意内容
 
 - ? 匹配任意一个字符
 - [] 匹配任意一个中括号内的字符
 
 - 
 
find /root -iname install.log不区分大小写find /root -user root按照所有者搜索find /root -nouser查找没有所有者的文件find /var/log/ -mtime +10查找 10 天前修改的文件- 10 10 天当天修改的文件
 - -10 10 天内修改文件
 - +10 10 天前修改的文件
 - atime 文件访问时间
 - ctime 改变文件属性
 - mtime 修改文件内容
 
find . -size 25k查找文件大小是 25 KB 的文件- 25K 等于 25 KB的文件
 - -25K 小于 25 KB的文件
 - +25K 大于 25KB 的文件
 
find . -inum 262422查找 i 节点是 262422 的文件find /etc -size +20k -a -size -50k查找 /etc/ 目录下,大于 20 KB 并且小于 50 KB 的文件- -a and 逻辑与,两个条件都满足
 - -o or 逻辑或,两个条件满足一个即可
 
find /etc -size +20k -a -size -50k -exec ls -lh {} \;查找 /etc/,大于 20 KB 并且小于 50 KB 的文件,并显示详细信息,-exec/ -ok 命令 {}; 对搜索结果执行操作
字符串搜索命令 grep
grep [选项] 字符串 文件名在文件当中匹配符合条件的字符串- -i 忽略大小写
 - -v 排除指定字符串
 
find 命令与 grep 命令的区别
find 命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
grep 命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配。
帮助命令
帮助命令 man
man 命令获取指定命令的帮助man -f 命令相当于whatis 命令查看命令的帮助级别man -k 命令相当于apropos 命令查看和命令相关的所有帮助- man 的级别
- 1 : 查看命令的帮助
 - 2 : 查看可被内核调用的函数的帮助
 - 3 : 查看函数和函数库的帮助
 - 4 : 查看特殊文件的帮助(主要是 /dev 目录下的文件)
 - 5 : 查看配置文件的帮助
 - 6 : 查看游戏的帮助
 - 7 : 查看其他杂项的帮助
 - 8 : 查看系统管理员可用命令的帮助
 - 9 : 查看和内核相关文件的帮助
 
 
其他帮助命令
命令 --help获取命令选项的帮助ls --help
help shell 内部命令获取 shell 内部命令的帮助whereis cd确定是否是 shell 内部命令help cd获取内部命令帮助
info 命令- 回车 : 进入子帮助页面
 - u : 进入上层页面
 - n : 进入下一个帮助小节
 - p : 进入上一个帮助小节
 - q : 退出
 
压缩命令
- 常用的压缩格式:
- .zip
 - .gz
 - .bz2
 - .tar.gz
 - .tar.bz2
 
 - .zip 格式
zip 压缩文件名 源文件压缩文件zip -r 压缩文件名 源目录压缩目录unzip 压缩文件解压.zip文件
 - .gz 格式
gzip 源文件压缩为.gz格式的压缩文件,源文件消失gzip -c 源文件 > 压缩文件压缩为.gz格式的压缩文件,源文件保留gzip -r 目录压缩目录下所有的子文件,但是不能压缩目录gzip -d 压缩文件解压文件gunzip 压缩文件解压文件
 - .bz2
bzip2 源文件压缩为.bz2格式的压缩文件,不保留源文件bzip2 -k 源文件压缩为.bz2格式的压缩文件,保留源文件bzip2命令不能压缩目录
 - tar.gz
tar -cvf 打包文件名 源文件- 选项
- -c : 打包
 - -v : 显示过程
 - -f : 指定打包后的文件名
 
 - 举例:
tar -cvf longzls.tar longzls 
- 选项
 tar -xvf 打包文件名- 选项
- -x : 解打包
 
 - 举例:
tar -xvf longzls.tar 
- 选项
 tar -zcvf 压缩包名.tar.gz 源文件压缩为.tar.gz格式的压缩文件tar -zxvf 压缩包名.tar.gz解压.tar.gz格式的文件tar -jcvf 压缩包名.tar.bz2 源文件压缩为.tar.bz2格式的压缩文件tar -jxvf 压缩包名.tar.bz2解压.tar.bz2格式的文件
 
关机重启命令
- shutdown 命令
shutdown [选项] 时间- 选项
- -c :取消前一个关机命令
 - -h :关机(尽可能少用)
 - -r :重启
 
 
 - 其他关机命令
- halt
 - poweroff
 - init 0
 
 - 其他重启命令
- reboot
 - init 6
 
 - 系统运行级别
- 0 关机
 - 1 单用户
 - 2 不完全多用户,不含 NFS 服务
 - 3 完全多用户
 - 4 未分配
 - 5 图形界面
 - 6 重启
 
 cat /etc/inittab可以修复系统默认运行级别runlevel查询系统运行级别logout退出登录命令
挂载命令
- 查询与自动挂载
mount [-t 文件系统] [-o 特殊选项] 设备 文件名 挂载点- -t 文件系统:加入文件系统类型来指定挂载的类型,可以 ext3、ext4、iso 9660 等文件系统
 - -o 特殊选项:可以指定挂载的额外选项
 
mount查询系统中已经挂载的设备mount -a依据配置文件 /etc/fstab 的内容,自动挂载
 - 光盘的挂载
- 挂载光盘
mkdir /mnt/cdrom/建立挂载点mount -t iso9660 /dev/cdrom /mnt/cdrom/挂载光盘mount /dev/sr0 /mnt/cdrom/
 - 卸载命令
umount 设备文件名或挂载点umount /mnt/cdrom
 
 - 挂载光盘
 - U 盘的挂载
fdisk -l查看存储设备文件名mount -t vfat /dev/sdb1 /mnt/usb/
 
用户登录查看命令
- w
- USER :登录的用户名
 - TTY :登录终端
 - FROM :从哪个 IP 地址登录
 - LOGIN@ :登录时间
 - IDLE :用户闲置时间
 - JCPU :指的是和该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间;
 - PCPU :是指当前进程所占用的时间;
 - WHAT :当前正在运行的命令
 
 - who
- 用户名
 - 登录终端
 - 登录时间(登录来源 IP 地址)
 
 - last(查询当前登录和过去登录的用户信息)
- last 命令默认是读取 /var/log/wtmp 文件数据
 - 命令输出
- 用户名
 - 登录终端
 - 登录 IP
 - 登录时间
 - 退出时间(在线时间)
 
 
 - lastlog(查看所有用户的最后一次登录时间)
- lastlog 命令默认是读取 /var/log/lastlog 文件内容
 - 命令输出
- 用户名
 - 登录终端
 - 登录 IP
 - 最后一次登录时间
 
 
 
Shell 基础
Shell 概述
Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,
用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。
Shell 还是一个功能相当强大的编程语言,易编写,易调试,灵活性比较强。
Shell 是解释执行的脚本语言,在 Shell 中可以直接调用 Linux 的系统命令
Shell 的分类
- Bourne Shell
- sh、ksh、Bash、psh、zsh
 
 - C Shell
- csh、tcsh
 
 
脚本执行方式
- echo 输出命令
echo [选项] [输出内容]- 选项
- -e :支持反斜线控制的字符转换
 
 - 字符转换
- \a 输出警告音
 - \b 退格键,也就是向左删除键
 - \n 换行符
 - \r 回车键
 - \t 制表符
 - \v 垂直制表符
 - \0nnn 按照八进制 ASCII 码表输出字符。其中 0 为数字零,nnn 是三位八进制数
 - \xhh 按照十六进制 ASCII 码表输出字符。其中 hh 是两位十六进制数
 
 - 使用颜色
- 30m=黑色
 - 31m=红色
 - 32m=绿色
 - 33m=黄色
 - 34m=蓝色
 - 35m=洋红
 - 36m=青色
 - 37m=白色
 - \e[1;31m \e[0m
 
 - 例子
echo -e "hell\bo";echo -e "\x68\t\x65\t\x6c\n\x6c\t\x6f\t";echo -e "\e[1;31mHello World \e[0m";
 
 
命令别名与快捷键
alias查看系统中所有的命令别名alias 别名='原命令'设定命令别名- 例子:
alias vi='vim' 
- 例子:
 vi ~/.bashrc写入环境变量配置文件unalias 别名删除别名- 命令生效顺序
- 第一顺位执行用绝对路径或相对路径执行的命令
 - 第二顺位执行别名
 - 第三顺位执行 Bash 的内部命令
 - 第四顺位执行按照 $PATH 环境变量定义的目录查找顺序找到的第一个命令
 
 - 常用快捷键
Ctrl + c强制终止当前命令Ctrl + l清屏Ctrl + a光标移动到命令行首Ctrl + e光标移动到命令行尾Ctrl + u从光标所在位置删除到行首Ctrl + z把命令放入后台Ctrl + r在历史命令中搜索
 
历史命令
history [选项] [历史命令保存文件]- 选项
- -c :清空历史缓存
 - -w :把缓存中的历史命令写入历史命令保存文件 
~/.bash_history 
 - 历史命令默认会保存 1000 条,可以在环境变量配置文件 
/etc/profile中的HISTSIZE进行修改 - 历史命令的调用
- 使用上、下箭头调用以前的历史命令
 - 使用 
!n重复执行第 n 条历史命令 - 使用 
!!重复执行上一条命令 - 使用 
!字符重复执行最后一条以该字符串开头的命令 
 
- 选项
 
输出重定向
1.标准输入输出
| 设备 | 设备文件名 | 文件描述符 | 类型 | 
|---|---|---|---|
| 键盘 | /dev/stdin | 0 | 标准输入 | 
| 显示器 | /dev/sdtout | 1 | 标准输入 | 
| 显示器 | /dev/sdterr | 2 | 标准错误输出 | 
2.输出重定向
| 类型 | 符号 | 作用 | 
|---|---|---|
| 标准输出重定向 | 命令 > 文件 | 以覆盖的方式,把命令的正确输出,输出到指定的文件或设备中 | 
| 标准输出重定向 | 命令 >> 文件 | 以追加的方式,把命令的正确输出,输出到指定的文件或设备中 | 
| 标准错误输出重定向 | 错误命令2>文件 | 以覆盖的方式,把命令的错误输出,输出到指定的文件或设备中 | 
| 标准错误输出重定向 | 错误命令2>>文件 | 以追加的方式,把命令的错误输出,输出到指定的文件或设备中 | 
| 正确输出和错误输出同时保存 | 命令 > 文件 2>&1 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中 | 
| 正确输出和错误输出同时保存 | 命令 >> 文件 2>&1 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中 | 
| 正确输出和错误输出同时保存 | 命令 &>文件 | 以覆盖的方式,把正确输出和错误输出都保存都同一个文件当中 | 
| 正确输出和错误输出同时保存 | 命令 &>>文件 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中 | 
| 正确输出和错误输出同时保存 | 命令>>文件1 2>>文件2 | 把正确的输出追加到文件 1 中,把错误的输出追加到文件 2 中 | 
3.输入重定向
wc [选项] [文件名]输入重定向- 选项
- -c :统计字节数
 - -w :统计单词数
 - -i :统计行数
 
 
- 选项
 
管道符
1.多命令顺序执行
| 多命令执行符 | 格式 | 作用 | 例子 | 
|---|---|---|---|
| ; | 命令1;命令2 | 多个命令顺序执行,命令之间没有任何逻辑联系,即使报错也会往下执行 | date ; ls ; cd ~; history; | 
| && | 命令1&&命令2 | 逻辑与,当命令 1 正确执行,则命令 2 才会执行,当命令 1 执行不正确,则命令 2 不会执行 | ls && echo yes | 
| II | 命令1 II 命令2 | 逻辑或,当命令 1 执行不正确,则命令 2 才会执行,当命令 1 正确执行,则命令 2 不会执行 | lsls II echo no | 
2.管道符
- 格式:命令 1 | 命令 2
 - 作用:命令 1 的正确输出作为命令 2 的操作对象
 
通配符
1.通配符
| 通配符 | 作用 | 
|---|---|
| ? | 匹配一个任意字符 | 
| * | 匹配 0 个或任意多个任意字符,也就是可以匹配任何内容 | 
| [] | 匹配中括号中任意一个字符,例如:[abc] 代表一定匹配一个字符,或是 a,或是 b,或是 c | 
| [-] | 匹配中括号中任意一个字符,- 代表一个范围,例如:[a-z] 代表匹配一个小写字母 | 
| [^] | 逻辑非,表示匹配不是中括号内的一个字符,例如:[^0-9] 代表匹配一个不是数字的字符 | 
通配符执行例子
- 存在文件夹
dzp,dzp2,dzp3,dzp34,dzpa,dzpbols,dzpcang - 执行命令 
ls dzp,显示文件夹dzp - 执行命令 
ls dzp?,显示文件夹dzp2,dzp3 - 执行命令 
ls dzp[0-9],显示文件夹dzp2,dzp3 - 执行命令 
ls dzp[0-9][0-9],显示文件夹dzp34 - 执行命令 
ls dzp[^0-9],显示文件夹dzpa - 执行命令 
ls dzp[^0-9]*,显示文件夹dzpa,dzpbols,dzpcang 
2.Bash 中其他特殊符号
| 符号 | 作用 | 
|---|---|
| ‘’ | 单引号。在单引号中所有特殊符号,如 $ 和 ` 都没有特殊含义。 | 
| “” | 双引号。在双引号中特殊符号都没有特殊含义,但是 $ 、`、\ 是例外,拥有调用变量值,引用命令,转义符的特殊含义 | 
| `` | 反引号。反引号包括起来的内容是系统命令,在 Bash 中会先执行它。和 $() 作用一样,不过推荐使用 $(),因为反引号非常容易看错。 | 
| $() | 和反引号作用一样,用来引用系统命令 | 
| # | 在 Shell 脚本中,# 开头的行代表注释 | 
| $ | 用于调用变量的值,如需要调用变量 name 的值时,需要用 $name 的方式得到变量的值 | 
| \ | 转义符,跟在 \ 之后的 | 
用户管理
用户和用户组的概念
- 用户:使用操作系统的人
 - 用户组:具有相同系统权限的一组用户
 /etc/group存储当前系统中所有用户组信息- Group❌499:root,luis,daemon
 - 组名称:组密码占位符:组编号:组中用户名列表
 
/etc/gshadow存储当前系统中用户组的密码信息- Group:*: :root,luis
 - 组名称:组密码:组管理者:组中用户名列表
 
/etc/passwd存储当前系统中所有用户的账号信息- root❌0:0:root:/root:/bin/bash
 - 用户名:密码占位符:用户编号:用户组编号:用户注释信息:用户主目录:Shell 类型
 
/etc/shadow存储当前系统中所有用户的密码信息- root:$6$tBDREHKV$JfcEQ/hTxaOWI8QKoRPARviOq3etqaE.szqFoqW8/Uxh6nAkCvlQzp8nRhg4kRM4ySRjpsfyS7kxXfa5cOlLa.:17044:0:99999:7:::
 - 用户名:密码:::
 
用户和用户组的基本命令
- 用户组基本命令
- 新增用户组:
groupadd 用户组名称 - 新增用户组并指定编号:
groupadd -g 数字编号 用户组名称 - 修改用户组名称:
groupmod -n 新名称 旧名称 - 修改用户组编号:
groupmod -g 数字编号 用户组名称 - 删除用户组:
groupdel 用户组名称 
 - 新增用户组:
 - 用户基本命令
- 删除用户:
userdel 用户名称 - 删除用户并删除个人文件夹:
userdel -r 用户名称 - 新增用户并指定用户组:
useradd -g 用户组名称 用户名称 - 新增用户并指定用户个人文件夹:
useradd -d 目录路径 用户名称 - 修改用户名称:
usermod -l 新名称 旧名称 - 修改用户备注信息:
usermod -c 备注信息 用户名称 - 修改用户的用户组信息:
usermod -g 用户组名称 用户名称 - 指定用户新的个人文件夹:
usermod -d 目录路径 用户名称 
 - 删除用户:
 - 其他命令
- 切换用户:
su - 锁定用户:
passwd -l 用户名称 - 解锁用户:
passwd -u 用户名称 - 无密码登录:
passwd -d 用户名称 - 设置组密码:
gpasswd 用户组名称 - 显示用户详情:
- 显示当前登录用户名:
whoami - 显示用户信息和组信息:
id 用户名称 - 显示用户所在的所有组:
groups 用户名称 
 - 显示当前登录用户名:
 - 设置用户资料:
chfn 用户名称 - 新增用户附属组:
gpasswd -a 用户名称 用户组名称(在 Linux 当中,一个用户可以属于多个用户组,但只能有一个主要组,其余都是附属组) - 删除用户附属组:
gpasswd -d 用户名称 - 切换用户附属组:
newgrp 用户组名称 - 新增用户指定主要组和附属组:
useradd -g 主要组名称 -G 附属组名称 
 - 切换用户:
 
