新建会话 

        本文中所有的指令都会在普通用户中进行介绍,而非root账号,这是由于root账户在进行部分指令的同时并不会出现警告,影响操作。在root账户下新建普通用户的方法在前文中已经有展示,这里不做介绍。

        这里首先会介绍如何在xshell下新建会话以便快速登陆。

刚打开xshell的时候,会弹出会话窗口,这里就可以点击连接进入普通用户账户,而非输入指令。

那么如何创建这样的会话呢?

点击新建按钮,修改名称和主机即可,说明可写可不写。

再次打开xshell的时候,就会在弹出的会话窗口中显示。

初次点击的时候,会显示登陆的用户名,也就是输入你使用root账号新建的普通用户名称(记住用户名可以下次直接登陆)。

登陆时直接输入密码即可。


时间相关的指令——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:日(00..12)
  • %m:月份(01..12)
  • %Y:完整年份(0000..9999)
  • %F:相当于%Y-%m-%d

2.在设定时间方面

  • date -s // 设置当前时间,只有root权限才能设置,其他只能查看
  • date -s 20241014 // 设置成 20241014,这样会把具体时间设置成空00:00:00
  • date -s 01:01:01 // 设置具体时间,不会对日期做更改
  • date -s "01:01:01 2024-10-14" // 这样可以设置全部时间
  • date -s "01:01:01 20241014" // 这样可以设置全部时间
  • date -s "2024-10-14 01:01:01" // 这样可以设置全部时间
  • date -s "20241014 01:01:01" // 这样可以设置全部时间

3.时间戳

时间——>时间戳:date +%s

时间戳——>时间:date -d@1508749502

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数 [4]。时间戳是使用数字签名技术产生的数据,签名的对象包括了原始文件信息、签名参数、签名时间等信息。时间戳系统用来产生和管理时间戳,对签名对象进行数字签名产生时间戳,以证明原始文件在签名时间之前已经存在。

多次打印时间戳,可以发现时间戳是在一直变化着的。这个时间戳可以算是计算机规定的一个时间,这是由于全球维度的不同,时间是对不上的,对于计算机行业来说,需要有一个标准来统一时间。

将此刻的时间戳换成时间,这与当地时间是可以对的上的。

我们试着打印时间戳为0时的时间,发现是1970年的1月1日的早上8点,这是由于此时已经换成了北京时间(东八区)。

那么这个时间戳这个时间变量会不会溢出呢???

答案是会的。


cal指令

cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。

命令格式:cal [参数][月份][年份]

功能:用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有俩个参数,则表示月份和年份

常用选项:

  • -3 显示系统前一个月,当前月,下一个月的月历
  • -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月再一年中的天数)
  • -y 显示当前年份的日历。

下面是一些案例展示:

在听课的时候听老师讲过这样的一个例子:现在大家查看日历都是在手机上直接点开日历app直接看的,以前不一样,以前用的是老黄历。 

就是这种可以一张一张手撕下来的,这种日历可以看黄道吉日。

现在条件好了,家里可以不用买这种老黄历了,可以让大家的爷爷奶奶学一学Linux,直接输上一行指令,就可以-查看日历了(哈哈哈哈哈)


find指令(重要)

find指令就像其汉语意思一样,可以用于查找。

  • Linux下find命令在目录结构中搜索文件,并执行指定的操作。
  • Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得学习了解。
  • 即使系统中含有网络文件系统(NFS),find命令在该文件系统中同样有效,具有相应的权限。
  • 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统会花费很长的时间(这里指的是30G字节以上的文件系统)

语法:find pathname -options

功能:用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)

常用选项:

  • -name 按照文件名查找文件

find ~ -name test.c 

在特定路径下寻找特定文件。

这里find的是在全部文件下,去查找text.c文件

(需要注意的是,由于这里是普通用户,所以只能在普通用户所管辖的范围内查找文件)

find /ure/ -name pwd输入这条指令的时候,可能会出现报错Permission denied,这是因为普通用户只能在自己/home/名字,家目录下进行查找,find可以在指定的路径下进行文件的搜索——真的是在文件磁盘中搜索。

which指令和whereis指令也可以进行查找:

  • which可以在指令路径下,/urs/bin/搜索指令文件

  • whereis 是在系统特定的路径下查找,既可以找到可执行程序,又可以找到手册,安装包,压缩包这些。


grep指令

语法:grep[选项] 搜寻字符串文件

功能:在文件中搜索字符串,讲找到的行打印出来

常用选项:

  • -i:忽略大小写的不同,所以大小写视为相同
  • -n:顺便输出行号
  • -v:反向选择,即显示除没有‘搜寻字符串’内容的那一行。

输入shell脚本:

cnt=0; while [ $cnt -le 100000 ]; do echo "hello Linux $cnt"; let cnt++; done >> log.txt

这个shell脚本是将hello Linux 1到100000的数字循环打印到log.txt文件中去。

该指令可以将包含9999的行打印出来,也就是说grep是一个行文本过滤工具。

>log.txt可以清空log.txt(前文讲过)

nano指令可以在文本文件中编写内容。我们将上述内容编写到og.txt文件中,以便后面学习grep指令。

grep选项举例:

grep也可以和管道(以前讲过)一起结合使用。

这句指令的意思就是,将log.txt里面的内容输出到管道里面,grep指令从管道里面过滤出来含有字符串blog的行。


zip/unzip指令

语法:zip压缩文件.zip目录或文件

功能:将目录或文件压缩成zip格式

常规选项:

  • -r 递归处理,将指定目录下的所有文件和子目录一并处理

一个问题,为什么需要打包和压缩呢?

        这个问题对于这个时间段的我们来说,可以说是不陌生了,打包压缩嘛!就是将文件放在一起,将内存缩小。

  1. 能被打包压缩的,一定是一个整体,由多个文件变成一个文件,不容易造成文件缺失。
  2. 打包压缩,体积变小——下载时间变短,存储占据的控件变小。

如果出现上面这种情况,可能没有安装zip/unzip,需要根据自己的操作系统进行安装,这里只有root用户才可以进行安装。

如上图所示,在目录d1下面有多个目录和文本文件,可以将这些文件打包压缩。

通过d1进行打包压缩,将d1.zip文件移到d2目录下面,然后在d2目录下面继续解压,解压后发现,!what!东西呢??只有一个d1目录死皮赖脸的跟过来了,d1下面的目录和文件都哪里去了??

所以,需要添加选项才能将这些目录和文件一起捆绑过来,我们重新写几条指令试试。

这里加上-r选项就可以将文件中的所有内容都打包带走了。

上面说的打包和压缩,其中压缩表示清楚了,但是上面的打包好像意识是将文件放在一个目录下面,这好像不是打包吧。

这里我们将.zip文件后面的文件添加了很多,并且都放在d1.zip压缩文件下面,这样就有点打包的意思了。


tar指令(重要)

tar指令可以打包/解压,不打开它,直接查看内容。

ter [-cxtzjvf]文件与目录 ...参数:

  • -c:建立一个压缩文件的参数指令(create的意思)
  • -x:解开一个压缩文件的参数指令
  • -t:查看tarfile里面的文件
  • -z:是否同时具有gzip的属性?即是否需要gzip压缩?
  • -j:是否同时具有bzip2的属性?即是否需要用bzip2压缩?
  • -v:压缩的过程中显示文件!这个比较常用,但是不建议用在背景执行过程中
  • -f:使用档名,请留意,在f之后要立即接档名,不要加参数
  • -C:解压到指定目录

在linux下,常见的后缀名有如下: 

tar指令也是可以进行压缩和解压的。

这里的选项-czf的意思是:

使用tzf选项可以预览已经压缩的文件。 

使用xzf可以进行解压缩包

注意:这里的.tgz是压缩包的缩写,正常写法是.tar.gz

 tar -xzf code.tgz -c ..带上-C选项之后可以将压缩包解压到指定目录下面。 


bc指令

bc命令可以很方便的进行浮点运算。

bc指令相当于linux下的计算器

也可以与管道进行结合使用


uname -r指令

语法:uname [选项]

功能:uname用来获取电脑和操作系统的相关信息。

补充说明:uname可以显示Linux主机所用的操作系统的版本,硬件的名称等基本信息。

常用选项:

  • -a或-all详细输出所有信息,依次为内核名称,主机名,内核版本号,硬件名,处理器类型,硬件平台类型,操作系统名称。


重要的几个热键

  • [Tab]按键——具有【命令补全】和档案补齐的功能
  • [Ctrl]按键+r——历史命令搜索

可以使用ctrl+r回看历史命令,说明Linux下记录了历史命令。

可以使用history指令来查看历史命令列表。

一般来讲,Linux会记录默认最新的1000条指令,这1000条是可以修改的。

  • [Ctrl]-c按键——让当前的程序【停止】
  • [Ctrl]-d按键——通常代表着:【键盘输入结束(End Of File,EOF 即 End OfInput)】的意思;另外,他也可以用来取代exit
  • [shift]-insert按键——粘贴
  • [Ctrl]-insert按键——复制

关机指令

语法:shutdown [选项]

常见选项:

  • -h:将系统的服务停止后,立即关机
  • -r:在将系统的服务停掉之后就重新启动
  • -t sec:-t后面加描述,即【过几秒后关机】

shutdown -s -t 200

想尝试的可以试一试,这里由于忙着赶稿子~~呜呜呜~~就不测试了


其他扩展命令:

  • 安装和登陆命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
  • 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、In;
  • 系统管理相关命令: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、chattr、sudo ps、who;
  • 其他命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode;

指令的运行原理

以本人为例:

  • dabai:用户名
  • @... ... ... :主机名
  • ~/blog4/d2 :当前目录
  • $ :命令行提示符

这些都被统称为bash命令行。

        Linux严格意义上说是一个操作系统,我们称之为”核心(kernel)“,但我们一般用户,不能直接使用kernel。而是通过kernel的”外壳“程序,也就是所谓的shell,来与kernel沟通。

  • 这是为什么呢?为什么不能直接使用kernel?

输入指令的过程,本质就是输入字符串。

举个例子:

        张三是一个比较腼腆害羞的男孩(就像我一样~),上完大学四年,技术没学多少,对象也没找到(就像我一样~)。

        回到家,他老爹也愁的很,说:”你看看你,你一天天不好好学习,工作也没落实下来,大学四年嘴皮子也没有练出来“。张三不敢找对象,他老爹看见他就想锤他,那咋办?只能找村里的王婆来给说说。

        给王婆说的时候,张三说的可积极了(不知道还以为看上王婆了),他说他就喜欢小学班上的如花,就喜欢如花那样的。

        王婆听到这就懂了张三的意思了,马上去看找村里如花去说媒去了。

【看到这里,王婆就是命令行解释器,张三就是用户,如花就是操作系统,张三不能直接找如花,需要王婆这个中间媒介来介绍】

        王婆找到如花家里,看到如花正和村长的儿子李四手拉着手,卿卿我我。王婆看了看,回去就给张三说,哎呀,这个如花呀,这我感觉呀,你们呀,不是很配,我感觉如花配不上你,王婆我呀重新给你找一个更好的。

【这里,张三不能直接找操作系统就是为了保护操作系统】

从技术角度,Shell最简单的定义:命令行解释器(command Interpreter)主要包含:

  • 将使用者的命令翻译给核心(kernel)处理。
  • 同时,将核心的处理结果翻译给使用者。

        指令的本质就是编译好的程序和脚本,一定会在系统的特定路径下存放。我们所有的指令最终都要在操作系统内部运行,但是直接使用操作系统难度比较高,我们用户不能直接和操作系统打交道。

        对比Windows Gui,我们操作Windows不是直接操作Windows内核,而是通过图形接口,进行点击操作从而完成我们的操作。

Shell对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

指令存在的意义:

  • 进行命令行解释
  • 保护操作系统,对于用户的非法请求,直接拦截

bash/sh与shell的区别:

  • bash:王婆
  • sh:李婆
  • shell:媒婆

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部