尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Linux之Ubuntu入门篇知识总结

Linux之Ubuntu入门篇知识总结 学习资料B站正点原子官方视频文档说明这里不再去讲工具安装使用了我遇到的问题都在问题篇总结出来了这里是对shell,Linux文件这些以后真正必须熟练运用的知识的理解与总结再次说明我是初学者手搓毕竟还有很多不足之处请大家多多包容有问题能指出再好不过啦一shell命令1什么是shell我们把Linux想成一家餐厅你使用电脑的人终端你点餐的窗口Shell听懂要求并传达给厨房的服务员Linux系统后面的厨房命令你说的话2举个例子例如你在终端输入ls过程是你输入“ls” → Shell看懂“查看文件” → Shell让Linux执行 → Linux返回文件列表 → Shell把结果显示给你所以Shell是你和Linux之间的翻译员。3最常用命令大白话版快来熟悉专属魔法咒语大过节的亲戚面前装逼也倍有面子可能是因为我笨笨的官方语言实在是看的快睡着了正规描述还是看官方文档我这里只是自己看得懂的理解pwd我现在在哪ls这里有什么ls -a把隐藏的也显示出来cd 文件夹进入文件夹cd ..返回上一层mkdir 文件夹创建文件夹touch 文件创建空文件cat 文件查看文件内容echo 文字“显示一段文字cp 原文件 新文件复制文件mv 旧名字 新名字移动文件或改名file 文件查看文件类型find寻找文件grep在文件中寻找文字clear清除终端屏幕rm 文件删除文件rmdir 文件夹删除空文件夹man 命令查看命令说明书sudo 命令临时使用管理员权限gedit打开某个文件ps查看正在运行的程序top实时查看系统运行状态df -h查看磁盘所剩空间du -sh 文件夹查看文件夹大小4实战1 运行截图2命令解释1. 查看外卖店准备开在哪里pwd我现在在哪里ls这里有什么东西ls -a把隐藏的东西也显示出来。2. 创建外卖店mkdir takeaway_shop创建一家叫takeaway_shop的外卖店。cd takeaway_shop走进外卖店。pwd确认自己已经进入外卖店。3. 创建订单室mkdir orders创建一个存放订单的房间。cd orders进入订单室。4. 创建订单touch order.txt创建一张空订单。touch .shop_secret创建一份隐藏的店铺资料。先输入ls只能看到普通订单。再输入ls -a可以看到隐藏的.shop_secret。5. 填写订单gedit order.txt在打开的记事本里输入顾客小明 外卖牛肉面 状态制作中保存并关闭窗口。6. 查看订单cat order.txt终端会显示订单内容。echo 外卖店收到新订单终端会显示这句话。7. 复制订单cp order.txt order_copy.txt相当于复印一张订单。ls现在可以看到两份订单。8. 给订单改名mv order_copy.txt finished_order.txt把复制的订单改名为“已完成订单”。ls9. 查看订单是什么文件file order.txtLinux会告诉你这是文本文件。10. 寻找订单find . -name order.txt订单放在哪里grep 牛肉面 order.txt在订单中寻找“牛肉面”。11. 查看外卖店和电脑状态du -sh .查看订单室占用了多少空间。df -h查看电脑磁盘还剩多少空间。ps查看有哪些程序正在工作。top查看哪些程序最忙。按q退出。12. 查看命令说明man ls查看ls的说明书。按q退出。sudo ls相当于临时拿到“店长钥匙”用管理员身份查看文件。13. 擦干净屏幕clear只清理终端画面不会删除订单。14. 外卖店关门清理订单rm order.txt删除原订单。rm finished_order.txt删除已完成订单。rm .shop_secret删除隐藏资料。返回外卖店cd ..删除空订单室rmdir orders离开外卖店cd ..删除空外卖店rmdir takeaway_shop最后查看ls整个过程就是找到位置 → 开外卖店 → 建订单室 → 写订单 → 复制订单 → 改名 → 查找订单 → 删除订单 → 关闭外卖店二Ubuntu文件系统结构把Linux文件系统想成一栋大楼。根目录//就是整栋大楼的大门所有房间都在它里面。/ ├── home ├── etc ├── dev ├── boot └── tmp常见文件夹了解文件夹生活类比用途/home普通用户的房间保存你的文件/root管理员的房间root用户的文件/bin工具箱保存ls、cp等命令/sbin管理员工具箱保存系统管理命令/etc规章制度柜保存系统配置/boot启动室保存Linux启动文件/dev设备窗口表示硬盘、串口等设备/lib公共零件库保存程序使用的库/tmp临时桌子保存临时文件/var记录室保存日志等经常变化的文件/proc系统仪表盘显示进程和系统运行信息/sys硬件仪表盘显示内核和硬件信息/media自动停车位U盘通常挂载在这里/mnt手动停车位手动挂载设备/usr软件仓库保存大量软件和相关文件/opt第三方软件区安装额外软件/srv服务区保存网络服务数据注意/dev中主要是“设备文件”不是驱动程序本身。绝对路径从大楼入口/开始写完整地址/home/zyy/order.txt类似中国某省某市某街道某房间无论你当前在哪里这个地址都不会变。相对路径从你当前所在的位置开始写order.txt类似从我现在的位置往前走。例如当前位于/home/zyy那么order.txt表示/home/zyy/order.txt一句话记忆/是整栋大楼绝对路径从大门开始相对路径从当前位置开始。三文件权限管理1文件权限是什么把文件想成一张外卖订单。不同的人对订单能做的事情不同rread能查看订单。wwrite能修改订单。xexecute能把它当程序运行。外卖店里有三类人u店主也就是文件拥有者。g店里的员工也就是同组用户。o路人也就是其他用户。2看懂权限运行ls -l a.c可能看到-rw-rw-r-- 1 zyy zyy 100 a.c把权限拆开- rw- rw- r-- │ │ │ │ │ │ │ └─ 其他人 │ │ └─────── 同组用户 │ └───────────── 文件拥有者 └────────────────── 文件类型具体意思第一个-这是普通文件。第一个rw-店主可以读、写不能运行。第二个rw-员工可以读、写不能运行。最后r--其他人只能查看。常见文件类型-普通文件。d文件夹。l软链接。3数字权限二进制表示Linux也可以用数字表示权限r 4 w 2 x 1把需要的权限加起来7 421rwx可读、可写、可运行。6 42rw-可读、可写。5 41r-x可读、可运行。4r--只能读。0---什么都不能做。因此-rw-rw-r--对应6644chmod修改权限chmod相当于修改外卖店的规定。把a.c修改为rw-rw-r--chmod 664 a.c给文件拥有者增加执行权限chmod ux a.cu拥有者。增加权限。x执行权限。删除执行权限chmod u-x a.c注意C源文件a.c通常不需要执行权限。编译出来的程序才需要执行权限。5chown修改主人chown相当于把外卖店转让给别人。例如把a.c交给用户zyysudo chown zyy a.c同时修改拥有者和用户组sudo chown zyy:zyy a.c第一个zyy新拥有者。第二个zyy新用户组。最简单记忆r能看 w能改 x能运行 chmod修改权限 chown更换主人三Linux连接文件先理解普通文件把一个文件想成一个房间order.txt → 房间里放着“牛肉面订单”order.txt是房间的门文件内容是房间里的东西复制文件复制文件相当于重新建一个房间order.txt → 房间1牛肉面订单 order_copy.txt → 房间2牛肉面订单这是两个独立房间修改房间1不会影响房间2硬链接硬链接相当于给同一个房间再开一扇门。order.txt ──→ 同一个房间 hard.txt ──→ 同一个房间两个名字进入的是同一个房间。所以修改order.txthard.txt也会看到变化。删除order.txt这扇门还能从hard.txt进去。两扇门都删除后房间才真正消失。创建硬链接ln order.txt hard.txt软链接软链接相当于放一块路牌写着“order.txt在那边”。soft.txt路牌 → order.txt门 → 房间创建软链接ln -s order.txt soft.txt如果删除order.txt这扇门soft.txt路牌 → 找不到order.txt → 无法打开所以软链接类似Windows快捷方式。inode是什么inode就是Linux给“房间”设置的内部编号。你现在只需要知道硬链接两个门通向同一个房间所以inode相同。软链接它只是一块路牌所以有自己的inode。最重要的区别复制建造两个房间 硬链接同一个房间开两扇门 软链接放一块指路牌实战运行截图命令解释echo 牛肉面订单 order.txt创建order.txt并把“牛肉面订单”写进去。echo输出文字把文字写进文件order.txt文件名注意如果文件已经存在会覆盖原来的内容ln order.txt hard.txt给order.txt创建一个硬链接名字叫hard.txt。可以理解为给同一个房间增加一扇叫hard.txt的门。ln -s order.txt soft.txt给order.txt创建一个软链接名字叫soft.txt。ln创建链接。-s表示软链接。order.txt被指向的文件。soft.txt快捷方式的名字。可以理解为创建一块叫soft.txt的路牌指向order.txt。rm order.txt删除order.txt这个名字。此时hard.txt仍然可以进入原来的房间。soft.txt指向的order.txt已经不存在。cat hard.txt查看hard.txt的内容。结果仍然是牛肉面订单因为硬链接是同一个文件的另一个入口。cat soft.txt通过软链接查看内容。这时会报错因为它指向的order.txt已经删除了。最后清理rm hard.txt删除硬链接。删除后真正的文件内容也会消失。rm soft.txt删除已经失效的软链接。完整过程创建文件 → 创建硬链接 → 创建软链接 → 删除原文件 → 硬链接仍然可用 → 软链接失效 → 清理文件四vim编译器Vim是什么Vim是一个在终端里编辑文字的工具类似“终端版记事本”。打开订单vim order.txtVim为什么有三种模式把Vim想成一个管理订单的员工他有三种工作状态。1. 普通模式查看订单刚打开Vim时默认就是普通模式这个状态下不能直接输入文字主要用来移动光标。删除。复制。粘贴。撤销。生活类比员工正在检查订单还没有拿笔写字。2. 编辑模式填写订单在普通模式下按a就可以开始输入文字。生活类比员工拿起笔开始填写订单。编辑完成后按Esc返回普通模式。3. 命令模式保存或退出先按Esc回到普通模式然后输入:屏幕底部会出现一个冒号这时可以输入保存、退出等命令。最重要的保存和退出保存并退出:wq然后按回车。只保存:w不保存直接退出:q!正常退出:q如果文件修改后没有保存:q不会让你退出实例运行截图步骤1在终端输入vim order.txt2然后按a输入随便输保存按Esc输入:wq按回车3查看文件cat order.txt4清除五Linux C编程截图样例第一步打开文件终端输入vim hello.c意思用Vim打开一个叫hello.c的文件。第二步写程序按i然后输入#include stdio.h int main() { printf(Hello\n); return 0; }程序的意思main程序从这里开始。printf在屏幕显示文字。return 0程序正常结束。按Esc输入:wq回车保存。第三步编译gcc hello.c -o hello意思GCC把hello.c翻译成一个叫hello的程序。第四步运行./hello结果Hello五make和makefile先分清三个东西GCC真正负责编译 Makefile写着“怎么编译”的文本文件 make读取Makefile并执行编译命令的软件为什么需要它们假设程序只有一个文件hello.c可以手动编译gcc hello.c -o hello但如果程序有很多文件main.c add.c sub.c menu.c每次都要输入gcc main.c add.c sub.c menu.c -o app文件越多命令越长也容易写错。所以我们把这条命令保存在一个叫Makefile的文件中Makefile是什么Makefile就是一张“编译说明书”内容例如app: main.c add.c gcc main.c add.c -o app第一行app: main.c add.c意思是要生成app需要main.c和add.c第二行gcc main.c add.c -o app意思是使用这条GCC命令生成app注意第二行前面必须按一次Tab键make是什么终端输入makemake会做三件事在当前文件夹寻找Makefile。阅读里面的编译规则。执行里面的GCC命令。最终生成app然后运行./app为什么不直接使用GCC直接使用GCCgcc main.c add.c -o app每次都要自己输入完整命令。使用makemake只需要输入一个单词make会自动完成。最简单的类比假设要制作一份外卖套餐main.c、add.c做菜需要的材料。gcc真正做菜的厨师。Makefile写着做菜步骤的纸。make拿着步骤安排厨师的店长。app最后做好的外卖。最重要的一句话Makefile保存编译方法make读取MakefileGCC真正完成编译。Makefile最基本的格式目标: 依赖 命令(注意第三行“命令”前必须按一次Tab键,不过现在已经自动了目标最后想得到什么 依赖需要哪些原材料 命令具体怎样制作外卖类比牛肉面: 面条 牛肉 厨师制作牛肉面C程序的格式程序名: 需要的C文件 gcc 需要的C文件 -o 程序名例如app: main.c add.c gcc main.c add.c -o app解释app最终生成的程序。main.c add.c生成程序需要的源文件。gcc...真正执行的编译命令。执行make可以重复使用的模板以后项目可以按照这个格式写TARGET app SRC main.c add.c $(TARGET): $(SRC) gcc $(SRC) -o $(TARGET) clean: rm -f $(TARGET)注意gcc和rm前面都要按一次Tab。解释TARGET程序名称 SRC所有C源文件 $(TARGET)使用TARGET里面的内容 $(SRC)使用SRC里面的内容所以gcc $(SRC) -o $(TARGET)实际相当于gcc main.c add.c -o app编译make删除编译出来的程序make clean你只需要记住这个核心格式目标: 依赖 命令也就是我要生成什么我需要什么下一行写具体怎么生成。六,makefile基本语法1. 编译规则固定格式目标: 依赖文件 执行命令例如app: main.c add.c gcc main.c add.c -o app解释app想生成的程序。main.c add.c生成程序需要的文件。gcc...具体编译方法。注意gcc前面必须按一次Tab不能用普通空格。2. 定义变量TARGET app SRC main.c add.c CC gcc使用变量$(TARGET) $(SRC) $(CC)例如$(TARGET): $(SRC) $(CC) $(SRC) -o $(TARGET)实际相当于gcc main.c add.c -o app3. 注释#后面是说明文字不会执行# 编译程序4. 清理规则clean: rm -f app执行make clean作用删除编译生成的程序。完整基础模板# 编译器 CC gcc # 最终程序名称 TARGET app # C源文件 SRC main.c add.c # 编译规则 $(TARGET): $(SRC) $(CC) $(SRC) -o $(TARGET) # 清理规则 clean: rm -f $(TARGET)使用make ./app make clean目标: 依赖 命令实例1. 创建文件夹mkdir make_demo cd make_demo2. 创建main.cvim main.c按i输入#include stdio.h int add(int a, int b); int main() { printf(23%d\n, add(2, 3)); return 0; }按Esc输入:wq保存退出。3. 创建add.cvim add.c按i输入int add(int a, int b) { return a b; }保存退出。4. 创建Makefilevim Makefile按i输入CC gcc TARGET app SRC main.c add.c $(TARGET): $(SRC) $(CC) $(SRC) -o $(TARGET) clean: rm -f $(TARGET)注意$(CC)和rm前面必须按一次Tab键。保存退出。5. 自动编译make6. 运行程序./app结果2357. 删除编译结果make clean这个实例中main.c add.c源文件 Makefile记录编译规则 make执行规则 app生成的程序运行截图这里要注意修改文件后要重新make七shell脚本入门1. Shell脚本是什么把多条终端命令放进一个文件以后一次执行。Shell脚本 自动执行的命令清单2. 基本格式#!/bin/bash 命令1 命令2 命令3#!/bin/bash告诉系统使用Bash执行。脚本通常以.sh结尾。命令从上到下执行。3. read接收输入read -p 请输入姓名 name echo $nameread等待用户输入。name保存输入内容。$name取出内容。4. 整数计算result$((10 20))Shell整数计算使用$((表达式))5. test和[ ]判断判断文件是否存在test -f order.txt也可以写成[ -f order.txt ]注意中括号里面必须留空格。常用判断-f普通文件是否存在 -d文件夹是否存在 -e文件或文件夹是否存在 字符串相同 !字符串不同6.和||命令1 命令2命令1成功才执行命令2。命令1 || 命令2命令1失败才执行命令2。记忆成功后继续 ||失败后处理7. 脚本参数运行bash shop.sh 牛肉面 加辣脚本中$0脚本名shop.sh $1牛肉面 $2加辣 $#参数数量这里是2 $全部参数标准模板#!/bin/bash # 接收用户输入 read -p 请输入内容 value # 整数计算 result$((10 20)) # 判断文件 test -f $1 echo 文件存在 || echo 文件不存在 # 显示输入和结果 echo 输入内容$value echo 计算结果$result # 显示脚本参数 echo 脚本名称$0 echo 第一个参数$1 echo 参数数量$# echo 全部参数$这节课最核心的是Shell脚本把多条命令放进一个文件read接收输入$(( ))计算test判断和||根据成功或失败选择是否继续。Shell脚本知识点总结Shell脚本把多条终端命令写进一个文件一次运行。基本格式#!/bin/bash命令从上到下执行文件通常以.sh结尾。read接收用户输入并保存到变量。变量name小明 echo $name保存变量时不用$使用变量时加$。整数计算result$((10 20))test或[ ]用于判断文件、数字和字符串。test -f order.txt [ -f order.txt ]和||前面成功执行后面。||前面失败执行后面。脚本参数$0脚本名称。$1、$2第一个、第二个参数。$#参数数量。$全部参数。核心一句话Shell脚本就是自动执行多条命令并且可以接收输入、计算、判断和使用参数。实例下面做一个“外卖订单”Shell脚本。1. 创建脚本vim shop.sh按i输入#!/bin/bash food$1 price$2 read -p 请输入购买数量 count total$((price * count)) echo 商品$food echo 数量$count echo 总价$total 元 echo 商品$food数量$count总价$total 元 order.txt test -f order.txt echo 订单创建成功 || echo 订单创建失败 echo 脚本名称$0 echo 参数数量$# echo 全部参数$逐行解释#!/bin/bash告诉Linux使用Bash执行这个脚本。food$1把运行脚本时的第一个参数保存到food。例如bash shop.sh 牛肉面 15这里$1就是“牛肉面”。price$2把第二个参数保存到price。这里$2就是15。不可有空格read -p 请输入购买数量 count显示提示等待用户输入数量并保存到count。total$((price * count))计算单价 × 数量结果保存到total。echo 商品$food显示商品名称。echo 数量$count显示购买数量。echo 总价$total 元显示计算后的总价。echo 商品$food数量$count总价$total 元 order.txt把订单内容写入order.txt。表示覆盖写入文件。test -f order.txt echo 订单创建成功 || echo 订单创建失败检查order.txt是否存在存在显示“订单创建成功”。不存在显示“订单创建失败”。echo 脚本名称$0显示脚本名称例如shop.sh。echo 参数数量$#显示参数数量。这里是2个参数。echo 全部参数$显示全部参数牛肉面 15完整过程接收商品和单价 → 询问数量 → 计算总价 → 保存订单 → 检查订单 → 显示参数信息13:18按Esc输入:wq回车保存。2. 运行脚本bash shop.sh 牛肉面 15根据提示输入2结果商品牛肉面 数量2 总价30 元 订单创建成功 脚本名称shop.sh 参数数量2 全部参数牛肉面 15运行截图zyyzyy-VMware-Virtual-Platform:~$ vim shop.shzyyzyy-VMware-Virtual-Platform:~$ bash shop.sh 牛肉面 15请输入购买数量2商品牛肉面数量: 2总价: 30元订单创建成功脚本名称shop.sh参数数量2全部参数牛肉面 15八shell脚本条件判断函数和循环1. if判断C语言if (age 18) { printf(成年); } else { printf(未成年); }Shellif [ $age -ge 18 ]; then echo 成年 else echo 未成年 fi对应关系C的{ } → Shell的then、else、fi C的printf → Shell的echo C的 → Shell的-ge易错点[ $age -ge 18 ]里面必须有空格。Shell的if最后写fi。数字不能直接使用判断。2. case多选C语言的switchswitch (num) { case 1: break; }Shell对应casecase $num in 1) echo 牛肉面 ;; *) echo 没有这个选项 ;; esac易错点C使用breakShell使用;;。Shell的case最后写esac。*相当于C语言的default。3. 函数C语言void show() { printf(完成); }Shellshow() { echo 完成 }调用show易错点Shell调用函数时不写()。Shell命令结尾通常不需要分号。4. while循环C语言while (i 3) { i; }Shellwhile [ $i -lt 3 ]; do i$((i 1)) done易错点while最后写done。必须修改i否则会死循环。5. for循环Shell也支持类似C语言的写法for ((i0; i3; i)); do echo $i done易错点Shell使用do开始循环内容。使用done结束不使用}。最重要的对照C语言的{ } → Shell的then/fi或do/done switch → case break → ;; printf → echo → -ge → -le → -eq一句话记忆逻辑和C语言一样只是Shell用fi结束if用done结束循环。实例命令解释#!/bin/bash使用Bash执行这个脚本。show_menu()定义一个叫show_menu的函数。{函数内容开始类似C语言的{。echo 1. 牛肉面15元显示第一种商品。echo 2. 炒饭12元显示第二种商品。}函数定义结束。show_menu调用函数显示菜单。Shell调用函数时不写()。read -p 请选择商品 choice等待用户输入并把内容保存到choice。case $choice in根据用户输入的choice进行选择类似C语言的switch。1)如果用户输入1。food牛肉面把商品名称保存到food。price15把价格15保存到price。;;这个选项结束类似C语言的break。2)如果用户输入2。food炒饭 price12保存商品名称和价格。*)*表示除1和2之外的其他输入类似C语言的default。echo 没有这个商品显示错误提示。exit 1结束脚本。1表示脚本因为错误而结束。;;当前选项结束。esac整个case结束。read -p 请输入数量 count让用户输入购买数量保存到count。while [ $count -le 0 ]; do只要数量小于或等于0就一直循环。-le小于或等于。do循环内容开始。read -p 数量必须大于0请重新输入 count让用户重新输入数量。donewhile循环结束。total$((price * count))计算价格 × 数量把结果保存到total。read -p 请输入你的余额 money让用户输入余额保存到money。if [ $money -ge $total ]; then判断余额是否大于或等于总价。-ge大于或等于。then条件成立后执行。echo 付款成功总价$total 元余额足够显示付款成功。for ((i1; icount; i)); do从1开始循环每次增加1一共循环count次。echo 正在打包第$i份$food显示当前正在打包第几份外卖。donefor循环结束。else余额不足时执行下面的内容。echo 余额不足显示余额不足。fi整个if判断结束。整体过程显示菜单 → 选择商品 → 输入数量 → 计算总价 → 输入余额 → 判断能否付款 → 重复打包外卖运行截图zyyzyy-VMware-Virtual-Platform:~$ vim shop.shzyyzyy-VMware-Virtual-Platform:~$ bash shop.sh1. 牛肉面15元2. 炒饭12元请选择商品
返回列表