当前位置: 首页 > news >正文

程序员眼中的Linux操作系统——初识指令

要努力,但不要着急,繁花锦簇,硕果累累,都需要过程!

 

1.什么是操作系统?

通过计算机工作原理来解释:

操作系统是一款管理软件:

 对上为应用软件提供良好的稳定,安全,高效的运行环境

 对下管理好软硬件资源

2.Linux下的基本指令:

概念:

指令:通过给操作系统写一些相应的命令,来提示计算机完成相应的操作,在Linux操作系统中输入的指令等同与在Windows操作系统图形化界面完成一些基本操作

pwd命令:

显示当前用户所在的路径:

root:表示当前目录是根目录 

注:/:表示路径分隔符 ,第一个/表示根目录

ls指令:

ls:显示当前路径下的文件或目录名称:

ls -l:显示当前路径下的文件或目录更详细的属性信息:

ll:等价与ls -l

 注:文件 = 文件内容 + 文件属性信息 

ls -a:显示所有的文件名,包括隐藏文件(以.开头的文件,在Linux下叫做隐藏文件)

ls -al: 显示所有文件名及属性信息

注:.表示当前路径 ,..上级路径 

 ls -ld:不进入目录,显示目录的详细信息

ls -R:递归式的列出所有目录下的子文件 

cd指令:

功能:改变工作目录,将当前工作目录改变到指定目录下

cd .. :返回上级目录

cd 路径+文件名:绝对路径 

 ../路径+文件名:相对于自身所处的路径进行定位,就是相对路径 

cd ~:进入家目录(家目录是指起始登录时默认所处的路径)

 cd -:返回最近访问的目录

tree指令

功能:按照树状结构显示所有的目录和文件

tree指令安装:yum install -y tree(使用前需要先进行安装)

whoami指令

功能:表示当前登录Linux操作系统的用户

touch指令

功能:创建一个普通文件

mkdir指令

功能:创建一个空目录

mkdir -p :递归式建立多个目录 

rmdir指令&&rm指令

rmdir:删除空目录

 rm:删除普通文件

rm -r:递归删除 

rm -rf:递归强制删除目录,及文件 (不再询问)

 

 rm -i :删除前进行逐一询问是否确认删除 

man指令

man默认是从1号手册开始进行查找,找到即停

man可以指定手册进行查找,man 1/2/3 命令/接口/C

cp指令

cp指令:将源文件拷贝到目的地去

cp -r:递归拷贝

cp -rf:递归强制拷贝

cp -i:拷贝前进行询问是否需要拷贝 

mv指令

功能:

1.类似剪切功能,move,移动文件或者目录

 2.对文件或目录进行重命名

cat && tac指令

more指令

功能:查看文本内容

more -行数:可以查看前“行数”的内容 

q:退出more

less指令:

功能:查看文本内容

 -N:显示行号

/字符串:向下搜索“字符串”的功能


?字符串:向上搜索“字符串”的功能 

head指令:

功能:查询文本头部数据(默认查询前10行)

-数字:指定查询的前多少行 

tail指令:

功能:查询尾部数据(默认后10行)

-数字:指定查询的前多少行 

如何查询中间指定的行数呢?

我们可以通过管道进行输出

 管道前面的命令是将内容写入管道,管道后面的命令是从管道拿数据

date指令

功能:查询当前时间

date 指定格式显示时间 

 时间戳:从1970年1月1日0:0开始

 -d@某个时间戳:转换时间

cal指令

功能:可以指定查询日历

find指令

-name:在指定路径中查找指定的文件

which指令:

功能:查询命令对应所处的路径

alias指令:

功能:对指令重命名起别名

whereis指令:

功能:在特定的路径下,查找指定的文件名对应的文档或命令

grep指令

功能:在文本中匹配查找指定的内容

-i:忽略大小写

-v:反向选择,将没有匹配到的进行显示

wc -l指令

功能:统计总共有多少行

sort指令:

功能:对文本内容进行排序

uniq指令

功能:对相同的文本内容进行排序

zip和unzip指令

功能:

zip:压缩目录

unzip:解压缩目录

-r:递归压缩目录下的所有文件 

 -d:解包解压到指定的路径下

打包压缩的所用:

1.将多个文件打包成一个文件,避免在传输的时候会有部分文件丢失

2.传输效率提高

tar指令

功能:打包压缩

压缩:



解压缩:

-v:在压缩/解压的时候同步显示文件列表

-t:再不解压的前提下查看压缩包里面的内容 

-C:指定路径下解压

bc指令

功能:linux下的计算器

uname指令

功能:查询Linux操作系统相关信息

-a:查询Linux操作系统详细属性信息 

-r:查询Linux操作系统内核版本 

几个常用的热键:

Tab键:命令行自动对齐或补齐

ctrl + c:终止异常程序

ctrl + r:搜素历史指令

ctrl + d:退出当前用户

lscpu指令

功能:查看cpu相关信息

lsmem指令

功能:查看内存信息

 

df-h指令

功能:查看磁盘结构

who指令

功能:查询当前Linux系统在线用户

file指令:

功能:查询文件类型

以上就是一些常用的Linux操作系统的指令,关于指令我们的理解是每个指令相当于一个可执行程序,当我们使用指令去执行一些命令的时候又是如何与操作系统交互的呢?

这里引出一个概念:命令行解释器(shell)

Linux操作系统内核称为kernel

图例关系:

举例解释:

为了更好的理解kernel与shell的关系,下面我们举一个有趣的例子:


假设你是一个优秀的程序员, 你家庭条件也很不错-你爸是村长,你家有两套房、一辆车, 你自己的年薪也是30W+;你喜欢了村里的另一个姑凉如花,但是呢你十分内向,不敢向如花表明你的心意;


但是你们村中有一个十分厉害的媒婆-王婆,王婆在你们村方圆十里都是最厉害的媒婆,只要它出马基本上就没有谈不成的;所以你找上了王婆,让她去向如花说媒,王婆也去了;

不幸的是,如花表示你是一个好人, 但是你们不适合,粗如花E经和村里的另一个高富帅订婚了, 再过-年就结婚;

但是你是一个十分专- 的人, 非如花不可,于是你还是三番五次的找王婆去给你再说一说;王婆试了几次之后发现这媒完全不可能,于是后面直接不鸟你了,也不再去找如花;

你看王婆直接不鸟你了,于是跟王婆说:“我爸是村长,王婆您再去给我说说吧。”王婆看这事不办不行,但是如果继续三潘五次去说媒,自己的口碑也没了;

后,王婆想了一个办法-王婆收了十几个徒弟,然后每次你找王婆,王婆都找-些冠冕堂皇的借口说自己没空,然后派徒弟去找如花,这样即使失败了也可以说是因为徒弟萌新太菜了;这样即不得罪村长,也保住了自己的口碑。

在上面的例子中,王婆就相当于shell,用来传递你(用户)的信息(指令)给如花(kernel),然后将如花的信息反馈给你;同时,王婆拒绝多次去说媒,相当于shell拦截了非法指令,变相的保护了kernel;最后,为了保证自己的口碑,王婆安排自己的徒弟去说媒,相当于shell本身不直接去执行指令,而是派生子进程去执行(命令行解释器存在的意义)。
 

总结:当用户与操作系统交互的时候不进行直接交互,而是首先将指令交给shell,如果指令合法就交给操作系统,操作系统执行完返回给shell,shell再返回给用户

3.Linux权限的概念

Linux下有两种用户,超级用户(root),普通用户

root用户:可以在Linux系统下做任何操作,不受限制

普通用户:只能做一些有限的操作

超级用户与普通用户之间的切换

root用户切换到普通用户:

su + 用户名 

普通用户切换root用户

su

 注:root用户到普通用户不需要输入密码,普通用户到root用户需要输入密码

sudo指令

功能:不切换root用户,以普通用户的身份执行root用户的操作权限

3.1Linux权限管理

什么是权限?

权限是一件事情允许被谁(权限是用来约束人的(一个人或一个群体))做(做某件事情前,该事情具有相应的属性

Linux文件权限:文件权限 = 人(角色)   +      文件属性

角色:拥有者,所属组,其他人

 其他人就是除拥有者和所属组之外的人称为其他人

为何会存在所属组呢???

举个例子:假设在一家公司,有两个项目组在同一台Linux机器上共同开发一个相同的项目

假设项目A组中的一位程序员写好了代码,这位程序员就是这份代码的拥有者,如果没有所属组,当程序员的领导审核代码的时候,领导就属于其他人,当领导能够看到这份的同时项目B组的也能看到这份代码,因此为了避免这种问题,引出了所属组的概念

文件属性:r(读属性) w(写属性) x(执行属性)

第一个字符代表文件类型:

 在Linux系统中文件与文件名后缀无关

 是通过显示文件属性信息中的第一个字符来区分文件类型的

Linux文件类型:

d : 目录文件

- :普通文件(源代码,库文件,可执行程序,文档压缩包等)

c :  字符设备文件(键盘,显示器)

b : 块设备(磁盘)

l : 链接文件(快捷方式)

p : 管道文件

Linux文件权限修改:

设置文件属性:

角色对应的属性信息:

 修改拥有者属性:

1.给拥有者加权限:

2.给拥有者减权限:

修改所属组属性:

1.给所属组加权限:

 2.给所属组减权限: 

 修改其他人的属性

1.给其他人加权限:

 2.给其他人减权限:

同时修改属性信息:用,隔开 

 a:同时增加或删除所有的权限

第二种方案:8进制方案:

  

 设置文件所属角色:

修改拥有者:

修改所属组: 

 同时修改:用:链接

4.关于权限的面试题

题一:为什么我们创建的目录或者普通文件,默认权限是我们所看到的这样子呢?

Linux规定:

目录起始权限:777

普通文件起始权限:666

在Linux系统中会默认配置好umask(权限掩码)

规定凡是在权限掩码中出现的,都必须在起始权限中去掉

去掉的准则:最终权限 = 起始权限 & (~umask)

计算过程:

注:umask可以被修改

 

题二:如果我们要进入一个目录,需要什么权限?? 

 进入一个目录,至少需要执行权限,读权限和写权限是进入目录之后是否允许查看或写内容

这也解释了,为什么系统规定一个目录是从777开始的,因为目录创建出来后,一般要允许被进入

5.粘滞位

1.什么是粘滞位?

chmod +t  /home   #这个指令就是加上粘滞位

1.为什么存在粘滞位?

背景:

Linux是一个多用户系统,因此不同的用户有时候需要在同一个目录下进行创建各自的文件

tmp这个目录就是一个多用户的公共目录 

在根目录下创建一个公共目录:

此时创建的目录拥有者和所属组都是root,对于其他人并没有写权限,既然是公共目录就一定要有所有的权限

修改权限:变成公共目录

 不同用户在公共目录中创建文件:

 文件创建成功:

不同用户对别人文件的权限是只是可读 

虽然对别人的文件不可写不可读,但是我可以删除别人的文件:

这是由于在同一个公共目录下的特性,为了防止这种问题,因此给  目录   设置粘滞位 

 

相关文章:

  • process.env.NODE_ENV与@vue/cli-service及其.env.*默认外部环境配置文件之跨域部署
  • MySQL:用户权限和语言接口
  • 2022年广西壮族自治区中职网络安全技能竞赛“Linux操作系统渗透测试详解”
  • 沉睡者 - 抖音中视频计划横版16:9视频制作教程
  • 强大的包管理器Poetry
  • MFC Windows 程序设计[304]之文件夹的枚举(附源码)
  • 【ArcGIS微课1000例】0033:地图点状标记符号设计教程
  • 神经网络中的算法-BN算法
  • SpringBoot接收参数的几种常用方式
  • Linux--权限
  • ESP32上手指南
  • 多径信道下通过LMS均衡算法提高通信质量——详细版
  • 前端笔试/面试题
  • 基于C51语音控制小车
  • 算法优化 | MATLAB实现BO-RF贝叶斯优化随机森林算法
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Angular 响应式表单之下拉框
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • FastReport在线报表设计器工作原理
  • js继承的实现方法
  • JS数组方法汇总
  • MySQL用户中的%到底包不包括localhost?
  • Python_OOP
  • Vim 折腾记
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • Xmanager 远程桌面 CentOS 7
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 收藏好这篇,别再只说“数据劫持”了
  • linux 淘宝开源监控工具tsar
  • 阿里云服务器购买完整流程
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • #《AI中文版》V3 第 1 章 概述
  • $().each和$.each的区别
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (¥1011)-(一千零一拾一元整)输出
  • (二十四)Flask之flask-session组件
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (篇九)MySQL常用内置函数
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)fock函数详解
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .NET 8.0 中有哪些新的变化?
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .sh
  • [2023年]-hadoop面试真题(一)
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [AX]AX2012 R2 出差申请和支出报告
  • [BeginCTF]真龙之力
  • [BZOJ1178][Apio2009]CONVENTION会议中心