1、Linux背景
在谈Linux之前我们必先谈谈Unix !!!
1、Unix发展的历史
●1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。
●1969-1970年,AT&T的贝尔实验室研究人员Ken Tompson和Dennis Ritchie,在采用很多Multics特点的基础上开发了UINX系统。它运行在小型机上,满足了系统对科研环境的要求。从产生开始,UNIX就是一个有价值的、高效的、多用户和多任务的操作系统。
●UNIX从满足个人的设计需求开始,逐步成长为由许多不同开发商所支持的标准软件产品。第一个UNIX版本是免费给许多知名大学的计算机系使用的。
●1972年,贝尔实验室开始发放商业版本,并且给不同的用户授权使用这个系统,使用者之一是加州大学伯克莱分校的计算机系。伯克莱给系统增加了许多新的特点,后来成为了标准。
●1975年伯克莱由下属部门BSD发行了自己的UNIX版本。UNIX的BSD版本成为AT&T贝尔实验室版本的主要竞争者,而其它的独立开发出的UNIX版本也开始萌生。
●1980年微软公司开发了叫做Xenix的UNIX PC版本。AT&T发行了第一个商业版本。名叫System Ⅲ,后来被成为对商用软件产品良好支持的System Ⅴ所替代。
●同时UNIX的BSD版本不断发展,在70年代末期,BSD UNIX成为了国防部的高科技研究机构科研项目的基础。其结果,伯克莱发行了一个叫做BSD Release 4.2的有效版本。
●它包括了高级的文件管理器和基于TCP/IP网络协议的网络特点。现在TCP/IP被Internet所使用。BSD Release4.2被许多厂商所采用,例如SUN Microsystem。
●UNIX不同版本的出现导致了UNIX标准的需要,软件开发商不知道他们的程序运行在哪些版本上比较合适。
●到80年代中期,两个竞争的标准出现了,一个是基于AT&T的UNIX版本,另一个是BSD版本。在今天的书店里你能发现分别适用于这两个版本的不同的UNIX的书,一些是System V,另一些集中在BSD UNIX。AT&T建立了一个叫UNIX系统实验室的新组织,它的作用就是综合UNIX的不同版本,集中开发一个标准系统。
●1991年,UNIX综合实验室综合了System V Release3,SUN OS和Xenix的所有特点,发行了System VRelease 4。为了与System V Release 4 竞争,一些其它公司,如IBM和惠普Open SoftwareFoundation(OSF)去产生自己的UNIX标准版本,继而出现了两个标准商业版本OSF版本和System Release4。
●1993年,AT&T把它的UNIX转卖给Novell公司。UNIX系统实验室成为了Novell的UNIX系统小组的一部分。Novell发行了基于System V Release 4的自己的UNIX版本UNIXWare,它可以和Novell公司的Netware系统相联。SUN公司已经把System V Release 4 融进了它的SUN OS,发行了Solaris。两个相互竞争的UNIX使用的图形用户界面(一个叫Motif,另一个叫Openlook),已经合并为一个新的工作平台标准,叫做通用平台环境(CDE)。
Unix Architecture
The below-shown diagram will explain the architecture of the Unix.
2、Linux发展历史
●1991年10月5日,赫尔辛基大学的一名研究生Linus Benedict Torvalds在一个Usenet新闻组
(comp.os.minix)中宣布他编制出了一种类似UNIX的小操作系统,叫Linux。新的操作系统是受到另一个UNIX的小操作系统——Minix的启发,该系统是由一名叫Andrew S Tanenbaum的教师开发的。读者也许猜想所发布的这个系统应该是Linux的0.01版本,实际上不是这样。真正的Linux 0.01版本并没有被发布,原因是0.01版本不实用。Linus仅仅在第一个Linux的FTP站点(ftp://nic.funet.fi)上提供过这个版本的的源代码。
●Torvalds于10月5日发布的这个Linux版本被称为0.02版,它能够运行GNU Bourne Again Shell(bash)和GNU
的C编译程序(gcc)以及为数不多的其它语言。Torvalds绝对没有想到他设想的一种能够针对高级业余爱好者和黑客们的操作系统已经产生,这就是人们所称的Linux。
●Linux发布时的版本是0.02,后来又有0.03版,然后又跳到0.10版。因为世界各地越来越多的程序员都开始开发Linux,它已经达到0.95版。这就意味着正是公布1.0版本的时间已经为期不远了。正式的1.0版本是在1994年公布的。
Linux - 维基百科,自由的百科全书 (wikipedia.org)https://en.wikipedia.org/wiki/Linux
1、开源
●Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。
●GNU通用公共许可协议(GNU General Public License,简称GNU GPL或GPL),是一个广泛被使用的自由软件许可协议条款,最初由理查德斯托曼为GNU计划而撰写,GPL给予了计算机程自由软件的定义, 任何基于GPL软件开发衍生的产品在发布时必须采用GPL许可证方式,且必须公开源代码。
●Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。随着Linux操作系统飞速发展,各种集成在Linux上的开源软件和实用工具也得到了应用和普及,因此,Linux也成为了开源软件的代名词。
2、Linux官网
The Linux Kernel Archiveshttps://www.kernel.org/
3、发行版本
●Debian
Debian 运行起来极其稳定,这使得它非常适合用于服务器。 debian这款操作系统无疑并不适合新手用户,而是适合系统管理员和高级用户。
●Ubuntu
Ubuntu 是Debian的一款衍生版,也是当今最受欢迎的免费操作系统。Ubuntu侧重于它在这个市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。Ubuntu是新手用户肯定爱不释手的一款操作系统。
●红帽企业级Linux
红帽企业级Linux 是第一款面向商业市场的Linux发行版。它有服务器版本,支持众多处理器架构,包括x86和x86_64。红帽公司通过课程红帽认证系统管理员/红帽认证工程师(RHCSA/RHCE),对系统管理员进行培训和认证。
●CentOS
CentOS 是一款企业级Linux发行版,它使用红帽企业级Linux中的免费源代码重新构建而成。这款重构版完全去掉了注册商标以及Binary程序包方面一个非常细微的变化。有些人不想支付一大笔钱,又能领略红帽企业级Linux;对他们来说,CentOS值得一试。此外,CentOS的外观和行为似乎与母发行版红帽企业级Linux如出一辙。 CentOS使用YUM来管理软件包。
●Fedora
Fedora 小巧的Fedora适合那些人:想尝试最先进的技术,等不及程序的稳定版出来。其实,Fedora就是红帽公司的一个测试平台;产品在成为企业级发行版之前,在该平台上进行开发和测试。Fedora是一款非常好的发行版,有庞大的用户论坛,软件库中还有为数不少的软件包。
●Kali Linux
Kali Linux 是Debian的一款衍生版。Kali旨在用于渗透测试。Kali的前身是Backtrack。用于Debian的所有Binary软件包都可以安装到Kali Linux上,而Kali的魅力或威力就来自于此。此外,支持Debian的用户论坛为Kali加分不少。Kali随带许多的渗透测试工具,无论是Wifi、数据库还是其他任何工具,都设计成立马可以使用。Kali使用APT来管理软件包。
毫无疑问,Kali Linux是一款渗透测试工具,或者是文明黑客(我不想谈论恶意黑客)青睐的操作系统。
●... ...
4. Os概念,定位
2、 XShell 远程登录 Linux
在连接使用XShell之前我们可以先安装好自己的虚拟机(版本根据实际情况选择)或者选择云服务,小编这里用的是 腾讯云CentOS轻量应用服务器。
腾讯云 产业智变·云启未来 - 腾讯 (tencent.com)https://cloud.tencent.com/
1、下载安装 XShell
XShell 是一个远程终端软件.
下载官网:
Page not found - NetSarang Websitehttps://www.netsarang.com/products/xsh_overview.html
下载安装的时候可以选择 "home/school" 则为免费版本.
2、查看 Linux 主机 IP
1、在终端下敲 ifconfig 指令, 查看到IP地址.
2、云服务器可以在对应的平台查看
3、使用 XShell 登陆主机
在 XShell 终端输入
ssh [ip]
IP 为刚才看到的 ifconfig 结果或者对应的服务器IP
如果网络畅通, 将会提示输入用户名密码. 输入即可正确登陆。
4、XShell 下的复制粘贴
复制: ctrl + insert (有些 insert 需要配合 fn 来按)
粘贴: shift + insert
ctrl + c / ctrl + v 是不行的.
3、Linux下基本指令
01. whoami 指令
语法: whoami
功能:查看当前在使用Linux系统的人是谁
用户区别:
在Linux环境下,有两种主要类型的用户:root用户和普通用户。
1. root用户(超级用户):
- root用户是系统的管理员,拥有对系统的完全控制权限。
- root用户拥有对系统中所有文件和进程的访问和修改权限。
- root用户可以安装、配置软件,管理用户账户,修改系统设置等。
2. 普通用户:
- 普通用户是系统中除root用户以外的所有用户。
- 普通用户只拥有对自己家目录及其他经过授权的文件和目录的访问和修改权限。
- 普通用户无法对系统的关键部分进行更改,比如修改系统配置、安装软件等。
总的来说,root用户拥有系统的最高权限,可以进行对系统的任何操作,而普通用户只有受限的权限,只能对自己的文件和有限的系统资源进行操作。这种权限分级的设计有助于保护系统的安全性和稳定性。
02. ls 指令
语法: ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
例如:
ls -l
常用选项:
-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 一行只输出一个文件。
03. pwd 指令
语法: pwd
功能:显示用户当前所在的目录
集合 "ls" , "pwd" 指令进行输入
当我们输入" ls -la "指令时我们会发现两个隐藏目录 " . " 和" .. "
" . " 与" .. ":
在Linux系统中, .
表示当前目录,..
表示上一级目录。这两个特殊的文件是为了方便用户在文件系统中导航和定位。它们的存在使得用户可以相对于当前目录或者上一级目录来引用其他目录或文件。例如,如果你想在当前目录下创建一个文件,你可以使用.
来表示当前目录,而如果你想访问上一级目录中的某个文件,你可以使用..
来表示上一级目录。这样的设计使得用户能够更加方便地在文件系统中进行导航和操作。
04. cd 指令
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
在Linux系统下:
路径具有唯一性:
在Linux系统中,文件系统以一种层次结构的方式组织文件和目录,形成了一棵树状结构,这被称为目录树。根目录位于最顶层,所有其他文件和目录都是其子目录或子文件。每个节点代表一个目录或文件,而路径则是描述某个节点在目录树中的位置的方式。由于每个节点的路径都是唯一的,因此可以通过路径来准确定位到目录或文件。这种结构有助于组织和管理文件系统中的所有内容,并且使得文件系统的访问和操作更加方便和高效。
文件=属性+内容:
在Linux环境下,文件被看作是其文件属性和文件内容的组合。文件属性包括了文件的权限、所有者、所属组、文件大小、创建时间、修改时间等元数据信息。这些属性决定了文件的访问权限和其他相关信息。文件内容是指文件所包含的实际数据,可以是文本、图像、音频、程序代码等。文件内容决定了文件的实际功能和所包含的信息。因此,在Linux环境下,文件可以被看作是文件属性和文件内容的组合,其中文件属性描述了文件的元数据信息,而文件内容则是文件的实际数据。
语法: cd 目录名
功能: 改变工作目录。将当前工作目录改变到指定的目录下。
常用选项:
cd .. : 返回上级目录
cd /home/litao/linux/ : 绝对路径
cd ../day02/ : 相对路径
cd ~ :进入用户家目
cd - :返回最近访问目录
家目录:
在Linux环境下,每个用户都有一个专门的目录,称为家目录(Home Directory)。当用户登录到系统时,系统会将用户定位到其家目录中。家目录通常以用户的用户名命名,位于/home
目录下,每个用户都有自己的家目录。家目录对于每个用户来说是私有的,用户可以在其中存储个人文件、文档、配置文件等。用户可以在家目录下创建子目录来组织文件,也可以在其中进行各种操作,如创建、编辑、删除文件等。此外,用户也可以在家目录下设置自己的环境变量、配置文件等,以满足个性化的需求。家目录在Linux系统中扮演着重要的角色,它为每个用户提供了一个私有的工作空间,使得用户能够方便地管理自己的文件和个人设置。
05. touch指令
语法: touch [选项]... 文件...
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项:
-a 或--time=atime或--time=access或--time=use只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
06. mkdir指令
语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,
加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
举例:
mkdir –p test/test1 : 递归建立多个目录
07. which指令
在谈which指令之前我们要重新认识一下指令。
指令的本质都是程序 :
在Linux环境下,指令的本质都是程序。在Linux中,几乎所有的操作都可以通过执行相应的指令(也称为命令)来完成,比如创建文件、复制文件、安装软件等。这些指令实际上是由系统提供的可执行程序,它们被存储在系统的可执行路径中,比如 /bin 、/usr/bin 等目录下。这些指令程序通常是用C语言、Shell脚本或其他编程语言编写而成的,它们被编译成可执行文件,然后被放置在系统的可执行路径中,以便用户可以随时调用它们。当用户在终端中输入一个指令时,实际上是在调用对应的可执行程序。由于在Linux中一切都是文件的概念,因此指令程序也是以文件的形式存在的。用户可以通过查看相应的目录,比如 /bin、/usr/bin 等,来了解系统中存在哪些可执行程序,也可以通过查看这些程序的源代码来了解它们的具体实现。因此,可以说在Linux环境下,指令的本质就是程序,它们是系统提供的用于完成特定任务的可执行程序。
语法:mkdir 目录名或者指令
功能:要求系统打印出我所指定的指令名称,在系统的所在路径
1. alias指令:
在Linux中,alias指令用于为常用的命令设置自定义别名。通过alias指令,用户可以将一个长的、复杂的命令或一系列命令设置为一个简短的、易于记忆的别名,以方便在终端中使用。
alias指令的语法格式如下:
alias 别名='命令'
其中,别名是用户自定义的一个简短的名称,命令是需要设置别名的长命令或一系列命令。例如,如果用户经常使用" ls -l "命令来查看文件列表,可以使用alias指令将其设置为一个别名 " ll ",如下所示:
alias ll='ls -l'
这样,用户在终端中输入" ll "时,实际上是执行" ls -l "命令,输出的结果与直接执行" ls -l "命令相同。用户可以通过" alias "命令查看当前设置的所有别名,也可以使用" unalias "命令取消已经设置的别名。需要注意的是,alias指令设置的别名只对当前的终端会话有效,如果用户需要在每次登录后都自动加载别名设置,可以将其添加到 ~/.bashrc 文件中。
08. tree,man,nano指令
1. tree指令
语法:tree 目录名
功能:树状形式显示目录结构
在使用tree指令之前我们先要安装好该指令程序:
yum install -y tree
2. man指令
语法:man [选项] 命令
功能:树状形式显示目录结构
常用选项:
-k 根据关键字搜索联机帮助
num 只在第num章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,
用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
解释一下,man手册分为8章
第一章:是普通的命令
第二章:是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
第三章:是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
第四章:是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
第五章:是给游戏留的,由各个游戏自己定义
第六章:是附件还有一些变量,比如向environ这种全局变量在这里就有说明
第七章:是系统管理用的命令,这些命令只能由root使用,如ifconfig
在使用man指令之前我们先要安装好该指令程序:
yum -y install man-pages
3. nano指令
语法:nano 可选参数...文件
功能:nano指令是一个文本编辑器,用于在终端中编辑文本文件。
在使用nano指令之前我们先要安装好该指令程序:
yum -y install nanno
在使用tree指令或者其它指令时可能会出现输出异常或者各种异常,那么我们就需要懂得如何处理这些异常的情况,在Linux系统下,可以使用以下方法来进行异常终止(即强制终止)正在运行的程序或进程。
4. 异常终止:
1. 使用Ctrl+C键盘快捷键:如果在终端中执行的程序或命令出现了问题,可以使用Ctrl+C组合键来发送中断信号,从而终止当前正在运行的程序。这通常适用于在终端中执行的交互式命令或程序。
2. 使用kill命令:可以使用kill命令向指定的进程发送信号,从而终止该进程。kill命令的基本语法如下:
kill [信号] 进程ID
通常,可以使用`kill -9 进程ID`来发送SIGKILL信号,这是一种无法被捕获或忽略的信号,可以强制终止进程。
3. 使用pkill命令:pkill命令可以根据进程的名称来终止匹配的进程。例如,`pkill -9 进程名`可以强制终止指定名称的进程。
需要注意的是,强制终止正在运行的程序可能会导致数据丢失或系统不稳定,因此应该谨慎使用。在终止进程之前,最好先尝试正常的关闭或结束程序的方法,比如使用程序自带的退出命令或关闭窗口。
09. yum 指令
在Linux系统中,yum指令是用于管理软件包的工具,它可以用来安装、更新、删除和查询软件包。yum指令通常用于基于RPM包管理系统的Linux发行版,如Red Hat Enterprise Linux(RHEL)、CentOS和Fedora等。
yum指令的一些常见用法和选项:
1. 安装软件包:
yum install package_name
这个命令会从yum仓库中安装指定的软件包。
2. 更新软件包:
yum update package_name
这个命令会更新指定的软件包到最新版本。
3. 删除软件包:
yum remove package_name
这个命令会从系统中移除指定的软件包。
4. 查询软件包信息:
yum info package_name
这个命令会显示指定软件包的详细信息,包括版本、大小、依赖关系等。
5. 搜索软件包:
yum search keyword
这个命令会在yum仓库中搜索包含指定关键字的软件包。
6. 列出所有可用的软件包:
yum list
这个命令会列出yum仓库中所有可用的软件包。
这些是yum指令的一些常见用法和选项,通过yum指令,用户可以方便地管理系统中的软件包,实现安装、更新和删除等操作。在yum命令中,-y 选项表示在执行yum操作时自动回答"是"。通常,当你使用yum install或yum remove等命令时,yum会提示你是否要继续操作,使用-y选项可以自动回答"是",而不需要手动确认。
10. rmdir指令 && rm 指令:
rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。
1. rmdir指令
语法:rmdir [-p][dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
2. rm 指令
rm命令可以同时删除文件或目录
语法:rm [-f-i-r-v][dirName/dir]
适用对象:所有使用者
功能:删除文件或目录
常用选项:
-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
11. cp指令
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在。
-i 或 --interactive 覆盖文件之前先询问用户。
-r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的
形态,不属于目录或符号链接,则一律视为普通文件处理。
-R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理。
12. mv指令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
语法: mv [选项] 源文件或目录 目标文件或目录
功能: 1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
Home - IBM Developerhttps://developer.ibm.com/
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,
不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理
13. cat指令
语法:cat [选项][文件]
功能: 查看目标文件的内容
常用选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
14. more指令
语法:more [选项][文件]
功能:more命令,功能类似 cat
常用选项:
-n 对输出的所有行编号
q 退出more
15. less指令
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
语法: less [参数] 文件
功能:less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动, 而且less在查看之前不会加载整个文件。
常用选项:
-i: 忽略搜索时的大小写
-N: 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n: 重复前一个搜索(与 / 或 ? 有关)
N: 反向重复前一个搜索(与 / 或 ? 有关)
q: quit
16. head指令&&tail指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然就是看档案的结尾。
1. head指令
语法: head [参数]... [文件]
功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
常用选项:
-n<行数> 显示的行数
2. tail指令
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.
语法: tail[必要参数][选择参数][文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
常用选项:
-f 循环读取
-n<行数> 显示行数
举例:(简单讲解重定向和管道)
有一个文件共有100行内容,请取出第50行内容<br>
seq 1 100 > test # 生成1到100的序列装入test
方法1:head -n50 test > tmp #将前50行装入临时文件tmp
tail -n1 tmp #得到中建行
方法2:head -n50 test | tail -n1
17. 时间相关的指令
date显示
date 指定格式显示时间: date +%Y:%m:%d
date 用法:date [OPTION]... [+FORMAT]
1.在显示方面
使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下 :
%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
2.在设定时间方面
date -s //设置当前时间,只有root权限才能设置,其他只能查看。
date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
date -s “01:01:01 20080523″ //这样可以设置全部时间
date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
date -s “20080523 01:01:01″ //这样可以设置全部时间
3.时间戳
时间->时间戳:date +%s
时间戳->时间:date -d@1508749502
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
18. cal指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
命令格式: cal [参数][月份][年份]
功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
常用选项:
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
举例:
Cal –y 2018
19. find指令
1、Linux下find命令在目录结构中搜索文件,并执行指定的操作。
2、Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
3、即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
4、在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。
语法: find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
-name 按照文件名查找文件。
20. grep指令
linux grep命令详解 - ggjucheng - 博客园 (cnblogs.com)http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html语法: grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
21. zip/unzip指令
语法: zip 压缩文件.zip 目录或文件
功能: 将目录或文件压缩成zip格式
常用选项:
-r 递 归处理,将指定目录下的所有文件和子目录一并处理
举例:
将test目录压缩:zip test.zip test/*
解压到tmp目录:unzip test.zip -d /tmp
4. 结语
希望通过本文的介绍,您已经了解了Linux操作系统的一些基本知识和常用指令。Linux是一个非常强大和具有灵活性的操作系统,可以广泛应用于服务器、嵌入式设备、移动设备等领域。学习Linux也是IT从业人员必备的一项技能。如果您想深入了解Linux操作系统,可以进一步学习Linux系统管理、网络管理、安全管理等相关知识。
关于Linux其它的指令操作和内容后续会持续更新~~~
喜欢小编文章的可以 三连+关注 我们下期见!!!