命令行BASH基本操作
Shell
用户不能直接操作内核,所以用户操作通过shell传递给内核
shell分为两种 :
-
GUI 图形界面 (linux一般是GNOME)
-
CLI 命令行界面 (linux一般是BASH)
BASH
- 提示符
- # root用户
- $ 普通用户
- 命令一般由 (命令、选项、参数) 组成。
例如 :
[root@linuxabc ~ ] # uname -r
用户名 主机名 工作目录 root用户 命令 参数
- 使用Tab键来自动补全命令(注意:无法自动补全参数,)
- 按2下Tab显示所有命令
历史记录
-
Bash会保存你输入过的命令,可以通过↓↑ 键来查看。
-
通过history可查看输入过的全部命令
-
!!重复前一个命令(用上也可以。还方便)
-
!字符 重复前一个以“字符”开头的命令
-
!num 按照历史记录的序号执行命令
-
!?abc重复之前包含abc的命令
-
!-n重复n歌命令之前的那个命令
-
通过Ctrl+r来在历史记录中搜素命令(reverse-i-search)“:
-
重新调用前一个命令中的参数Esc.(按完Esc键之后按.)
命令行通配符
- *匹配零个或多个
- ?匹配任意一个字符
- [0-9]匹配一个数字范围
- [abc]匹配列表里任何字符
- [Λabc]匹配列表以外的字符
切换用户
- su - 切换到root用户(切换终端)
- sudo 使用管理员权限运行命令
BASH作业管理
- 在后台运行进程
- 在命令后添加一个&
- 终止某个程序
- Ctrl+c
- 暂停某个程序
- Ctrl+z
- 管理后台作业
- jobs 查看当前在后台运行的作业
- sleep 5000 停参数输入的时间 5000秒 可使用ctrl+c终止 或者 使用ctrl+z暂停
- bg 编号 控制进程继续在后台运行
- fg 编号 继续在前台运行
文件系统基本操作
Linux文件系统结构
- Linux文件系统为一个倒转的单根树状结构
- 文件系统的根为“/"
- linux文件系统严格区分大小写,大小写敏感
- 路径使用”/"分割,(windows中使用“”)
当前工作目录
- 每一个shell或系统进程都有一个当前的工作目录:~显示当前所在目录。
- 使用pwd命令可以显示当前的工作目录+
文件名称
- 文件的名称大小写敏感
- 名称最多可以使用255个字符
- 除了正斜线外都是有效字符
- 通过touch命令可以创建一个空白文件或者更新已有文件的时间
- 以“."开头的文件为隐藏文件
列出目录内容 : ls
- ls -a 显示所有文件(包括隐藏文件):隐藏文件绝大多是都是配置文件,不要去动这些文件。
- ls -l 显示详细信息
- ls -R 递归显示子目录结构
- ls -ld 显示目录和链接信息
查看文件类型 : file
file 文件名
绝对路径与相对路径
- 绝对路径:以/开头,递归每级目录直到目标的路径。不受当前所在工作目录限制
- 相对路径:以当前目录为起点,到达目标的路径。受当前所在目录限制
cd用来切换目录:cd .切换到当前目录,cd ..切换到上一级目录,cd ~切换到家目录, cd -上一个工作目录。
文件基本操作
复制文件 : cp
cp 源文件 目标文件
-r 递归复制整个目录树
-v 显示详细信息
移动文件 : mv
mv 源文件 目标目录(加/文件名会重命名该文件)
-r 递归复制整个目录树
-v 显示详细信息
创建文件 : touch
删除文件 : rm
-i 交互式
-r 递归删除包括目录中所有内容
-f 强制删除,没有警告(谨慎)
创建目录 : mkdir
删除目录 : rmdir
删除空文件夹
删除非空文件夹加 -r -f参数
系统目录架构
- bin 可执行文件
- boot vmlinux内核 grub引导程序
- dev 硬件设备,linux里所有硬件都被抽象成文件
- etc 配置文件
- home 家目录,保存用户信息(root除外,root单独保存)
- lib 库文件
- media 挂载文件,和mnt一样
- opt 大型软件,比如数据库
- proc 虚拟数据,实时信息
- sbin 和bin一样,但只有root用户才能执行
- sys 底层硬件信息
- tmp 临时文件,定时删除
- usr 应用软件,大型软件装opt,一般软件装usr
- var 经常变化的信息,比如日志log
系统常用命令
日期和时间
- date 查看和设置系统的日期和时间
- -u 查看utc时间
- date +%Y-%m-%d 格式化显示时间
- -s 设置时间,只有root用户才有权限更改
- clock 显示硬件时钟时间,比如主板
- cal 查看日历
- uptime 查看系统运行时间
输出 , 查看
- echo 显示输入的内容
- cat 显示文件内容
- more 翻页显示文件内容(只能向下翻页)
- less 翻页显示文件内容(能上下翻页)
- head 显示文件的头几行(默认10行)
- -n 指定显示行数
- tail 显示文件的末尾几行(默认10行)
- -n 指定显示行数
- -f 追踪显示文件更新,一般用于查看日志,持续显示新加入的内容
查看硬件信息
- lspci 查看PCI设备
- -v 查看详细信息
- lsusb 查看USB设备
- -v 查看详细信息
- lsmod 查看加载的模块(设备驱动)
关机 , 重启
- shutdown 用来关闭 , 重启计算机
- -h 关闭计算机
- -r 重启计算机
例如:
#立即关机
shutdown -h now
#10分钟后关机
shutdown -h +10
#23:30关机
shutdown -h 23:30
#立即重启
shutdown -r now
- poweroff 立即关机
- reboot 立即重启
归档 , 压缩文件
- zip 压缩
- zip 压缩后的文件名.zip 要压缩的文件
- unzip 解压缩
- unzip 压缩文件名.zip
- gzip 压缩
- gzip 要压缩的文件
- tar 用来归档文件
- tar -cvf 归档文件包.tar 要归档的文件
- tar -xvf 要解归档的文件包.tar
- tar -cvzf 归档并压缩的文件包.tar.gz 要归档并压缩的目录
- -z 将归档后的文件进行gzip压缩以减小大小
查找
-
locate 用以快速查找文件 , 文件夹
- locate 关键字 (locate查的是文件数据库,快,但可能不及时准确.数据库默认每天更新一次,可手动更新)
-
find 用以高级查找文件 , 文件夹
-
find 查找位置 查找参数
-
例如:
#查找当前目录下,文件名包含'abcde'的文件 find . -name *abcde* #查找根目录下,d代表目录,即查找根目录下所有的目录 find / -type d #查找根目录下,权限是777的文件 find / -perm 777
-
find支持的常用查找参数
- -name 名字
- -perm 权限
- -user 属于特定用户
- -group 属于特定组
- -ctime 基于修改时间
- -type 文件类型
- -size 基于文件大小
-
vim编辑器
vim是vi的增强版
vim命令启动vim编辑器
vim 文件名 (存在则打开文件,不存在则新建并打开文件)
vim的三种模式:
- 命令模式 (默认模式,其他模式按ESC进入命令模式)
- i 进入插入模式
- o 在当前行下面插入新行
- dd 删除整行
- u 撤销上一个操作
- yy 复制当前行
- n+yy 复制下面的n行
- p 粘贴
- r 替换当前字符
- / 查找关键字
- 插入模式 (命令模式中按 i 进入)
- ex模式 (命令模式中按 : 进入)
- :w 保存当前修改
- :q 退出(不保存会提示)
- :q! 强制退出
- :x 保存并退出,等同于 :wq
- :set number 显示行号
- :! 执行系统命令并显示结果
- :sh 切换到命令行,使用ctrl+d切换回vim
磁盘的基本概念
磁盘在Linux中的表示
Linux中所有的设备都被抽象成文件,保存在/dev目录下
IDE设备名称为 hd[a-z] ,例如:hda,hdb
SATA,SCSI,SAS,USB等名称为 sd[a-z],例如sda,adb
磁盘分区
不同分区用,设备名称+分区号表示,如 sda1,sda2
主流的分区机制有MBR和GPT两种
- MBR
- 传统分区机制,应用于绝大多数BIOS的PC设备
- 支持32bit和64bit
- 支持分区数量有限(最多4个主分区)
- 支持不超过2TB的硬盘
- GPT
- 向后兼容MBR
- 只能在支持UEFI的硬件上才能使用
- 只支持64bit
- 支持超过2TB的硬盘
- Mac,Linux都能支持GPT
MBR结构
MBR占用了磁盘的前512字节(446+4*16+2)
前446字节为引导代码
4*16字节为分区表
2字节为启动标识(55h AAh可引导设备,Linux启动时BIOS引导)
MBR分区
-
主分区 (最多只能创建4个主分区)
-
扩展分区 (一个扩展分区会占用一个主分区位置)
-
逻辑分区 (linux最多支持63个IDE分区和15个SCSI分区)
例如:{sda1} {sda2} {sda3} { sda4 [sda5] [sda6] [sda7] }
sda123是主分区
sda4是扩展分区,占用一个主分区位,但不能直接使用,需要建立逻辑分区使用
sda567是逻辑分区