目录
1.date指令
2.cal指令
3.find指令:(灰常重要) -name
4.grep指令——行文本过滤工具
5.zip/unzip指令:
6.tar指令(重要):打包/解包,不打开它,直接看内容
7.bc指令:
8.uname –r指令:
9.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
10.关机
11.shell命令以及运行原理
本节开始我们使用普通用户的账号来学习linux,不能使用root账号,本专栏后面的学习都是用普通账号
下面开始正式开始
我们先来了解一下日志
日志:在日常生活中,日志是指类似日记的日常记录。随着互联网的迅猛发展,日志被越来越多地用于指代机器数据。
机器数据通常由系统或程序自己产生。
程序开发者为监控程序执行过程,会让程序在执行完一步或几步操作后输出相应的执行结果,该结果通常会记录系统或程序在什么时间、哪个主机、哪个程序上执行了什么操作及出现了什么问题等信息,这些信息被称为机器数据,即日志(Log)。
当系统、程序或硬件设备出现原因不明的错误或故障时,通过查看日志能够快速定位错误或故障的原因日志:时间,日志等级,日志具体时间,其他时间
1.date指令
data是用来显示时间的
date 指定格式显示时间:
date +%Y:%m:%d
date 用法:
date [OPTION]... [+FORMAT]
1.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
我们看几个例子
分隔符是可以自己设置的,不能是空格
我们再看看几个例子
1.2.在设定时间方面——要root账号
- 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″ //这样可以设置全部时间
1.3.时间戳
什么是时间戳?
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数 。
时间戳是使用数字签名技术产生的数据,签名的对象包括了原始文件信息、签名参数、签名时间等信息。时间戳系统用来产生和管理时间戳,对签名对象进行数字签名产生时间戳,以证明原始文件在签名时间之前已经存在。
由此而知——时间戳只会单调递增,这在计算机世界里是非常重要的
- 时间->时间戳:date +%s
- 时间戳->时间:date -d@1508749502
- Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的 午夜)开始所经过的秒数,不考虑闰秒。
我们看看时间戳
我们也能把时间戳转换成年月日
我们加点要求
依次类推
这个是北京时间哦!!我们看上面时间戳的概念
有人就想问了,这个时间戳会溢出吗?
2.cal指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳 历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
命令格式:
cal [参数][月份][年份]
功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
常用选项:
举例:
- -3 显示系统前一个月,当前月,下一个月的月历
- -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
- -y 显示当前年份的日历
我们看看
可以直接查看任意一年全年的日历
3.find指令:(灰常重要) -name
- Linux下find命令在目录结构中搜索文件,并执行指定的操作。
- Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
- 即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
- 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系 统可能会花费很长的时间(这里是指30G字节以上的文件系统)。
语法:
find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
- -name 按照文件名查找文件。
我们使用find从家目录开始递归式的查找名字叫test.c的文件
~是家目录的意思哦
我们可以从家目录开始递归式寻找文件格式是.c的文件
依次类推,各种也能找
我们也能使用find查找指令
我们不知道具体的文件夹,我们可以像下面这样搜索
Permission denied是个问题,这个是普通用户的权限问题,系统不让你查
用root账号就不会有这种问题
find很重要,我们可以使用man find去了解更多的
which也是查找,在系统的指令路径下进行指定的搜索
/usr/bin
它是专门用来搜索指令的
whereis也是查找
它是介于find和which之间,它可以在系统特定路径下,既可以找到可执行程序,又可以找到安装包,压缩包等
4.grep指令——行文本过滤工具
grep参考文档:linux grep命令详解 - ggjucheng - 博客园 (cnblogs.com)
语法:
grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
- -i :忽略大小写的不同,所以大小写视为相同
- -n :顺便输出行号
- -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
为了演示这个效果,我们先创建一个大文件
100000个数字!!!!!!
我们使用这个去查找,要查到猴年马月
我们就可以使用grep指令了
所有带9的都给你找出来了
我们加几个9
我们继续展示一下
-v是反转的意思
-n就是打印行数
-i是忽略大小写
这个可以跟管道结合起来写
grep的用处举例
5.zip/unzip指令:
我们先来了解打包和压缩
打包和压缩
打包:
压缩
为什么要打包和压缩?
Linux充服务器的时候,也需要使用打包压缩的知识
语法:
zip 压缩文件.zip 目录或文件
功能: 将目录或文件压缩成zip格式
常用选项:
- -r : 递归处理,将指定目录下的所有文件和子目录一并处理
我们先做准备
我们直接把这个d1打包
在此之前,我们要确保我们的系统配置了zip
要去root账号里安装哦!!!!
sudo yum install zip
这个是安装zip指令的安装指令
我们当前在普通用户,怎么快速的切换root账号?
很简单,注意要输入密码
我们怎么退回去普通用户呢?
我们把它放当上级目录里去
我们现在开始将它解压
我们解压出来的只有d1这个文件夹,它麾下的目录全没有复制过来
那怎么办呢?
不就成功了吗!!!
如果我们想把108_class和d1.zip一起压缩进去,只需要再写这个即可
这个时候这个zip就有这么多文件了
我们还可以指定解压路径
6.tar指令(重要):打包/解包,不打开它,直接看内容
tar [-cxtzjvf] 文件与目录 .... 参数:
案例:
- -c :建立一个压缩文件的参数指令(create 的意思);——创建压缩包的意思
- -x :解开一个压缩文件的参数指令!——解压的意思
- -t :查看 tarfile 里面的文件!
- -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
- -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
- -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
- -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
- -C : 解压到指定目录
我们以下面这个为例子
我们可以使用tar来打包和压缩
打包和压缩的后缀格式非常多
指令很多——我们不必记住所有指令,我们只需在要用的时候去查即可
我们只讲最常用的
这个就是将d1目录,log.txt,test.c文件打包成一个code.gz格式的文件
我们直接解压
我们只讲3种组合
打包成tgz的后缀
tar czf XXX ——打包压缩
tar tzf XXX.tgz ——预览
tar xzf XXX.tgz ——解压解包
我们要记忆住这3种即可
我们只需要知道这个后缀格式即可,不够用的再去搜
默认情况下,tar是解压在当前目录下。
我们可以指定解压路径
我们在解压指令后面加-C选项就可指定解压路径
7.bc指令:
这个就是linux的计算器
bc命令可以很方便的进行浮点运算
可以配合echo使用
8.uname –r指令:
语法:
uname [选项]
功能: uname用来获取电脑和操作系统的相关信息。
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
- -a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
查系统版本——和windows的差不多
x86_64和x64是一样的
我们可以查磁盘的情况
9.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
- [Tab]按键---具有『命令补全』和『档案补齐』的功能
- ctrl+r——历史命令搜索
- [Ctrl]-c按键---让当前的程序『停掉』
- [Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可 以用来取代exit
这些是特别常用的
我们先讲tab键——命令补全
我们输入w,然后就按Tab键,就有下面这样子
我们再试试
我们输入下面那个,然后按tab键
按下tab键发现它直接给我们补全了
我们看看ctrl+r——历史命令搜索
我们直接点击ctrl+r
我们随便输入一个a,就发现了
我们还可以通过history指令来搜索历史指令
Linux默认记录最新的1000条
ctrl+c——程序终止
上面的搜索界面,我们可能担心出不来
我们可以直接按ctrl+出来
ctrl+d——退出
我们可以直接ctrl+d,然后我们就回到云服务器登录界面了
再ctrl+d直接关闭了Xshell
10.关机
Linux操作系统(我指的是服务器),永不关机
语法:
shutdown [选项] **
常见选项:
- -h : 将系统的服务停掉后,立即关机。
- -r: 在将系统的服务停掉之后就重新启动
- -t seconds : -t 后面加秒数,亦即『过几秒后关机』的意思
这里我们不做演示,懂得都懂
以下命令作为扩展:
- 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
- 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
- 系统管理相关命令:df、top、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。
这些我们在后续学习过程中会讲
11.shell命令以及运行原理
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。
如何理解?为什么不能直接使用kernel?
我们所有的指令,最终都要在OS内部运行,但是直接使用OS难度非常高,我们用户不能直接和操作系统打交道,我们只能通过命令行来进行交互,和OS沟通的之间的桥梁就是命令行解释器
指令——>命令行解释器——>os
命令行解释器存在的意义:
- 进行命令行解释
- 保护OS,对于用户的非法请求,直接拦截
命令行解释器是个统称
在Linux下叫 命令行,bash/sh, shell
在Windows下叫 图形化界面
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
- 将使用者的命令翻译给核心(kernel)处理。
- 同时,将核心的处理结果翻译给使用者。
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运 行出结果,通过shell解析给用户。
帮助理解:
- 如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的 且有让你心动的MM小花。你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提 亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫 它王婆,它对应我们常使用的bash。
指令运行的原理
我们这里只简单的了解了解它
zs_108是用户名,@后面是主机名,再后面的~是当前目录,$+后面是命令行提示符
上面的这些一起叫做bash命令行
我们输入指令的过程本质就是输入字符串
到后面我们学习的进程的知识之后我们就会指到,上面一条指令的执行就是一个进程
指令的本质就是编译好的可执行程序
到这里,我们指令的学习暂告一段落,我们在后面的学习中会慢慢的学习更多的指令