操作系统是什么?
操作系统是一款做软硬件管理的软件
在操作系统之上,需要有各种不同的应用软件来满足用户的不同的应用场景。
操作系统之下提供软硬件服务。
应用软件是在操作系统之上的。
一个好的操作系统衡量指标:稳定、快、安全。
操作系统的核心工作
通过对下管理好软硬件资源的手段,达到对上提供良好的(稳定、快、安全)提供使用环境。
理解我们在计算机上的所有操作
我们在计算机上的所有行为都会转换成硬件行为。
我们的所有的软件行为,全部都要自顶向下贯穿计算的软硬件结构。
几乎我们所有的软件行为,未来都要和操作系统直接或间接相关。
Linxu操作的特点:纯命令行/Linux也有图形化界面。
注:无论是图形化还是指令,本质都是一样的。
先有指令,后有图形化界面,为什么?
先有键盘,后有鼠标,为什么?
因为计算机的首要需求是输入、输出。
指令操作更贴近操作系统。
Linux指令
XShell中Alt+Enter自动全屏和取消全屏
初始指令1
ls指令:显示当前目录下的所有文件
pwd指令:显示当前文件路径
mkdir 目录:新建一个目录文件
cd 文件:进入文件夹
指令是可以携带选项的
touch:新建一个文档
ls -l显示更多文件属性
文件的属性是数据吗?
文件=文件内容+文件属性
文件的操作=对文件内容的操作or对文件属性的操作
文件的类型:d表示目录,-表示一个普通文件
在Linux系统中,以.开头的文件,我们称之为隐藏文件。
ls -la a:显示所有文件,包括隐藏文件。
.与…是什么?
Linux下任何一个目录下都有两个隐藏文件.和…
…表示当前路径的上级路径。
.表示当前路径,帮助用户定位当前目录下的文件
ls -d 指定目录信息
ls -F 说明文件类型
路径分隔符
Linxu下用/表示
Windows下用\表示
/:linux下的根目录
Linux的整个目录结构一定是一个多叉树的样子。
Linux的目录结构整体是一个多叉树,它的叶子节点一定是空目录或非目录文件,路上节点一定是一个非空目录。
我们所有的对文件或者目录的增删查改,本质上都是对这颗多叉树的增删查改。
我们定位一个文件,通常用路径进行定位。
路径定位为什么具有唯一性?
因为任何一个节点都只有一个父节点。
我们把从/开始定位到指定位置具有唯一性的路径称为绝对路径。
把以自己当前所处的路径作为起始参照位置来进行特定文件的定位称为相对路径。
怎么使用绝对路径和相对路径?
- 绝对路径往往比较长但是不变,一般在一些固定场景,配置文件中使用。
- 一般命令行输入,比较常用相对路径。
初始指令2
cd 相对路径
cd 绝对路径
cd ~ 进入自己所在的家目录
cd -回退到最近一次所在的路径
Ctrl+D两次,退出XShell
whoami:查看当前登录的用户
超级用户(root)与其他(普通)用户
Centos系统中,所有的普通用户,用户账号都会统一放在/home
touch 创建一个文件
mkdir
mkdir 创建目录
tree 将对应的目录结构以树的形式显示
yum install -y tree
mkdir -p d1/d2/d3/d4/d5:递归建立多个文件
rm -f 普通文件
rm -r 目录文件:递归删除目录文件
rm -rf 目录文件
rm -rf / 删库跑路
初始指令3
通配符
ls *
ls *.c
ls test.*
man指令
man man
man 3 printf #man手册共有1-9号手册
echo指令
echo "hello,Linux"
echo "Hello,Linux" > mytest.txt #输出重定向
#>: 输出重定向 数据没有在显示器显示,数据被写入到了文件中
输出重定向:本来应该显示到显示器的内容,打印到了文件中。
cat 指令
cat mytest.txt#打印文本内容
cp src.txt dst.txt #拷贝文件
#同一个目录下,不能存在同名文件(文件的唯一性)
cp -r srcd destd#递归拷贝目录文件
mv指令
mv src.txt dst.txt#剪切并重命名
Ctrl+C:终止因为程序或者指令异常而导致我们无法进行指令输入的情况
你是如何看待指令的?
指令就是可执行程序。
我们在执行指令之前,应该做什么准备?
先在系统中查找指令。
指令是在系统中特定的路径下存在的。
指令的本质就是可执行程序,和我们自己写的编译好的程序没有本质区别,就是直接安装到了系统的某种路径下。
which指令:查找指令的位置
alias:重命名
Liunx下一切皆文件
向显示器打印->fwrite
从键盘读取->fread
普通文件->fwrite、fread
echo与cat区别
echo 字符串: 打印字符串
cat 文件名:打印文件内容
echo >:输出重定向——向目标文件写入的时候覆盖写入,先清空文件后写入新内容
echo>>:追加重定向
cat<:输入重定向
cat -n:代编号
cat -b:只给非空行带编号
cat -s:不输出多行连续的空行
cat不适合看大文本
less指令
less .txt#查看文件内容
#/n转到第n行
head -n .txt#文本前n行
tail -n .txt#文本后n行
管道
head -1020 .txt | tail -21#管道支持流水线工作
XShell添加用户
新建
用户名+主机名
date指令
日志的概念:程序运行到自己的每一个关键时刻,都要打日志记录
日志:时间,日志等级,日志信息,其他信息。
date +%Y-%m-%d_%H:%M:%S
#年月日时分秒
date +%s 时间#时间转换为时间戳
date -d@时间戳#时间戳转换为时间
文件中——日志文件记录时间戳(只会增长,不会减小)便于查找
cal指令:日历指令
find指令
find:可以在指定的路径下,进行文件的搜索——在磁盘文件中查找
find ~ -name test.c#~:家目录
find ~ -name *.c
find /usr/bin/ -name ls
#permission denied 无权限
which ls#在指令路径下,搜索指令文件
whereis ls:#在系统特定的路径下查找,既可以找到可执行程序,又可以找到手册,安装包、压缩包等之类的文件
grep指令
grep:行文本过滤工具
grep 'q' log.txt
grep -v 'q' log.txt
grep -n 'q' log.txt#显示行号
grep -i 'bit' log.txt #忽略大小写
grep -Rn 'int main()' dir1
zip/unzip指令
打包和压缩
解包和解压
为什么要打包和压缩?
- 能被打包和压缩的,一定是一个整体。
- 由多个文件->一个文件
- 不易造成文件缺失
打包压缩,体积变小,下载时间变短,存储占据空间变小。
Linux充当服务器时,也需要各种网络应用场景满足通讯的要求。
zip d1.zip d1#打包一个文件
unzip d1.zip
zip -r d1.zip d1#递归打包,可以打包目录及其下所有文件
unzip d1.zip
zip -r d1.zip d1 log.txt
unzip d1.zip -d test#-d:指明解压目录
#安装zip:以root方式安装
su#进入root用户,Ctrl+D:退回普通用户
yum install -y zip unzip
tar指令
tar czf XXX#打包压缩
tar tzf XXX#预览
tar xzf XXX#解压解包
tar xzf code.tgz -C #-C:指明解压路径
.tar:打包后缀
.gz:压缩后缀
XXX.tar.gz->XXX.tgz
bc指令:命令行计算器
重要热键
Tab两下:命令补全
Ctrl+R:历史命令搜索(决定了Linux一定记录了历史命令)
Ctrl+C:终止
Ctrl+D:回退
histroy#查看历史指令
#Linux默认会记录最新的1000条历史指令
shutdown#关机指令