操作系统是一款做软硬件管理的软件分层结构自下往上设备驱动层作用操作系统 ↔ 硬件之间的翻译官。把操作系统的通用指令翻译成硬件能听得懂的信号。拓展先有指令还是先有图形键盘鼠标二、核心概念指令可以携带「选项」命令名 -选项 参数选项用来控制命令的不同行为 / 显示效果通常以-开头多个短选项可以合并写比如-l -a可以简写为-lals -l输出里那一串数字-rw-r--r-- 1 root root这个1就是硬链接计数代表这个 inode 现在有几个文件名连着它。文件 文件内容 文件属性文件属性元数据文件名、文件大小、权限、修改时间、所属用户、硬链接计数、文件类型。这些信息不是文件里面的内容但是也要占用磁盘空间保存。文件操作分成两大类✅ 对文件内容操作修改、读取文件里面的数据✅ 对文件属性操作修改权限、改名、修改所有者不改文件里面文字Linux 隐藏文件 两个特殊隐藏目录.和..Linux 规则名字以英文小数点.开头的文件 / 目录就是隐藏文件普通ls看不到必须加-a选项ls -a/ls -la才显示。每一个目录里面自动自带两个隐藏目录.一个点当前目录用途定位当前目录里的文件./test.txt代表当前目录的 test.txt..两个点上一级目录父目录用途cd ..回到上一层文件夹小细节根目录/的..仍然是自己因为它已经是最顶层没有上级。Linux 文件系统一棵倒立多叉树绝对路径 vs 相对路径一句话区分以/开头 绝对路径不以/开头 相对路径网页地址也是用/属于 Linux 风格的分隔符。whoami查看当前登录是谁what am I我是谁pwd打印当前所在目录命令行提示符区分#→ root 超级用户$→ 普通用户cd ~一键回到自己的家目录cd - 切换回刚才你来的那个文件夹来回切换目录非常好用5、补充Windows 有没有家目录有的Windows 里C:\Users\你的用户名就是 Windows 的家目录存放桌面、文档、图片。基本指令2Linux 指令本质指令本质 可执行文件和你用 g 编译出来的test程序是一类东西系统自带命令ls/pwd/echo放在/usr/bin/目录。当你在命令行敲ls回车系统去 PATH 规定的目录优先 /usr/bin找到名叫 ls 的可执行文件然后运行这个文件。/usr/bin在系统 PATH 环境变量里面。敲 ls系统自动去 PATH 里面挨个文件夹找 ls 文件找到直接执行。bin binary 的缩写中文二进制计算机里能直接跑的程序都是二进制文件所以放可执行程序的目录名字带 bin。输出重定向课件重点一句话定义本来要打印在屏幕上的内容转而写到文件里面echo “hello Linux” # 直接在屏幕输出文字echo “hello Linux” mytest.txt # 输出重定向追加重定向不删除原有内容在文件末尾追加一行但是习惯上大家会固定用后缀方便人.txt普通文本文件.cppC 源代码.h头文件.shshell 脚本’什么是 shell 脚本shell 就是你现在敲命令的黑框命令行解释器。.sh文件就是把一堆 Linux 命令写在一个文本文件里一次性批量执行。和 C 程序对比.sh脚本直接读文字一行一行解释执行不用编译.cppC 源码必须 g 编译成二进制程序才能运行2. 怎么用写好脚本文件给它加执行权限chmod x test.sh运行./test.sh输入重定向重点cat out.txtcat 的作用就是读取内容然后打印到屏幕。本来cat默认从键盘读取输入表示不从键盘读从后面的文件读取内容交给 cat 命令。简单记、输出重定向 → 程序输出写到文件箭头指向文件输入重定向 → 文件内容输入给程序箭头指向命令补充cat out.txt和cat out.txt屏幕上看到的结果一模一样底层逻辑不一样。cat out.txtcat 自己打开文件读取cat out.txt是shell黑框命令解释器先把 out.txt 打开把文件里面的内容当成键盘输入直接喂给 cat。cat 只管接收输入然后打印cat 根本不知道这个输入来自文件。cat 命令的局限cat是一次性把全部内容打印到屏幕适合小文件。日志、项目这种大文本cat 会直接刷屏不方便看。看大文件用less/more。less是后来写出来改进more的工具。有一句经典梗less is more少即是多less 比 more 功能更强既能向下翻也能向上翻4. head 和 tail提取文件部分内容head -1020 log.txt取出文件前 1020 行tail -20 temp.txt取出文件最后 20 行看日志最常用管道符号|竖线一句话把左边命令输出的内容直接当成右边命令的输入数据在内存里传递不写磁盘。管道是内存级临时文件命令流水线左边输出直接喂给右边。| wc -lwc word count-l统计行数输出20代表一共 20 行。和重定向对比考点//操作磁盘上的文件数据写到硬盘|管道内存里传递数据不产生磁盘文件速度更快指令donesshd 里的 dd daemon读音/ˈdiːmən/中文叫守护进程大白话daemon 就是开机自动后台一直跑着的程序不用人手动点开默默在后台等待别人来连接。ssh客户端工具你在 xshell 敲 ssh 去连服务器sshd服务器端的后台服务程序守护进程一、日志log日志就是程序运行时自动记录下来的流水记录保存在日志文件里。一条日志一般包含时间 日志等级 具体信息 附加信息。作用程序出 bug 的时候翻看日志就能查到什么时候、发生了什么问题。二、三个查找命令考试重点区分清楚1.which只在系统 PATH 的命令目录/usr/bin 这类里查找可执行命令。例子bash运行which ls # 输出 /usr/bin/ls✅ 只找命令程序不找普通文本文件。2.whereis在系统固定的几个目录里查找可执行程序 手册文档 源码。范围比 which 大一点但还是系统预设的固定目录不会全盘遍历磁盘。3.find真正遍历磁盘在你指定的整个路径下全盘搜索文件。可以搜索普通文件、文本、目录不局限于命令。对比一句话which找命令whereis找命令 手册find磁盘上全盘搜任意文件。find 去哪里找 -name “要找的名字”模糊查找找所有后缀是 .cpp 的代码文件通配符 *find . -name *.cpp三、grep文本过滤工具bash运行grep 9999 log.txt在 log.txt 里面筛选出包含9999这串文字的所有行打印出来。一般搭配管道一起用cat log.txt | grep 关键词一、打包 和 压缩两个概念考试要分清打包把很多零散文件 / 文件夹合并成1 个大文件大小基本不变。好处传输的时候不会丢其中某个小文件。压缩把文件体积变小节省硬盘空间、下载更快。tar先打包顺带压缩Linux 最常用zip/unzip另一套压缩工具Windows 也能直接打开 zip 包二、tar 命令参数重点bash运行# 打包压缩c z f tar czf xxx.tgz 文件/目录c create 创建打包文件z gz 压缩算法加上这个才会变小f file指定输出的包文件名f 必须放最后bash运行# 预览包里有什么不解压t z f tar tzf xxx.tgzt list列出包里内容bash运行# 解包解压x z f tar xzf xxx.tgzx extract提取、解压后缀说明xxx.tar.gz简写写成xxx.tgz完全一样。tar 是打包gz 代表压缩。三、zip /unzip安装命令root 才能执行bash运行yum install -y zip unzipzip打包压缩unzip解压 zip 包四、uname -abash运行uname -auname unix name查看系统信息输出里面的x86_6464 位操作系统x86_64 x6464 位x86 32 位老古董现在很少见一句话考点tar czf 创建压缩包tar tzf 查看包内容tar xzf 解压uname -a 查看系统架构x86_64 是 64 位系统。su - root简写su -推荐用这个su英文全称switch user中文切换用户运行su -完全切换到 root 登录加载 root 全部环境变量工作目录自动切到 root 的家目录/root相当于重新登录 root是标准、规范写法root 切换到普通用户不需要输入密码su单纯换用户身份环境不变su -完整切换成 root 登录环境全部重置工作推荐用 su -历史命令history查看全部历史命令Ctrl r搜索历史命令快捷键非常常用1. shell sh/bash命令行解释器英文shell 外壳程序用户**不能直接和 Linux 内核kernel**打交道内核底层指令极其难用。shellbash 是最常用的一种 shell就是中间翻译官接收你敲的命令ls、pwd、su这些字符串翻译成内核能看懂的请求交给内核执行拿到内核返回结果再翻译成你看得懂的文字打印到屏幕保护操作系统拦截非法、危险操作不让用户随便搞坏内核类比课件的比喻用户张三 ↔ 王婆 (bash) ↔ 操作系统内核 (如花)sh早期原始 shell~代表这个用户的家目录用户 → shell(bash命令解释器) → Linux内核(kernel) → 硬件内核是操作系统最核心shell 属于外壳程序包裹在内核外面给用户提供操作入口。普通用户用useradd创建课件写的 adduser是同一个功能二、用户切换命令su/su - 用户名切换到另一个用户su - 用户名完整登录加载对方环境变量跳到对方家目录推荐exit或者Ctrld退出当前用户回到上一层用户例子root →su - jun进入 jun 普通用户敲exit就退回 root。三、sudo临时提权考试重点命令格式bash运行sudo 命令意思普通用户临时用 root 权限执行这一条命令。关键知识点课件这句话必考默认新建的普通用户不能直接用 sudo。原因这个用户不在/etc/sudoers文件里。/etc/sudoers就是 sudo 信任白名单只有写进这个文件的用户才允许使用 sudo 临时拿管理员权限。一、什么是权限权限就是谁可以对这个文件 / 文件夹做什么操作。两个关键点和**身份人**有关不是单纯看密码要看你属于哪个角色和文件属性有关文件本身记录了允许哪些操作3 种身份角色必考拥有者owner文件的主人创建文件的用户所属组group主人所在用户组里面的成员other其他人既不是主人也不在这个组里的所有用户认证规则访问文件只会匹配其中一个身份不会叠加权限。优先级拥有者 所属组 other匹配到就不再看后面。二、ls -l 第一字符文件类型ls -l列出文件详情最左边第一个字符代表文件类型和后缀无关-普通文件文本、可执行程序、库文件d目录文件就是 Windows 的文件夹b块设备文件磁盘、硬盘c字符设备文件键盘、显示器p管道文件用来让两个进程互相通信Linux 文件名后缀只是给人看的系统不靠后缀识别文件类型三、权限符号 r w xr read 可读可以读取里面内容w write 可写可以修改、删除内容x execute 可执行可以把它当成程序运行对目录来说 x 代表可以进入这个文件夹-这个位置没有对应的权限后面 9 个字符分成连续 3 组每组 3 位格式[拥有者3位][所属组3位][other3位]每组内部顺序永远固定r w x五、权限数字八进制考试高频r4w2x1每组把权限数字相加rw- 42 6r-x 41 5rwx 4217— 0六、修改权限命令 chmod作用修改文件的 r/w/x 权限bash运行chmod 664 test.txt含义把 test.txt 权限设置为 拥有者 6组 6other4一句话总结目录权限rls 看目录里有什么文件名w增删改目录内的文件、改名xcd 进入目录访问里面文件但是只有 r、没有 x的时候✅ls testdir能列出里面的文件名❌cd testdir不能进入这个目录❌ 不能查看里面文件的内容、不能看文件详情