Linux操作系统及常用命令
shell那些事
shell 被称为叫壳,它是整个操作系统的外壳,是能够实现接收用户指令,理解用户的命令,并且将它传输给内核,由内核指挥着某个应用程序启动的这么一个界面。所以 interface 这么一个单词,我们有时候把它翻译成界面,有时候把它翻译成接口,说白了其实指的是同一个意思,希望你能理解。那我们以后也不加区别的使用界面或者接口,知道就是同一个东西就行。 shell 本身用来干什么呢?首先要提供一个用户能够跟他进行交互的界面,其次还要将用户的指挥行为翻译成计算机可以理解的命令,或者理解翻译成内核可以理解的命令能理解。比如说在我们在桌面上双击一个图标,点两下鼠标,以后为什么能够被解析,为打开这么个应用程序,这是不要内核进行指挥了,但是能够提供一个界面让用户进行双击,并且能够显示一个鼠标的样子,这其实是由界面提供给我们的。 shell分为两种GUI(图形化界面)和GLI(命令行界面)。
内核那些事
内核功能:
- 进程管理
- 内存管理
- 文件系统
- 网络功能
- 硬件驱动
- 安全机制
Linux的基本原则:
- 由目的单一的小程序组成;组合小程序完成复杂任务;
- —切皆文件:
- 尽量避免捕获用户接口﹔
- 配置文件保存为纯文本格式;
Linux的两种接口GUI接口和GLI接口(命令提示符bash(shell),#:管理员root,$:普通用户)
操作系统结构
最小的操作系统:提供一个应用程序需要的库,库做需要的内核,内核所需调用的硬件资源
1.内核
只有内核才能运行进程。 为了能够实现在同一个计算机上运行多个程序,我们有了通用管理软件叫内核。 内核只是一个平台,它不提供任何具特定的任务,仅仅是将硬件所提供的计算能力抽象出来,并提供给上层其他软件的。这种方式叫做系统调用。
2.库
系统调用过于底层,所以使得程序员使用系统调用来开发程序是非常麻烦的。因此就有了库。 库就是将一个或多个系统调用的功能封装起来,做成更高级的调用接口。 库必须经过调用才能执行。 如: Windows:dll文件(动态库文件) Linux:.so共享对象
3.应用程序(shell)
操作系统最重要的东西 各种各样的应用协议,比如shell,独特的用户界面;Web服务器;IDE(python,java)开发工具
用户的登录过程
Login: 用户名:用户ID 认证机制—》授权—》审计(日志)
命令提示符-》命令组成:命令-选项-参数(中间用空格隔开)
选项:长选项/短选项——修改命令的执行特性
参数:指定命令的作用对象
list:ls——列出,列表——列出制定路径下的文件
目录也是文件,是路径映射
路径:从制定起始点到目的地所经过位置
文件系统
层次化文件管理机制就称之为文件系统。
绝对路径:从根出发的路径
相对路径:相对于当前位置的路径
当前目录:如进入Windows自动默认进入桌面的文件;linux以root进入系统默认进入/root目录下
思考:文件名是不是文件的数据?是不是文件本身的数据?——》文件名,文件大小存储在在什么位置?
pwd:查询当前目录
最顶级的目录:/
ls命令
ls -l
文件类型如下:
-:普通文件 (f)
d: 目录文件
b: 块设备文件 (block)
c: 字符设备文件 (character)
l: 符号链接文件(symbolic link file)
p: 命令管道文件(pipe)
s: 套接字文件(socket)
文件权限:9位,每3位一组,每一组:rwx(读,写,执行), r--
文件硬链接的次数
文件的属主(owner)
文件的属组(group)
文件大小(size),单位是字节
时间戳(timestamp):最近一次被修改的时间
访问:access
修改:modify,文件内容发生了改变
改变:change,metadata,元数据
ls -lh
做单位转换
ls -a 显示以.开头的隐藏文件
. 表示当前目录
.. 表示父目录
ls -A 不显示 . 和 .. 文件
ls -ld /root 显示目录自身属性
ls -i 显示文件号码
ls -r 逆序显示文件
ls -R 递归(recursive)显示
cd 命令
cd 回到家目录,主目录, home directory 也可以敲cd~
cd ~USERNAME: 进入指定用户的家目录
cd - :在当前目录和前一次所在的目录之间来回切换(类似于电视剧换台)
type命令
显示指定属于那种类型
命令类型:
内置命令(shell内置),内部,内建
外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
环境变量:命名的内存空间
将内存空间中赋值-》变量赋值如:NAME=Jerry
理解环境变量:定义当前用户的工作环境的指定的工作环境属性
printenv #输出当前主机的环境变量
PATH:一堆使用冒号分割的一堆路径
PATH 定义:当我们执行这个命令的时候,它会按次序从这些指定路径下一个一个去找,直到第一次找到那个位置为止。
思考:那是每一次执行命令都要从PATH中找吗?
第二次再执行同一个命令就不找了,这时会有个缓存到我的内存中。系统会找一个地方,把这个命令和它对应的路径给你缓存下来。
hash #可以查看执行命令的缓存