学习目标
初识Linux操作系统
初识Xshell外壳
掌握Linux下常见基本指令
掌握Linux权限概念
Linux的背景
1、Linux操作系统发展历程
Linux操作系统的发展历程可以概括为以下几个阶段:
-
创始(1991年):Linux的起源可以追溯到1991年,当时林纳斯·托瓦尔兹(Linus Torvalds)在芬兰赫尔辛基大学学习。他开始开发一个类Unix的操作系统内核,作为对当时主流的Minix操作系统的替代。这个内核最终成为Linux内核的雏形。
Linux内核控制着计算机硬件资源的分配和管理,同时提供操作系统服务和接口,而Linux操作系统包含了Linux内核以及其他必要的系统组件和应用程序,如Shell、GUI、网络服务、文件系统、驱动程序等。严格来讲,Linux只是操作内核本身,但通常采用“Linux内核”来表达该意思,而Linux则常用来指基于Linux内核的完整操作系统。
-
早期发展(1991-1994年):在Linux内核的早期阶段,志愿者程序员们通过互联网协作,共同为内核添加新功能。1992年,Linux的许可证从原始的自由许可证更改为GNU通用公共许可证(GNU GPL),这使得Linux与GNU项目的其他组件更好地协作。随后,Linux开始吸引更多的开发者,逐渐发展为一个功能更为完善的操作系统。
-
成熟期(1995-2000年):这个时期,Linux开始在商业环境中取得成功。越来越多的企业和组织开始使用和支持Linux。例如,IBM在1998年宣布将投资10亿美元用于Linux的发展。同时,Linux发行版也开始出现,如Red Hat、Debian和SUSE等。此外,Linux也开始进入嵌入式系统和服务器市场。
-
主流接受和广泛应用(2001年至今):21世纪初,Linux在企业、政府、教育和个人用户中得到了广泛的应用。许多硬件和软件供应商开始支持Linux,使其逐渐成为一个主流的操作系统。在服务器领域,Linux市场份额持续上升。此外,许多移动设备、家用电器和嵌入式系统也采用了基于Linux的操作系统,如Android。
总之,Linux从一个学术项目起步,经过几十年的发展,已经成为全球范围内广泛使用的操作系统。Linux的成功可以归功于其开放源代码的特性、强大的社区支持以及与GNU项目的紧密合作。如今,Linux在服务器、嵌入式系统和移动设备等领域具有很高的市场份额,继续为全球计算机产业的发展做出贡献。
2、开源
开源精神是一种开放、自由的文化和理念,强调软件的自由、共享和协作。在开源精神的理念下,软件不是私人财产,而是社区共享的财产,任何人都可以获得源代码、阅读和修改源代码、改进软件,并将自己的改进贡献给社区,从而促进软件的不断发展和完善。随着Linux操作系统飞速发展,各种集成在Linux上的开源软件和实用工具也得到了应用和普及,因此,Linux也成为了开源软件的代名词。
3、初识os(Operating System)
核心理念:让计算机使用更加快捷、方便
大致分为应用层、操作系统、驱动层和硬件层
Xshell
最简单的定义:命令行解释器(command Interpreter)
Shell是一个用于与计算机操作系统内核进行交互的命令行界面或脚本编程环境。它允许用户通过输入命令或执行脚本来操作计算机,完成诸如文件操作、进程管理、系统监控等任务。Shell可以被认为是操作系统内核和用户之间的一个桥梁。
Linux下基本指令
1、ls指令
语法: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-l 列出文件的详细信息。常用ll来代替
-d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
2、pwd指令
语法: pwd
功能:显示用户当前所在的目录
3、cd指令
语法:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。
举例:
cd .. : 返回上级目录 cd /home/lxy/dir/ : 绝对路径 cd ../day02/ : 相对路径
4、touch指令
语法:touch [选项] fileName
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
5、mkdir(重要)
语法:mkdir [选项] dirName
功能:在当前目录下创建一个目录
常用选项:
-p 一次可以建立多级目录
举例:
mkdir –p test/test1 : 递归建立多个目录
6、rmdir&&rm指令(重要)
语法:rmdir dirName
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
-p 如果父目录也为空,那么依次删除父目录
语法:rm dirName/fileName
适用对象:所有使用者
功能:删除文件或目录
常用选项:
-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
7、man指令(重要)
语法: man [选项] 命令
常用选项:
1: 用户命令(User Commands):这个部分包含了用户在命令行中直接使用的常见命令的手册页,例如
ls
、cp
、grep
等。2: 系统调用(System Calls):这个部分包含了操作系统提供的系统调用函数的手册页,这些函数可以在编程时使用。系统调用是应用程序与操作系统之间的接口。
3: C库函数(C Library Functions):这个部分包含了C语言标准库中的函数的手册页,包括字符串处理、文件操作、数学函数等。
8、cp指令(重要)
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,
则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存
在的目录,则会出现错误信息
常用选项:
-f 或 --force 强行复制文件或目录,不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
9、mv
语法: mv [选项] 源文件或目录 目标文件或目录
功能: 区别于第二个参数,目标文件时,实现文件重命名;目录时,将各指定的源文件均移至目录
常用选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
10、cat指令
语法:cat [选项] [文件]
功能:查看目标文件的内容(小文件)
常用选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
11、more指令
语法:more [选项] [文件]
功能:查看目标文件的内容(大文件),可以前翻
常用选项:
-n 对输出的所有行编号(q 退出more)
12、less指令(重要)
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大
可以使用 pageup 等按键的功能来往前往后翻看文件
除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
语法: less [参数] 文件
功能:查看目标文件的内容(大文件),在查看之前不会加载整个文件
选项:
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
13、head指令
语法: head [选项] [文件]
功能:用来显示档案的开头至标准输出中,默认打印其相应文件的开头10行
选项:
-n<行数> 显示的行数
14、tail指令
语法: tail [选项] [文件]
功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
-n<行数> 显示的行数
-f 循环读取 查阅日志文件
15、时间方面的指令
语法: date [选项] [格式]
功能:显示时间、时间戳
举例:
date +%Y-%m-%d(%F):%H:%M:%S(%X)
date -s //设置当前时间,只有root权限才能设置,其他只能查看
date +%s//时间戳
16、cal指令
命令格式: cal [参数] [月份] [年份]
功能:用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
常用选项:
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
17、find指令(重要)
语法: find [选项] pathname
功能:用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
-name 按照文件名查找文件
18、grep指令
语法: grep [选项] 文件
功能:在文件中搜索字符串,将找到的行打印出来
常用选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
-E
:表示启用扩展的正则表达式(Extended Regular Expression)模式匹配
19、zip/unzip指令
语法: zip 压缩文件.zip 目录或文件
功能:将目录或文件压缩成zip格式
常用选项:
-r 递归处理,将指定目录下的所有文件和子目录一并处理
举例:
将test2目录压缩:zip test2.zip test2/*
解压到tmp目录:unzip test2.zip -d /tmp -d指定路径
20.tar指令(重要)
语法:tar [选项] 文件与目录
功能:打包/解包,不打开它,直接看内容
常用选项:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C :解压到指定目录
举例:
tar czvf dir.tgz dir 压缩dir目录,查看过程中显示的文件
tar xzvf dir.tgz -C /home/lxy/dir1 解压dir.tgz到指定目录dir1
21、bc指令
功能:进行浮点运算
22、uname指令
语法:uname [选项]
功能: uname用来获取电脑和操作系统的相关信息。
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类
型,硬件平台类型,操作系统名称
以下命令作为拓展
安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
系统管理相关命令:df、top(CPU占用率)、free、quota、at、lp、adduser(添加用户)、groupadd、kill、crontab;
网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;
系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;
其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。
Linux权限的概念
Linux有两种用户:su [用户名] 来切换用户
-
超级用户(root):可以再linux系统下做任何事情,不受限制
-
普通用户:在linux下做有限的事情。
1、文件访问者的分类
-
文件和文件目录的所有者:u---User
-
文件和文件目录的所有者所在的组的用户:g---Group
-
其它用户:o---Others
2、文件的类型和权限访问
-
文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
-
基本权限
读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
“—”表示不具有该项权限
3、目录的权限访问
-
基本权限
执行(x): 如果目录没有可执行权限, 则无法cd到目录中.
读(r): 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
写(w): 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
-
粘滞位
根据目录的权限,发现了一个问题,只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件写的权限.
功能:防止被删除
格式:chmod +t 文件名
只能被以下用户删除
超级管理员
该目录的所有者
该文件的所有者
4、文件权限值的表示方法
-
字符表示法/8进制数值表示法
0:没有权限(---)
1:执行权限(--x)
2:写权限(-w-)
3:写和执行权限(-wx)
4:读权限(r--)
5:读和执行权限(r-x)
6:读和写权限(rw-)
7:读、写和执行权限(rwx)
-
umask指令
默认情况下,新建文件夹权限=0666
默认情况下,新建目录权限=0777
默认情况下,超级用户掩码值为0022,普通用户为0002。
格式:umask 掩码值
功能:用于设置新创建文件的默认权限掩码,它是一个八进制数值。在文件创建过程中,系统会将文件的初始权限与~umask
值进行按位与运算,以确定最终的文件权限。换句话说,umask
决定了新创建文件的权限中哪些位会被屏蔽。
5、权限的相关设置方法
说明:只有文件的拥有者和root才可以改变文件的权限
1)chmod指令
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
权限值格式
-
用户+/-/=权限
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户‘
t:粘滞位
举例:
# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt
-
三位8进制数字
举例:
# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt
2) chown指令
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
3)chgrp指令
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名文件名
4)file指令
功能说明:辨识文件类型。
语法:file [选项] 文件或目录
常用选项:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。
5)sudo –u 用户名命令
功能说明:分配权限,对一条指令提权
语法:sudo –u 用户名命令