命令基本格式及文件处理命令
命令提示符
命令提示符例子:[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.输入重定向
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:x:499:root,luis,daemon
- 组名称:组密码占位符:组编号:组中用户名列表
/etc/gshadow存储当前系统中用户组的密码信息- Group:*: :root,luis
- 组名称:组密码:组管理者:组中用户名列表
/etc/passwd存储当前系统中所有用户的账号信息- root:x: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 附属组名称
- 切换用户: