Shell:是一个壳,把内核封装在里面,把命令传给操作系统。分为CLI、GUI
CLI:Command Line Interface,命令行界面 Bash
GUI:Graphical User Interface,图形界面
命令行Bash基本操作
这几个平时不常用,主要写脚本时用
- history 查看历史命令信息
- !! 重复前一个命令
- !字符 重复前一个以“字符”开头的命令
- !num 按照历史记录的序号执行命令
- !?abc 重复之前包含“abc”的命令行
- !-n 重复n个命令之前的命令
搜索历史命令
- Ctrl + r 在历史记录中搜索命令
- esc 然后再按 . 调用上一个命令
命令行通配符 其实就是正则表达式中的规则
- 匹配零个或多个
- ? 匹配任意一个字符
- [0-9] 匹配一个数字范围
- [abc] 匹配列表里任何字符
- [^abc] 匹配列表以为字符
切换用户
- su - "用户名" 切换用户,不写参数,切到root用户,不加-,就在原来窗口
- sudo 使用管理员用户身份来运行命令
- id 显示当前用户信息
- passwd 修改当前用户密码
- exit 退出当前用户
Bash作业管理
- 在后台运行进程,在命令后添加一个 &
- 暂停某个程序,通过Ctrl + z 或者发送信号7
- 终止某个程序 : Ctrl + c
- jobs 查看当前在后台运行的所有程序
- bg + 命令编号 控制一个程序继续在后台运行
- fg + 命令编号 把一个程序拉到前台
- sleep 30 暂停30秒
Linux 文件系统结构
-
根目录为"/"
-
文件系统严格区分大小写(window中不区分)
-
路径使用“/”分割(window中使用“\”)
-
pwd print work directory当前工作目录
-
ls list 当前目录下的内容 -a:显示隐藏文件 -l:显示详细信息 -R:递归的显示子目录 -ld:显示目录和链接的信息cd
-
touch/mkdir 创建文件/文件夹,touch可以更新已有文件时间
-
rm/rm -r (remove)删除文件/文件夹 -i 交互式(需要yes/no) -f 强制删除,没有警告
-
rmdir 删除空目录
查看文件类型
- file 查看文件类型
绝对路径和相对路径
- cd ~ 家目录
- cd .. 上一级目录
- cd . 当前目录
- cd - 上一个工作目录
复制、移动、重命名文件、目录
- cp 源文件 目标文件 -r:递归复制整个目录树 -v:显示详细信息
- mv 文件 目标目录 如果指定文件名,则可以重命名文件
Linux 系统目录架构
- bin (binary)保存可执行的二进制命令,也就是保存的命令
- boot 各系统的引导文件
- dev (device)抽象成文件的系统的硬件设备
- etc 操作系统的配置文件
- home 家目录
- root 管理员用户目录,有❌,说明没有权限看
- lib 库文件
- proc 当前操作系统实时信息,只存在内存汇总
- sbin 可执行的二进制文件,只有超级用户才能执行,bin中都可以操作
- system 底层硬件信息
- tmp 临时目录,会定期自动清除
- usr 默认保存安装的应用软件的位置
- opt 默认大型软件保存的位置
- var 保存经常变化的信息。如系统的日志信息、邮件
常用命令
日期命令
- date 查看当前系统时间
- date -u 格林尼治时间
- date + %Y - %m - %d 自定义输入格式
- cal 查看日历
- uptime 查看系统运行时
输出命令
- echo 显示输入的内容
- cat 显示文件内容
- more 翻页形式显示文件内容(只能向下翻页)
- less 翻页显示文件(带上下翻页)
- head 显示文件头几行(默认10行)-n 指定显示的行数
- tail 显示文件末尾几行(默认10行) -n 指定显示的行数 -f 追踪显示文件的更新(一般用于查看日志)
查看硬件信息
- lspci 查看pci设备 -v 详细信息
- lsubs 查看USB设备
- lsmod 查看加载的模块(驱动)
关机、重启
-
shutdown 用以关闭、重启计算机 -h 关机 -r 重新启动
-
立即关机 shutdown -h now
-
10分钟后关机 shutdown -h +10
-
23:30关机 shutdown -h 23:30
-
立即重启 shutdown -r now
-
poweroff 立即关闭计算机
-
reboot 立即重启计算机
归档、压缩
- zip 用以压缩文件 zip + 压缩后文件+ 要压缩的文件
- unzip 解压缩文件
- gzip 也可以压缩文件
- tar 归档文件(不是压缩,是归档,把文件放一块)
- tar -cvf out.tar 文件 : 把文件归档
- tar -xvf 文件 : 把归档文件打开
- tar -cvzf backup.tar 文件: -z 参数:归档并压缩
查找
- locate 用以快速查找文件、文件夹 (此命令需要预先建立数据库,数据库默认每天更新一天,可用update命令手工建立、更新数据库)
- find 用以高级查找文件、文件夹 find 查找位置 查找参数 如:find / *md
- find支持很多的查找条件,常用如下:-name -prem -user -group -ctime(修改时间) -type -size
Vim
- vim 打开vim编辑器
- vi + 文件 文件存在,就打开,不存在就新建并打开
- vim 三种模式:1)命令模式:按ESC 进入命令模式,可以完成粘贴、复制、撤销等操作
2)插入模式:i 可以进入插入模式
3)ex模式:按 : 进入ex模式,光标会移动到底部,可以保存、修改或者退出 - 命令模式下:
i 在光标前插入文本
o 在当前行的下一行插入新行
dd 删除整行
yy 复制当前行
n + yy 将n行的内容复制
p 粘贴
u 撤销上一个操作
r 替换当前字符
/ 查找关键字 - EX 模式:
:w 保存当前修改 (write)
:q 退出 (quit)
:q! 强制退出,不保存修改
:x 保存并退出,相当于 :wq shift+ zz
:set number 显示行号
:!系统命令 执行一个系统命令并显示结果,按enter又回到vim界面
:sh 切换到命令行,使用ctrl+d 切换回vim
磁盘基本概念
- mount 将格式化好的磁盘挂载到一个目录上
- umount 卸载已挂载的文件系统
没必要记住所有东西
- 养成查帮助文档的好习惯
- 几乎所有命令都可以使用-h 或者--help参数获取使用方法、参数信息等
- man Linux最常用的帮助命令,可以获得相应文档 man ls
- man -k 查看包含关键字的文档
- info 与man类似,但是提供的信息更为详细深入 info ls
- doc 详尽的文档
用户基础
- 每个用户都拥有一个UserID,操作系统实际使用的是用户ID,而非用户名字
- 每个用户属于一个主组,属于一个或多个附属组;每个组拥有一个GroupID;每个进程以一个用户身份运行,并受该用户可访问的资源限制;每个可登陆用户拥有一个指定的shell
- 用户分三种类型:
root用户:ID为0的用户为root用户,超级用户
系统用户:(ID为1~499)特点是没有shell。专门为某些服务创建的,不需要登录shell
普通用户:(500以上) - id 可以显示当前用户的信息
- passwd 修改当前用户密码
- /etc/passwd 保存用户信息
- /etc/shadow 保存用户密码(加密的)
- /etc/group 保存组信息
命令越短,显示的信息越多。linux的文化
- whoami 显示当前用户
- who 显示有哪些用户已经登录系统
- w 显示有哪些用户已经登录并且在干什么
创建一个用户
- useradd 创建一个新用户 支持参数:-d 家目录
-s 登录shell
-u userid
-g 主组
-G 附属组
修改用户信息 - usermod 参数 username 支持参数:-l 新用户名: usermod -l newUser oldUser
-u 新userid
-L 锁定用户使其不能登录
-U 解锁
删除用户 - userdel 保留用户家目录
- userdel -r 同时删除用户的家目录
创建、修改、删除组
- groupadd
- groupmod
- groupdel
权限机制
-
chown 改变文件的所属用户 -R 参数,递归的修改目录下的所有文件的所属用户
-
chgrp 改变文件的所属组 -R 参数,递归的修改目录下的所有文件的所属组
-
chmod 修改文件的权限: chmod 模式 文件
模式为如下格式:1. u 、g 、o 分别代表用户、组、其他
2. a 可以代指ugo
3. + 、- 代表加入或者删除对应权限
4. r 、w 、x 代表三种权限,read、write、执行权限
模式示例:chmod u+rw linux 为这个文件linux所属用户加入读写权限
chmod g-x linux 为这个文件所属组减去执行权限 -
chmod 也支持以数字方式修改权限,三个权限分别由3个数字表示:
-r = 4 (2^2) -w = 2 (2^1) -x = 1 (2^0)
rw = 4 + 2 = 6
rwx = 4 + 2 + 1 = 7
r-x = 4 + 1 = 5 -
使用数字表示ugo权限必须三个都选
chmod 660 linux == rw-rw----
chmod 775 linux == rwxrwxr-x -
ls -ld 文件 可以查看当前的文件的权限信息
-
所有文件夹必须有x权限,不然没法查看文件
默认权限 -
每一个终端都拥有一个umask属性,来确定新建文件、文件夹的默认权限
umask使用数字权限方式表示,如:022
目录默认权限是:777-umask (减去)
文件默认权限是:666-umask
一般,普通用户的默认umask是002,root用户默认umask是022
也就是说,对于普通用户来讲:新建文件权限是:666-002=664;新建目录权限是:777-002=775
umask :可以查看默认umask的值
3个特殊权限
- suid 以文件的所属用户身份执行,而非执行文件的用户;对目录无影响
- sgid 以文件的所属组身份执行;在该目录中创建的任意新文件的所属组与该目录所属组相同
- sticky 对文件无影响;对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件
网络配置
- linux 中,以太网接口被命名为:eth0、eth1等,0、1代表网卡编号
- lspci 查看网卡硬件信息 lsusb 查看usb网卡
- ifconfig 查看接口信息 -a 查看所有接口 eth0 查看特定接口
- ifup eth0 / ifdown eth0 启用、禁用一个接口
- hostname 查看主机名
网络测试命令
- ping 192.168.1.1/baidu.com 测试网络连通性,后面可以加IP地址或者域名
- host/dig baidu.com 测试dns解析,dig命令出来的数据更多
- ip route 显示路由表
- traceroute baidu.com 追踪到达目标地址的网络路径
- mtr baidu.com (结合了my traceroute 和ping) 进行网络质量测试
- hostname 名字 实时修改主机名字
- /etc/sysconfig/network 永久性修改主机名
故障排查
- 从底层到高层、从自身到外部的流程进行
- 先查看网络配置信息是否正确:ip地址、子网掩码、网关、dns
- 查看到达网管是否连通:ping 网关ip地址
- 查看dns解析是否正常
管道和重定向
- linux中,几乎所有的命令的返回数据都是纯文本的,而纯文本形式的数据又是绝大多数命令的输入格式,这就让多命令协作成为可能。
- linux的命令行为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。
- 命令行shell的数据流定义:STDIN:标准输入,编号0,默认键盘;
STDOUT:标准输出,1,终端
STDERR:标准错误,2,终端 - 通过管道和重定向我们可以控制CU的数据流:
重定向: > 将STDOUT重定向到文件,覆盖形式
>> 将STDOUT重定向到文件,追加形式 (这2个只适用用标准输出)
2> 将STDERR重定义到文件,覆盖形式
2>&1 将STDOUT和STDERR结合
< 重定义SDTIN
管道: | 将一个命令的标准输出(STDOUT)作为另一个命令的STDIN ls | grep test*
文本处理
-
基于关键字搜索: 命令grep用于关键字搜索文本
-i 搜索时忽略大小写
-n 显示结果所在行数
-v 输出不带关键字的行
-Ax 在输出的时候包含结果所在行之后的指定行数
-Bx 在输出的时候包含结果所在行之前的指定行数 -
基于列处理文本: 命令cut用于列处理文本
-d 指定分割字符(默认是TAB)
-f 指定输出的列号
-c 基于字符进行切割 -
文本统计: 命令wc用于统计文本信息
-l 只统计行数
-w 只统计单词
-c 只统计字节数
-m 只统计字符数 -
文本排序: 命令sort用于对文本内容进行排序(基于英文)
-r 倒序排列
-n 基于数字进行排列
-f 忽略大小写
-u 删除重复行 uniq 用以删除重复的相邻行
-t c 使用c作为分隔符分割为列进行排序
-k x 当进行基于指定字符分割为列的排序时,指定你基于那个列排序 -
文本比较: 命令diff用于比较两个文件的区别
-i 忽略大小写
-b 忽略空格数量的改变
-u 统一显示比较信息(一般用以生成patch文件) -
处理文本内容: 命令tr(translate)用于处理文本内容,要用重定向方式
-d 删除关键字 tr -d 'TMD' < test.txt
转换大小写: tr 'a~z' 'A~Z' < test.txt -
搜索替换: 命令sed 用以搜索并替换文本,中间用的正则表达式
sed + 正则 + 文件: 如: sed ‘s/linux/unix/g’ linuxcast 、sed '1,50s/linux/unix/g' linuxcast
网友评论