Linux初始及常见指令使用
1.Linux介绍
1.1 概念
Linux是⼀种⾃由和开放源代码的类UNIX操作系统,严格来讲,Linux只是操作系统内核本⾝,但通常采⽤“Linux内核”来表达该意思。⽽Linux则常⽤来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实⽤⼯具。
1.2 Linux版本介绍
Linux的版本从商业和技术两个角度来分析
技术方面:Linux有许多内核的版本,如下图

对于6.12.40这个版本,6代表主版本号,12代表次版本号,对于次版本号哦书代表稳定版本,奇数代表测试版本,而后面40代表修订次数
商业方面:
DebianDebian运⾏起来极其稳定,这使得它⾮常适合⽤于服务器。 debian这款操作系统⽆疑并不适合新⼿⽤⼾,⽽是适合系统管理员和⾼级⽤⼾。UbuntuUbuntu是Debian的⼀款衍⽣版,也是当今最受欢迎的免费操作系统。Ubuntu侧重于它在这个市场的应⽤,在服务器、云计算、甚⾄⼀些运⾏Ubuntu Linux的移动设备上很常⻅。Ubuntu是新⼿⽤⼾肯定爱不释⼿的⼀款操作系统。红帽企业级Linux这是第⼀款⾯向商业市场的Linux发⾏版。它有服务器版本,⽀持众多处理器架构,包括x86和 x86_64。红帽公司通过课程红帽认证系统管理员/红帽认证⼯程师(RHCSA/RHCE),对系统管 理员进⾏培训和认证。CentOSCentOS是⼀款企业级Linux发⾏版,它使⽤红帽企业级Linux中的免费源代码重新构建⽽成。这款重构版完全去掉了注册商标以及Binary程序包⽅⾯⼀个⾮常细微的变化。有些⼈不想⽀付⼀⼤笔钱,⼜能领略红帽企业级Linux;对他们来说,CentOS值得⼀试。此外,CentOS的外观和⾏为似乎与⺟发⾏版红帽企业级Linux如出⼀辙。 CentOS使⽤YUM来管理软件包。Fedora⼩巧的Fedora适合那些⼈:想尝试最先进的技术,等不及程序的稳定版出来。其实,Fedora就是红帽公司的⼀个测试平台;产品在成为企业级发⾏版之前,在该平台上进⾏开发和测试。Fedora是⼀款⾮常好的发⾏版,有庞⼤的⽤⼾论坛,软件库中还有为数不少的软件包。Kali LinuxKali Linux是Debian的⼀款衍⽣版。Kali旨在⽤于渗透测试。Kali的前⾝是Backtrack。⽤于Debian的所有Binary软件包都可以安装到Kali Linux上,⽽Kali的魅⼒或威⼒就来⾃于此。此外,⽀持Debian的⽤⼾论坛为Kali加分不少。Kali随带许多的渗透测试⼯具,⽆论是Wifi、数据库还是其他任何⼯具,都设计成⽴⻢可以使⽤。Kali使⽤APT来管理软件包。毫⽆疑问,Kali Linux是⼀款渗透测试⼯具,或者是⽂明⿊客⻘睐的操作系统。
2.使用Linux
如何使用Linux,此时就要用到Xshell这个软件,这里不说明安装Xshell以及远程登录 Linux,网上有许多教程,对于环境的安装,虽然有虚拟机,但是这里还是推荐利用云服务器进行配置,对于云服务器的配置教程这里也不说明,,网上同样许多教程
3.相关Linux的知识及指令
3.1路径
Linux系统中,磁盘上的⽂件和⽬录被组成⼀棵⽬录树,每个节点都是⽬录或⽂件其中普通⽂件⼀定是⽬录树的叶⼦节点⽬录可能是叶⼦(空⽬录), 也可能是路上节点理解路径存在的意义: 树状组织⽅式,都是为了保证快速定位查找到指定的⽂件,⽽定位⽂件就需要具有唯⼀性的⽅案来进⾏定位⽂件。其中任何⼀个节点,都只有⼀个⽗节点,所以,从根⽬ 录开始,定位指定⽂件,路径具有唯⼀性绝对路径:对于Linux来说 / 即根目录,因此⼀般从 / 开始,不依赖其他⽬录的定位⽂件的⽅式相对路径:相对于当前⽤⼾所处⽬录,定位⽂件的路径⽅式绝对路径⼀般不会随着⽤⼾的路径变化⽽丧失唯⼀性,⼀般在特定服务的配置⽂件中经常被使⽤相对路径因为它的便捷性,⼀般在命令⾏中使⽤较多
在liunx中目录==文件,文件=内容+属性
3.2 ls 指令
语法: ls [选项] [⽬录或⽂件]功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信息。
常⽤选项:
-a 列出⽬录下的所有⽂件,包括以 . 开头的隐含⽂件。-d 将⽬录像⽂件⼀样显⽰,⽽不是显⽰其下的⽂件。 如:ls ‒d 指定⽬录-i 输出⽂件的 i 节点的索引信息。 如 ls ‒ai 指定⽂件-k 以 k 字节的形式表⽰⽂件的⼤⼩。ls ‒alk 指定⽂件-l 列出⽂件的详细信息-n ⽤数字的 UID,GID 代替名称。 (介绍 UID, GID)-F 在每个⽂件名后附上⼀个字符以说明该⽂件的类型,“*”表⽰可执⾏的普通⽂件;“/”表⽰⽬录;“@”表⽰符号链接;“|”表⽰FIFOs;“=”表⽰套接字(sockets)。(⽬录类型识别)-r 对⽬录反向排序-t 以时间排序-s 在l⽂件名后输出该⽂件的⼤⼩。(⼤⼩排序,如何找到⽬录下最⼤的⽂件)-R 列出所有⼦⽬录下的⽂件。(递归)-1 ⼀⾏只输出⼀个⽂件。
首先来看基本的ls指令
主要就是列出⽂件名
-a
以 . 开头的文件都是隐藏文件,ls -a就会显示出隐藏文件
-l
会列出⽂件的详细信息
其他的就不演示了,这里还可以多个选项一起使用,并且使用的顺序可以不同
这两句指令达到的效果是一样的
3.3 pwd 命令
语法: pwd功能:显⽰⽤⼾当前所在的⽬录
对于用户,要想知道当前所在的目录在哪,就可以用pwd

3.4 cd 指令
语法: cd ⽬录名功能:改变⼯作⽬录。将当前⼯作⽬录改变到指定的⽬录下

对于cd,也可以使用相对路径和绝对路径

cd ..就是返回到上级目录

cd ~返回到家目录

cd -直接可以回退到最近⼀次所处的⽬录

3.5 touch 指令
语法: touch [选项] ⽂件功能:touch命令参数可更改⽂档或⽬录的⽇期时间,包括存取时间和更改时间,或者新建⼀个不存在的⽂件。

这里只叙述能够创建一个普通文件,对于一个目录的文件的创建就需要mkdir指令
3.6 mkdir 指令
语法: mkdir [选项] dirname功能:在当前⽬录下创建⼀个名为 “dirname”的⽬录
常⽤选项:
-p/--parents: 可以是⼀个路径名称。此时若路径中的某些⽬录尚不存在,加上此选项后,系统将⾃动建⽴好那些尚不存在的⽬录,即⼀次可以建⽴多个⽬录

-p连续创建多个目录

这里tree指令作用是⼀个递归以树状结构显⽰指定⽬录的命令
对于一个文件怎么区分是普通文件还是目录

对于一个目录,前面就是d开头,对于一个普通文件就是以 - 开头
3.7 rmdir 指令 && rm 指令
rmdir是⼀个与mkdir相对应的命令,mkdir是建⽴⽬录,⽽rmdir是删除命令语法: rmdir [选项] [文件名]适⽤对象:具有当前⽬录操作权限的所有使⽤者功能:删除空⽬录
常⽤选项:
-p当⼦⽬录被删除后如果⽗⽬录也变成空⽬录的话,就连带⽗⽬录⼀起删除。
rm 命令可以同时删除⽂件或⽬录语法: rm [选项] [文件名]适⽤对象:所有使⽤者功能:删除⽂件或⽬录
常⽤选项:
-f 即使⽂件属性为只读(即写保护),亦直接删除-i 删除前逐⼀询问确认-r 删除⽬录及其下所有⽂件

对于删除一般用rm指令
3.8 man 指令
Linux的命令有很多参数,不可能全记住,可以通过查看联机⼿册获取帮助语法: man [选项] 命令
常⽤选项
-k 根据关键字搜索联机帮助num 只在第num章节查找-a 将所有章节的都显⽰出来,⽐如 man printf 它缺省从第⼀章开始搜索,知道就停⽌,⽤a选项,当按下q退出,他会继续往后⾯搜索,直到所有章节都搜索完毕
3.9 cp 指令
语法: cp [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录功能: 复制⽂件或⽬录
说明:
cp指令⽤于复制⽂件或⽬录 ,如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存在的⽬录,则它会把前⾯指定的所有⽂件或⽬录复制到此⽬录中
常⽤选项
-f 或 --force 强⾏复制⽂件或⽬录, 不论⽬的⽂件或⽬录是否已经存在-i 或 --interactive 覆盖⽂件之前先询问⽤⼾-r 递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符号链接,则⼀律视为普通⽂件处理

此时text1.txt内的文件和text3.txt是一样的
对于多个文件拷贝

*表⽰通配符,匹配所有.txt结尾的⽂件名
如果cp的目标存在,就相当于覆盖

强制拷贝
3.10 cat指令
语法: cat [选项] [⽂件]功能: 查看⽬标⽂件的内容
常⽤选项:
-b 对⾮空输出⾏编号,空⾏不做编号-n 对输出的所有⾏编号-s 不输出多⾏空⾏

-b

3.11 more 指令
语法: more [选项]功能:more命令,功能类似 cat
常⽤选项:
-n 指定输出⾏数q 退出more


此时指定输出前5行,q键退出,或者继续输出就按回车键
对于超出一整页的文件,more之后,想要查看前面文件,不支持,只支持向后寻找
3.12 less 指令
语法: less [选项] ⽂件功能:less与more类似,但使⽤less可以随意浏览⽂件,⽽more仅能向前移动,却不能向后移动,⽽且less在查看之前不会加载整个⽂件。
选项:
-i 忽略搜索时的⼤⼩写-N 显⽰每⾏的⾏号/字符串:向下搜索“字符串”的功能?字符串:向上搜索“字符串”的功能n:重复前⼀个搜索(与 / 或 ? 有关)N:反向重复前⼀个搜索(与 / 或 ? 有关)q:quit

3.13 head和tail指令
head:
语法:head [选项] [⽂件]功能:head ⽤来显⽰档案的开头⾄标准输出中,默认head命令打印其相应⽂件的开头10⾏
选项:
-n<⾏数> 显⽰的⾏数
用来查看一个文件从头开始的几行的数据,默认是10行
tail:
语法: tail [选项] [⽂件]功能:⽤于显⽰指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。
选项:
-f 循环读取-n<⾏数> 显⽰⾏数
用来查看一个文件从末尾开始的几行的数据,默认是10行


3.14 grep 指令
语法: grep [选项] 搜寻字符串 ⽂件功能:在⽂件中搜索字符串,将找到的⾏打印出来
常⽤选项:
-i :忽略⼤⼩写的不同,所以⼤⼩写视为相同-n :顺便输出⾏号-v :反向选择,亦即显⽰出没有 '搜寻字符串' 内容的那⼀⾏

3.15 date指令
3.15.1 date使用
指定格式显⽰时间: date +%Y:%m:%d⽤法: date [OPTION]... [+FORMAT]
选项
%H : ⼩时(00..23)%M : 分钟(00..59)%S : 秒(00..61)%X : 相当于 %H:%M:%S%d : ⽇ (01..31)%m : ⽉份 (01..12)%Y : 完整年份 (0000..9999)%F : 相当于 %Y-%m-%d

这里 / _ : 这些格式可以自己指定
3.15.2 时间戳
Unix时间戳(英⽂为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1⽉1⽇(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒
时间->时间戳:date +%s时间戳->时间:date -d@时间戳

3.16 cal 指令
命令格式: cal 参数 [年份]功能:⽤于查看⽇历等时间信息,如只有⼀个参数,则表⽰年份(1-9999),如有两个参数,则表⽰⽉份和年份
常⽤选项:
-3 显⽰系统前⼀个⽉,当前⽉,下⼀个⽉的⽉历-j 显⽰在当年中的第⼏天(⼀年⽇期按天算,从1⽉1号算起,默认显⽰当前⽉在⼀年中的天数)-y 显⽰当前年份的⽇历

3.17 find 指令
语法: find pathname -options功能:⽤于在⽂件树中查找⽂件,并作出相应的处理(可能访问磁盘)
常⽤选项
-name 按照⽂件名查找⽂件由于这个命令其实⽐较复杂,其他选项不做叙述

3.18 whereis 指令
功能:⽤于找到程序的源、⼆进制⽂件或⼿册
3.19 which指令
功能:搜索系统指定的命令

这里发现命令就是一个文件
3.20 alias 指令
功能:设置命令的别名

不过这里只是暂时的,当系统结束时,重新启动别名就会消失
这里推荐一个比较有用的别名 ll

ll 指令就是 ls -l 的别名,但它是永久的,非常方便
3.21 mv 指令
mv命令是move的缩写,可以⽤来移动⽂件或者将⽂件改名(move (rename) files,经常⽤来备份⽂件或者⽬录语法: mv [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录
常⽤选项:
-f :force 强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖-i :若⽬标⽂件 (destination) 已经存在时,就会询问是否覆盖!
当第一个参数和第⼆个参数类型都是普通文件时,改变文件名称

当第一个参数和第⼆个参数类型都普通文件时,同时第二个参数名称在当前目录下存在,达成覆盖的效果

当第一个参数是普通文件时,第⼆个参数类型是目录时,就会移动普通文件

当第一个参数和第⼆个参数类型都是目录时,同时第二个参数不存在时,就会改变目录名称

当第一个参数和第⼆个参数类型都是目录时,但是第二个参数存在时,就会把第二个参数目录下的文件移动至第一个参数目录内

3.22 zip/unzip 指令
zip:
语法: zip [选项] 压缩⽂件.zip ⽬录或⽂件功能:将⽬录或⽂件压缩成zip格式
常⽤选项
-r:递归处理,将指定⽬录下的所有⽂件和⼦⽬录⼀并处理

unzip
语法: unzip 压缩⽂件.zip -d ⽬录功能:将⽬录或⽂件解压到指定目录

3.23 tar 指令
打包/解包,不打开它,直接看内容语法:压缩: tar [选项] 压缩⽂件.tgz ⽬录或⽂件解压: tar [选项] 压缩⽂件.tgz (-C 目录)
选项:
-c :建⽴⼀个压缩⽂件的参数指令(create 的意思);-x :解开⼀个压缩⽂件的参数指令!-t :查看 tarfile ⾥⾯的⽂件!-z :是否同时具有 gzip 的属性?亦即是否需要⽤ gzip 压缩?-j :是否同时具有 bzip2 的属性?亦即是否需要⽤ bzip2 压缩?-v :压缩的过程中显⽰⽂件!这个常⽤,但不建议⽤在背景执⾏过程!-f :使⽤档名,请留意,在 f 之后要⽴即接档名,不要再加参数!-C : 解压到指定⽬录
压缩文件

解压文件

解压文件到指定目录

3.24 rz/sz
这个⼯具⽤于 windows 机器和远端的 Linux 机器通过 XShell 传输⽂件
rz
windows的文件传输到Linux
sz 压缩包
Linux的文件传输到windows
3.22 bc指令
bc命令可以很⽅便的进⾏浮点运算,就相当与在Linux打开了一个计算机

ctrl + C 可以退出
3.25 uname ‒r 指令
语法:uname [选项]功能: uname⽤来获取电脑和操作系统的相关信息。补充说明:uname可显⽰linux主机所⽤的操作系统的版本、硬件的名称等基本信息。
常⽤选项:
-a或‒all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称lsb_release -a:查看操作系统版本

3.26 常见的⼏个热键
[Tab]按键---具有『命令补全』和『档案补⻬』的功能
说明:对于想要查找以某个开头的命令有多少时,可以快速摁两下[Tab]

[Ctrl]-c按键---让当前的程序『停掉』,终止异常任务
[Ctrl]-d按键---退出当前用户
[Ctrl]-r按键---搜索历史命令
3.27 shutdown命令
语法:shutdown [选项]
常⻅选项:
-h:将系统的服务停掉后,⽴即关机。-r:在将系统的服务停掉之后就重新启动-t sec:-t 后⾯加秒数,亦即『过⼏秒后关机』的意思
4. 重定向操作及管道操作
4.1 echo指令
语法:echo '字符串'
功能:直接在终端输出字符串
4.2 输出重定向
来看下面这段命令
4.3 追加重定向
4.4 输入重定向
对于cat后面不跟文件时,默认从键盘文件读取,输入什么,打印什么
这里<就是输入重定向,cat从tmp.txt文件中读取
这里虽然使用没有区别,但是对于读取是有区别的,这里由于牵扯概念较多,不做叙述
4.5 管道操作
上面已经了解过tail和head命令,当要取一个文件的中间行的内容如何取?
管道操作理解为连续的命令
5.shell命令以及运⾏原理
Linux严格意义上说的是⼀个操作系统,称之为“核⼼(kernel)“ ,但⼀般⽤⼾,不能直接
使⽤kernel。⽽是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。
从技术⻆度,Shell的最简单定义:命令⾏解释器(command Interpreter)主要包含:
将使⽤者的命令翻译给核⼼(kernel)处理,同时,将核⼼的处理结果翻译给使⽤者。
对⽐windows GUI,操作windows 不是直接操作windows内核,⽽是通过图形接⼝,点击,从
⽽完成我们的操作(⽐如进⼊D盘的操作,通常是双击D盘盘符.或者运⾏起来⼀个应⽤程序)。
shell 对于Linux,有相同的作⽤,主要是对指令进⾏解析,解析指令给Linux内核。反馈结果在
通过内核运⾏出结果,通过shell解析给⽤⼾。
