Linux基础指令
Linux背景
1.发展史
Unix发展历史
·1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统
·1969-1970年,AT&T的贝尔实验室研究人员,在采用很多Multics特点的基础上开发了Unix系统
·Unix从满足个人的设计需求开始,逐步成长为由许多不同开发商所支持的标准软件产品
·第一个Unix版本是免费给许多知名大学的计算机系使用的
·1972年,贝尔实验室开始发放商业版本,并且给不同的用户授权使用这个系统
·1975年伯克莱由下属部门BSD发行了自己的Unix版本
·1980年微软公司开发了叫做Xenix的UnixPC版本
·同时Unix的BSD版本不断发展,在70年代末期,BSDUnix成为了国防部的高科技研究科研项目的基础
·其结果是伯克莱发行了一个叫做BSDRelease4.2的有效版本
·它包括了高级的文件管理器和基于TCP/IP网络协议的网络特点。现在TCP/IP被Internet所使用
·Unix不同版本的出现导致了Unix标准的需要,软件开发商不知道他们的程序运行在哪些版本上比较合适
·到80年代中期,两个竞争的标准出现了,一个是基于AT&T的Unix版本,另一个是BSD版本
AT&T建立了一个叫Unix系统实验室的新组织,它的作用就是综合Unix的不同版本,集中开发一个标准系统
·1991年,Unix综合实验室综合了System V Release3,SUN OS和Xenix的所有特点,发行了System V Release zhangng
·1993年,AT&T把它的Unix专卖给Novell公司。Unix系统实验室成为了Novell的Unix系统小组的一部分。Novell发行了基于System V Relese 4的自己的Unix版本UnixWare,它可以和Novell公司的Netware系统相联。
Linux发展历史
·1991年,赫尔辛基大学的一名研究生在一个Usenet新闻组中宣布他编制出了一种类似Unix的小操作系统。新的操作系统是受到另一个Unix的小操作系统--Minix的启发,该系统是由一名叫Andrew S Tanebaum的教师开发的
·Torvalds于10月5日发布的这个Linux版本被称为0.02版,它能够运行GNU Bourne Again Shell和GUN的C编译程序以及为数不多的其他语言,Torvals绝对没有想到他设想的一种能够针对高级业余爱好者和黑客们的操作系统已经产生,这就是人们所称的Linux
·Linux发布时的版本是0.02,后来又有0.03版,然后又跳到0.10版。因为世界各地越来越多的程序员都开始开发Linux,它已经达到0.95版,这就意味着正式公布1.0版本的时间已经为期不远了。正式的1.0版本是在1994年公布的
2.开源
·Linux是一种自由和开放源代码的类Unix操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具
·GNU通用公共许可协议,是一个广泛被使用的自由软件许可协议条款,最初由理查德斯托曼为GNU计划而撰写,GPL给予了计算机程序自由软件的定义,任何基于GPL软件开发衍生的产品在发布时必须采用GPL许可证方式,且必须公开源代码
·Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。随着Linux操作系统飞速发展,各种集成在Linux上地开源软件和实用工具也得到了应用和普及,因此,Linux也成为了开源软件的代名词
3.官网
4.企业应用现状
·Linux在服务器领域的发展
随着开源软件在世界范围内影响力日益增强,Linux服务器操作系统在整个服务器操作系统市场格局种占据了越来越多的市场份额,已经形成了大规模市场应用的局面。并且保持着快速的增长率。尤其在政府、金融、农业、交通、电信等国家关键领域。此外,考虑到Linux的快速成长性以及国家相关政策的扶持力度,Linux服务器产品一定能够冲击更大的服务器市场
据权威部门统计,目前Linux在服务器领域已经占据75%的市场份额,同时,Linux在服务器市场的迅速崛起,已经引起全球IT产业的高度关注,并以强劲的势头成为服务器操作系统领域中的中坚力量。
·Linux在桌面领域的发展
近年来,特别在国内市场,Linux桌面操作系统的发展趋势非常迅猛。国内如中标麒麟Linux、红旗Linux、深度Linux等软件厂商都推出的Linux桌面操作系统,目前已经在政府、企业、OEM等领域得到了广泛应用。另外SUSE、Ubuntu也相继推出了基于Linux的桌面系统,特别是Ubuntu Linux,已经积累了大量社区用户。但是从系统的整体功能、性能来看,Linux桌面系统与Windows系列相比还有一定的差距,主要表现在系统易用性、系统管理、软硬件兼容性、软件的丰富程度等方面
·Linux在移动嵌入式领域的发展
Linux的低成本、强大的定制功能以及良好的移植性能,使得Linux在嵌入式系统方面也得到广泛应用,目前Linux以广泛应用于手机、平板电脑、路由器、电视和电子游戏机等领域。在移动设备上广泛使用的Android操作系统就是创建在Linux内核之上的。目前,Android已经成为全球最流行的智能手机操作系统,据2015年权威部门最新统计,Android操作系统的市场份额已达84.6%
此外,思科在网络防火墙和路由器也使用了定制的Linux,阿里云也开发了一套基于Linux的操作系统“YunOS”,可用于智能手机、平板电脑和网络电视;常见的数字视频录像机、舞台灯光控制系统等都在逐渐采用定制版本的Linux来实现,而这一切均归功于Linux与开源的力量
·Linux在云计算/大数据领域的发展
互联网产业的迅猛发展,促使云计算、大数据产业的形成并快速发展,云计算、大数据作为一个基于开源软件的平台,Linux占据了核心优势;据Linux基金会的研究,86%的企业已经使用Linux操作系统进行云计算、大数据平台的构建,目前,Linux已经开始取代Unix称为最受青睐的云计算、大数据平台操作系统
5.发行版本
Debian
Debian运行起来极其稳定,这使得它非常适用于服务器。Debian这款操作系统无疑并不适合新手用户,而是适合系统管理员和高级用户
Ubuntu
Ubuntu是Debian的一款衍生版,也是当今最受欢迎的免费操作系统。Ubantu侧重于它在这个市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。Ubuntu是新手用户肯定爱不释手的一款操作系统
红帽企业级Linux
这是第一款面向商业市场的Linux发行版。它有服务器版本,支持众多处理器架构,包括x86和x86_64。红帽公司通过课程红帽认证系统管理员/红帽认证工程师,对系统管理员进行培训和认证
CentOS
CentOS是一款企业级Linux发行版,它使用红帽企业级Linux中的免费源代码重新构建而成。这款重构版完全去掉了注册商标以及Binary程序包方面一个非常细微的变化。有些人不想支付一大笔钱,又能领略红帽企业级Linux;对他们来说,CentOS值得一试。此外,CentOS的外观和行为似乎与母发行版红帽企业级Linux如出一辙。CentOS使用YUM来管理软件包
Fedora
小巧的Fedora适合想尝试先进的技术,等不及程序的稳定版出来。其实,Fedora就是红帽公司的一个测试平台;产品在称为企业级发行版之前,在该平台上进行开发和测试
Kali Linux
Kali Linux是Debian的一款衍生版。Kali旨在用于渗透测试。Kali的前身是Backtrack。用于Debian的所有Binary软件包都可以安装到Kali Linux上,而Kail的魅力或威力就来自于此。此外,支持Debian的用户论坛为Kali加分不少。Kali随带许多的渗透测试工具,无论是wifi、数据库还是其他任何工具,都设计成立马可以使用。Kali使用APT来管理软件包
毫无疑问,Kali Linux是一款渗透测试工具,或者是文明黑客青睐的操作系统
6.os概念,定位
使计算机更好用,这是操作系统的根本要义
使用xshell远程登录Linux
查看Linux主机ip
在终端下敲ifconfig指令,查看到ip地址
使用xshell登录主机
在xshell终端下敲ssh[ip]
如果网络通畅,将会提示输入用户名密码。输入即可正确登录
xshell下的复制粘贴
复制:ctrl+insert
粘贴:shift+insert
Linux下基本指令
ls指令
语法:ls[选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件,将列出文件名以及其他信息
常用选项:
·-a 列出目录下的所有文件,包括以.开头的隐含文件
·-d 将目录像文件一样显示,而不是显示其下的文件。如:ls-d指定目录
·-i 输出文件的i结点的索引信息。如ls-ai指定文件
·-k 以k字节的形式表示文件的大小。ls-alk指定文件
·-l 列出文件的详细信息
·-n 用数字的UID,GID代替名称
·-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字
·-r 对目录反向排序
·-t 以时间排序
·-s 在l文件名后输出该文件的大小
·-l 一行只输出一个文件
pwd命令
语法:pwd
功能:显示用户当前所在的目录
常用选项:无
cd指令
Linux理论知识:路径的认识
· Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个结点都是目录或文件
·其中普通文件一定是目录树的叶子结点
·目录可能是叶子(空目录),也可能是路上结点
·理解路径存在的意义:树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位文件。其中任何一个结点,都只有一个父结点,所以,从根目录开始,定位指定文件,路径具有唯一性
·绝对路径:一般从/开始,不依赖其他目录的定位文件的方式
·相对路径:相对于当前用户所处目录,定位文件的目录方式
·绝对路径一般不会随着用户的路径变化而丧失唯一性,一般在特定服务的配置文件种经常被使用
·相对路径因为它的便捷性,一般在命令行中使用较多
语法:cd目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下
touch指令
Linux理论知识:文件类型的认识
语法:touch[选项]...文件...
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
常用选项:
·-a:change only the access time
·-c:change only the modification time
mkdir指令
语法:mkdir[选项]dirname...
功能:在当前目录下创建一个名为“dirname”的目录
常用选项:-p:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
rmdir指令&&rm指令
rmdir是一个与mkdir相对应的命令,mkdir是建立目录,而rmdir是删除命令
语法:rmdir[-p][dirName]
功能:删除空目录
常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连父目录一起删除
rm命令可以同时删除文件或目录
语法:rm[-f-i-r-v][dirName/dir]
适用对象:所有使用者
功能:删除文件或目录
常用选项:
-f 即使文件属性为只读,亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
man指令
Linux的命令有很多参数,我们不可能全记住,可以通过查看联机手册获取帮助
语法:man[选项]命令
常用选项
-k 根据关键字搜索联机帮助
num只在第num章节查找
-a 将所有章节的显示出来,比如man printf它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,知道所有章节都搜索完毕
解释以下:man手册分为9章
1是普通命令
2是系统调用,如open,write之类的
3是库函数,如printf,fread是特殊文件,也就是/dev下的各种设备文件
5是指文件的格式,比如passwd,就会说明这个文件中各个字段的含义
6是给游戏留的,由各个游戏自己定义
7是附件还有一些变量,比如像environ这种全局变量在这里就有说明
8是系统管理用的命令,这些命令只能由root使用,如ifconfig
cp指令
语法:cp[选项]源文件或目录 目标文件或目录
功能:复制文件或目录
说明:
cp指令用于复制文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中
常用选项
-f或-force强行复制文件或目录,不论目的文件或目录是否已经存在
-i或-ineractive覆盖文件之前先询问用户
-r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
mv指令
mv指令是move的缩写,可以用来移动文件或者将文件改名files,经常用来备份文件或者目录
语法:mv[选项]源文件或目录 目录文件或目录
功能:
1.视mv命令中第二个参数类型的不同,mv指令将文件重命名或将其移至一个新的目录中
2.当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个,它将所给的源文件或目录重命名为给定的目标文件名
3.当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移动至目标目录中
常用选项:
-f:force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i:若目标文件已经存在时,就会询问是否覆盖
cat指令
语法:cat[选项][文件]
功能:查看目标文件的内容
常用选项:
-b 对非空输出行编号,空行不做编号
-n 对输出的所有行编号
-s 不输出多行空行
more指令
语法:more[选项]
功能:more命令,功能类似cat
常用选项:
-n 指定输出行数
q 退出more
less指令
less工具也是对文件或其它输出进行分页显示的工具,应该说是Linux正统查看文件内容的工具,功能极其强大
less的用法比起more更加的有弹性,在more的时候,我们并没有办法向前面翻,只能往后面看
但若使用了less时,就可以使用[pegeup][pagedown]等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容
除此之外,在less里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
语法:less[参数]文件
功能:less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件
选项:
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n 重复前一个搜索(与/或?有关)
q quit
head指令
head与tail就像名字一样浅显易懂,它用来显示开头或结尾某个数量的文字区块,head用来显示档案的开头至标准输出中,而tail就是看档案的结尾
语法:
head[参数][文件]
功能:
head用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行
选项:
-n<行数>显示的行数
tail指令
tail命令从指定点开始将文件写到标准输出,使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail-f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容
语法:tail必要参数[文件]
功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件
选项:
-f 循环读取
-n<行数>显示行数
date指令
指定格式显示时间:date+%Y:%m:%d
用法:date [OPTION]...[+FORMAT]
1.在显示方面,使用者可以设定预显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下:
%H:小时
%M:分钟
%S:秒
%X:相当于%H:%M:%S
%d:日
%m:月份
%Y:完整年份
%F:相当于%Y-%m-%d
2.在设定时间方面
date-s设置当前时间,只有root权限才能设置,其他只能查看
date-s设置成20080523,这样会把具体时间设置成空00:00:00
date-s 01:01:01设置具体时间,不会对日期做更改
date-s“01:01:01 2008-05-23″这样可以设置全部时间
3.时间戳
时间->时间戳:date+%s
时间戳->时间:date-d@1508749502
Unix时间戳是从1970年1月1日开始所经过的秒数,不考虑闰秒
cal指令
cal指令可以用来显示公历。公历是现在国际通用的历法,又称格列历
命令格式:cal参数[年份]
功能:用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
常用选项:
-3显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天
-y 显示当前年份的日历
find指令
Linux下find命令在目录结构中搜索文件,并执行指定的操作
Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得了解
即使系统中含有网络文件系统NFS,find命令在该文件系统中同样有效,只你具有相应的权限
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间
语法:find pathname -options
功能:用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项
-name 按照文件名查找文件
其他选项需要再查,这个命令其实比较复杂
which指令
功能:搜索系统指定的命令
whereis指令
功能:用于找到程序的源、二进制文件或手册
alias指令
功能:设置命令的别名
grep指令
语法:grep[选项]搜寻字符串 文件
功能:在文件中搜索字符串,将找到的行打印出来
常用选项:
-i:忽略大小写的不同,所以大小写视为相同
-n:顺便输出行号
-v:反向选择,亦即显示出没有“搜寻字符串”内容的那一行
zip/unzip指令
语法:zip压缩文件.zip目录或文件
功能:将目录或文件压缩成zip格式
常用选项
-r:递归处理,将指定目录下的所有文件和子目录一并处理
关于rzsz
这个工具用于windows机器和远端的Linux机器通过xshell传输文件,安装完毕之后可以通过拖拽的方式将文件上传上去
sudo apt install -y lrzlz
tar指令
打包/解包,不打开它,直接看内容
语法:tar[-cxtzjvf]文件与目录
参数:
-c:建立一个压缩文件的参数指令
-x:解开一个压缩文件的参数指令
-t:查看tarfile里面的文件
-z:是否同时具有gzip的属性?亦即是否需要用gzip压缩?
-j:是否同时具有bzip2的属性?亦即是否需要用bzip2压缩
-v:压缩的过程中显示文件,这个常用,但不建议用在背景执行过程
-f:使用档名,请留意,在f之后要立即接档名,不要再加参数
-c:解压到指定目录
bc指令
bc指令可以很方便的进行浮点运算
uname-r指令
语法:uname[选项]
功能:uname用来获取电脑和操作系统的相关信息
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息
常用选项:
-a或-all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
lsb_release-a:查看操作系统版本
重要的几个热键tab,ctrl-c,ctrl-d
tab:具有命令补全和档案补齐的功能
ctrl-c:让当前的程序停掉
ctrl-d:键盘输入结束的意思
关机
语法:shutdown[选项]
-h:将系统的服务停掉后,立即关机
-r:在将系统的服务停掉之后就重新启动
-tsec:-t后面加秒数,亦即[过几秒后关机]的意思
shell命令以及运行原理
Linux严格意义上说的是一个操作系统,称之为核心,但是一般用户不能直接使用kernel
从技术角度,shell的最简单定义:命令行解释器主要包含:
将使用者的命令翻译给核心处理
同时,将核心的处理结果翻译给使用者
对比windows GUI,我们操作windows不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作
shell对于Linux,有相同的人作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户
Linux权限的概念
Linux下有两种用户:超级用户、普通用户
超级用户:可以在Linux系统下做任何事情,不受限制
普通用户:在Linux下做有限的事情
超级用户的命令提示符是#
命令:su[用户名]
功能:切换用户
Linux权限管理
1.文件访问者的分类
文件和文件目录的所有者
文件和文件目录的所有者所在的组的用户
其他用户
2.文件类型和访问权限
文件类型:
d:文件夹
-:普通文件
l:软链接
b:块设备文件
p:管道文件
c:字符设备文件
s:套接口文件
基本权限:
读:对文件来说,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写:对文件而言,具有修改文件内容的权限;对目录看来说具有删除移动目录内文件的权限
执行:对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
——:表示不具有该项权限
文件权限值的表示方法
字符表示方法
8进制数值表示方法
文件访问权限的相关设置方法
1.chmod
功能:设置文件的访问权限
格式:chmod[参数]权限 文件名
常用选项:
R->递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
chmod命令权限值的格式:
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其他用户
a:所有用户
2.chown
功能:修改文件的拥有者
格式:chown[参数]用户名 文件名
3.chgrp
功能:修改文件或目录的所属组
格式:chgrp[参数]用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
4.umask
功能:
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是msk,则实际创建出来的文件权限是:mask&~umask
格式:umask权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002
file指令
功能说明:辨别文件类型
语法:file[选项]文件或目录
常用选项:
-c:详细显示指令执行过程,便于排错或分析程序执行的情形
-z:尝试去解读压缩文件的内容
使用sudo分配权限
(1)修改文件分配文件
格式:接受权限的用户登陆的主机=(执行命令的用户)命令
(2)使用sudo调用授权的命令
sudo -u用户名 命令
目录的权限
可执行权限:如果没有可执行权限,则无法cd到目录中
可读权限:如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容
可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件
关于权限的总结
目录的可执行权限是表示可否在目录下执行命令
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目录,即使目录仍然有-r读权限
而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档
更多推荐



所有评论(0)