【Linux】5.Linux常见指令以及权限理解(3)

文章目录

  • [3. Linux指令](#3. Linux指令)
    • 如何把自己的公网IP配置到XShell里面
    • 日志
    • [3.9 时间相关的指令](#3.9 时间相关的指令)
    • [3.10 Cal指令](#3.10 Cal指令)
    • [3.11 find指令:(灰常重要)](#3.11 find指令:(灰常重要))
    • [3.12 grep指令](#3.12 grep指令)
    • [3.13 zip/unzip指令:](#3.13 zip/unzip指令:)
    • [3.14 tar指令(重要):打包/解包,不打开它,直接看内容](#3.14 tar指令(重要):打包/解包,不打开它,直接看内容)
    • [3.15 bc指令:](#3.15 bc指令:)
    • [3.16 uname --r指令:](#3.16 uname –r指令:)
    • [3.17 重要的几个热键[Tab],[ctrl]-c, [ctrl]-d](#3.17 重要的几个热键[Tab],[ctrl]-c, [ctrl]-d)
    • 安装nano
    • [3.18 history命令](#3.18 history命令)
    • [3.19 关机](#3.19 关机)

3. Linux指令

如何把自己的公网IP配置到XShell里面

之前的登录都是输入ssh root@公网IP

我们可以把这个配置到XShell里面。

点击确定

双击

输入自己的公网IP,勾选记住用户名(用户名必须是已经存在的。例如root用户的用户名就是root,普通用户的用户名要自己创建完了才能用,创建方法在之前的Linux博客里面有)

点击确定。

后面开始用普通用户账号了。因为普通用户账号的学习体验比root用户的好。


日志

首先我们需要有日志的概念。

程序运行到自己的每一个关键时刻,都要自己打日志。

日志里面会包含:时间,日志的等级,日志的具体信息,其他信息。把这些东西放到文件里面就是日志文件。


3.9 时间相关的指令

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的午夜)开始所经过的秒数,不考虑闰秒。

下面这个是时分秒


我们来看一下:

cpp 复制代码
date +%s

同样的命令输出不同的结果,似乎和时间有关。

我们把这个叫做时间戳

对于时间戳:

  1. 我们这个世界上的时间是人为定义的。
  2. 不同国家对于时间的设定不同。(时差)

时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数。

那么如何把时间戳转换成时间呢?

根据下面的时间戳也可以验证时间戳是从什么时候开始的。

这里从8:00开始,是因为我们在东八区,这个就是时差。

当然,或许有人会有这些疑问:

  1. 这个时间戳一直在递增,是不是把这个数据存在计算机里面了?每次依次增加后存在计算机里面?

是的。

  1. 这个数据一直在递增,会不会溢出呀?

会的,不过早着呢,到时候也会有人解决这个问题的。


3.10 Cal指令

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

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

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

常用选项:

-3:显示系统前一个月,当前月,下一个月的月历

-j:显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)

-y:显示当前年份的日历

我们也可以使用:cal 2050。直接查看2050年的日历。


3.11 find指令:(灰常重要)

  • Linuxfind命令在目录结构中搜索文件,并执行指定的操作。

  • Linuxfind命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。

  • 即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。

  • 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。

语法: find pathname -options

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

常用选项:

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

cpp 复制代码
find ~ -name "文件名"

参数解释:

  • find: 查找命令
  • ~: 表示当前用户的主目录(home directory)
  • -name: 按文件名搜索
  • "文件名": 要搜索的文件名(需要指定)
cpp 复制代码
find ~ -name *

在当前用户的主目录(~)下查找所有文件和目录

  1. find:查找命令
  2. ~:表示用户的主目录(home directory)
  3. -name:按名字查找的选项
  4. *:作为通配符匹配所有文件

这里的Permission denied是因为不是root用户导致的,这个目录无法被查看。

当然有些目录连root用户也无法查看,这里的Permission denied就是使用普通用户带来的不同。

普通用户除了自己的home目录里面的东西外,可能不允许你去查看。我们可以使用root来查。

find:可以在指定的路径下进行文件的搜索 --- 真的在磁盘文件中查找。速度可能比较慢。

which:也可以用whichwhich会在指定路径下进行指令级别的搜索。速度快一点。

cpp 复制代码
ydk_108@iZuf68hz06p6s2809gl3i1Z:~/108/lesson4$ which ls
/usr/bin/ls

whereis:在系统特定的路径下查找,既可以找到可执行程序,又可以找到手册,安装包 ,压缩包等之类。

查找命令的二进制文件、源代码文件和man手册页,搜索范围是预定义的目录,如/bin, /sbin, /usr/share/man等,可以显示多个匹配结果

cpp 复制代码
ydk_108@iZuf68hz06p6s2809gl3i1Z:~/108/lesson4$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

3.12 grep指令

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

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

常用选项:

-i :忽略大小写的不同,所以大小写视为相同

-n :顺便输出行号

-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行

hello ydk 0hello ydk 100000输出重定向到log.txt里面。

cpp 复制代码
ydk_108@iZuf68hz06p6s2809gl3i1Z:~/108/lesson4$ cnt=0; while [ $cnt -le 100000 ];do echo "hello ydk $cnt"; let cnt++; done>log.txt

通过查看,我们可以看到log.txt这个文件被创建了。

我们查找9

可以看到,把所有有9的都给打印出来了。


grep是一个行文本遍历工具。

我们先把log.txt文件清空,然后写一些东西进去。

然后Ctrl+Xy,回车

查看一下自己确实写进去了

下面进行grep的行过滤实验:

-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行

''是什么都可以匹配的。

-n :顺便输出行号

命令也可以组合使用

-i :忽略大小写的不同,所以大小写视为相同

我们也可以通过之前讲的管道来搞

grep的后面也可以跟多个文件,用空格隔开。

cpp 复制代码
grep -n 'int main()' test.c tex.c
cpp 复制代码
grep -n 'int main()' /home/ydk
会显示这个是目录,无法查找
grep -Rn 'int main()' /home/ydk
这个就会递归查找int main(),返回文件的路径和行号

3.13 zip/unzip指令:

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

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

常用选项:

-r:递归处理,将指定目录下的所有文件和子目录一并处理
打包和压缩是什么?

打包:把多个文件或目录归并到一个文件中,不会减小文件大小

压缩:通过算法减小文件大小

解压:将压缩文件还原为原始大小

解包:从打包文件中还原出各个文件/目录
为什么要打包压缩呢?

  1. 能被打包压缩的,一定是一个整体,由多个文件-->一个文件-->不容易造成文件的缺失
  2. 打包压缩,体积变小-->下载时间变少,存储空间变小(不打包压缩下载时间变长,存储占据空间变大)

我们先创建一些东西

我们可以先安装zip命令。

切换到root用户,输入:

cpp 复制代码
sudo apt install zip

安装后可以切换回普通用户。

把压缩包移动到上级目录

然后尝试解压缩。

这里面

cpp 复制代码
ydk_108@iZuf68hz06p6s2809gl3i1Z:~/108$ tree d1
d1

0 directories, 0 files

说明打包并解压缩有问题。

我们先删除d1。

然后我们重新试着打包

然后移动压缩包,并解压缩。

然后检查一下刚刚在file4.txt文件里面写的东西在不在

东西也在,说明确实解压缩好了。

如果要压缩多个当前目录的文件呢?

用空格隔开就可以了。

然后删除原来的d1log.txt

再解压缩d1.zip

如果想要解压到指定路径呢?

使用-d

cpp 复制代码
unzip d1.zip -d test/
unzip 需要解压的压缩包名称 -d 需要解压到的路径

3.14 tar指令(重要):打包/解包,不打开它,直接看内容

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

-c :建立一个压缩文件的参数指令(create 的意思);

-x :解开一个压缩文件的参数指令!

-t :查看 tarfile 里面的文件!

-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?

-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?

-v :压缩的过程中显示文件这个常用,但不建议用在背景执行过程!

-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

-C : 解压到指定目录

tar czf XXX --- 打包压缩

tar tzf XXX.tgz --- 预览

tar xzf XXX.tgz --- 解压解包

tar -- 打包后缀

.gz -- 压缩后缀

XXX.tar.gz --> XXX.tgz

解压到指定路径


3.15 bc指令:

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


3.16 uname --r指令:

语法:uname [选项]

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

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

常用选项:

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

查当前系统信息:

x86_64 = x64

x86 == 32


3.17 重要的几个热键[Tab],[ctrl]-c, [ctrl]-d

[Tab]按键---具有『命令补全』和『档案补齐』的功能

[Ctrl]-c按键---让当前的程序『停掉』

[Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit

[Ctrl]-r按键---通常代表着:历史按键搜索

输入wTab两下后,就会显示所有的w开头的指令。

如果输入的开头只有一个命令匹配就会自动补全并空格。

例如:我输入whicTab两下后,变成which 了。

[Ctrl]-r

我输入一个w


安装nano

切换到root用户,输入下面的命令:

cpp 复制代码
sudo apt-get install nano

然后使用nano

然后Ctrl+Xy,回车

编译文件

执行文件,可以按Ctrl+C结束


3.18 history命令

history:查看所有历史的命令

Linux会默认记录最新的1000条历史命令。


3.19 关机

语法:shutdown [选项] ** 常见选项:**

-h : 将系统的服务停掉后,立即关机。

-r : 在将系统的服务停掉之后就重新启动

-t sec-t 后面加秒数,亦即『过几秒后关机』的意思

Linux操作系统(服务器),永远不关机。

公司的云服务器不用关。

相关推荐
火柴就是我1 分钟前
首次使用Android Studio时,http proxy,gradle问题解决
android
limingade13 分钟前
手机打电话时电脑坐席同时收听对方说话并插入IVR预录声音片段
android·智能手机·电脑·蓝牙电话·电脑打电话
浩浩测试一下28 分钟前
计算机网络中的DHCP是什么呀? 详情解答
android·网络·计算机网络·安全·web安全·网络安全·安全架构
码农hbk36 分钟前
linux ptrace 图文详解(七) gdb、strace跟踪系统调用
linux·服务器
hotlinhao1 小时前
ThinkPHP6模型中多组条件逻辑或Or查询的使用
linux·服务器·数据库
Jogging-Snail1 小时前
从零开始掌握Linux数据流:管道与重定向完全指南
linux·运维·管道·重定向·linux 数据流·管道原理
niuTaylor1 小时前
Linux驱动开发快速上手指南:从理论到实战
linux·运维·开发语言·驱动开发·c#
且从容.2 小时前
wsl联通外网
linux·wsl
青春给了狗2 小时前
Android 14 系统统一修改app启动时图标大小和圆角
android
心随_风动2 小时前
RHEL与CentOS:从同源到分流的开源操作系统演进
linux·开源·centos