Linux基本指令(中)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基本指令(中)相关的知识,希望对你有一定的参考价值。

写在前面

今天我们首要的目的就是把我们常用的指令和大家分享完,我们添加一些管道和压缩的命令,指令这个部分到这里就基本结束了,当然,这些都是最基本的,后面我们用到其他指令的话,也会和大家解释的,我们先对Linux上手.


man 指令

man指令首先我们要知道的是它可以查询指令,也就是说我们如果不知道一个指令作用是什么的时候,我们可以通过man 指令名来查.这我们需要和大家分享三种用法,大家先记住就可以了.

下载man指令

由于我们用的是云服务器,我们可能没有man指令,这里我们需要下载一下.我们需要在root用户下下载.

如何进入root用户,这里有两种方法.

  • 进入XShell,直接用root登录
  • 在普通用户下执行 su- 命令,回车后输入root密码

在root用户下下载man 执行下面指令

[bit@Qkj 07_03]$ yum install -y man-pages

查询指令

下面就是查找的就是ls指令的作用.

Linux基本指令(中)_文件名

[bit@Qkj 07_03]$ man ls

man man

既然man可以查询指令,那么man可以查询man指令吗?man也是一个指令,自然是可以查询的.

Linux基本指令(中)_重定向_02

[bit@Qkj 07_03]$ man man

查询标准库

是的,你没有看错,man指令可以查询标准库里面的函数,包括C++/Java等语言,这些语言的库是我们需要下载的,但是由于Linux是由C语言写的,所以自带标准库,我们可以直接查询.

Linux基本指令(中)_时间戳_03

[bit@Qkj 07_03]$ man printf

你会发现,我们不是要查printf函数吗,怎么出来的是指令,是的,在Linux中,printf变成了指令,我们要查函数原型的话需要加上个东西.

Linux基本指令(中)_重定向_04

[bit@Qkj 07_03]$ man 3 printf

查询系统调用

这里大家先不用知道,我们先给出用法,在后面的几篇博客都会和大家分享的.

Linux基本指令(中)_文件名_05

[bit@Qkj 07_03]$ man -2 fork

总结

man 指令是我们以后经常用到的指令,主要的作用就是查询指令的用法.man指令面带不同的数字,代表不同的用法.

  • man 1 指令名 也就是 man 指令名,我们把1给自动省略了
  • man 3 其他 查询系统调用,大家先不用知道,记住就可以了.
  • man 3 函数名 查询标准库里面的函数

cp 指令

cp指令是拷贝的指令,它可以拷贝文件或者是目录,说是就类似于Windows下面的复制粘贴.

拷贝普通文件

下面是我们最基本的用法.

Linux基本指令(中)_时间戳_06

[bit@Qkj 07_03]$ cp 源文件 目的文件

假设我们把一个文件里面的内容拷贝导另一个文件中,这个文件里面的所有内容都会覆盖掉.

Linux基本指令(中)_时间戳_07

拷贝目录

我们需要看看它如何拷贝目录.

cp 默认是不能拷贝目录的,要是需要拷贝目录需要带上选项.

Linux基本指令(中)_文件名_08

我们需要给他带上一个-r选项,这里也是递归拷贝的意思.

Linux基本指令(中)_重定向_09

[bit@Qkj 07_03]$ cp -r 06_25 06_25-bak

指定路径拷贝

在Windows中,我们可以先复制一个普通文件或者目录,然后再去其他目录中,这个就是指定的路径拷贝,在Linux中我们也是可以的.这里普通文件和目录是一样的,无非就是带不带选项的区别.

把源文件拷贝到到上级目录,这里我就相对路径来演示,绝对的路劲和它一样.

Linux基本指令(中)_重定向_10

[bit@Qkj 07_03]$ cp file.txt ../file-bak.txt

总结

cp指令也是我经常见到的,一般在我们准备修改某个文件时,我们防止自己修改错误,先备份一个.来总结一下它的具体用法和选项.

  • 我们可以不指定路径,默认在本目录下复制粘贴,也可以指定目录
  • 复制普通文件时,可以直接cp,但是复制目录时,需要带上选项-r
  • 有时由于权限的问题,可能会询问是不是要复制,我们避免被询问,可以带上-f选型,也就是强制复制

mv 指令

mv指令是移动的意思,这里可以指移动文件的位置,也可以值修改文件的名字.这个指令说实话现在还不太重要,但是我们确实需要认识一下.

  • 剪切+发送到 这个类似我们把一个普通文件或者是目录剪切掉,后面复制到其他目录
  • 重命名 如果我们觉得某个文件的名字实在是太挫,需要修改,这里可以支持重命名

剪切+发送功能

这个很简单,就是我们把文件复制好,把文件发到我们想要的目录中,并把源目录的文件给删除.这里普通文件和目录的做法是一样的.

Linux基本指令(中)_时间戳_11

重命名

这个更好理解了,我们如果不喜欢某个文件的名字就可以把他给重新命名,适合普通文件和目录.

Linux基本指令(中)_时间戳_12

[bit@Qkj 07_03]$ mv file.txt file2.txt

名字相同

如果我们想要名字当地目录已经存在了会怎么样,我们先来看看.这里用目录在举例子.

可以很轻易的看出,我们重命名的文件会直接把原来的文件给覆盖掉.

Linux基本指令(中)_时间戳_13

总结

我们把mv指令给总结一下,包括一些选项.

下面的是关于重命名的

  • mv 文件名1 文件名2 无论文件2是不是存在,都会把文件1变为文件2
  • mv -i 文件名1 文件名2 如果文件2存在,他会询问要不要覆盖
  • mv -f 文件名1 文件名2 无论文件2是不是存在,都会强制把文件1变为文件2

文本查找指令

我们先看看再不打开编辑器的情况下打开文本文本文件,查看里面的内容,这些都是很简单的,最起码我们现在用的很简单.

cat 指令

cat指令最适合我们现在的处境了,我们现在在Linux中很少写大量代码,最多就是一些helloword之类的,我们打开一个很少代码的的文件有点麻烦,cat指令可以帮助我们.

Linux基本指令(中)_重定向_14

[bit@Qkj 07_03]$ cat 文件名+后缀

-n选项

要是我们想要给自己的文件带一个行号打印出来,这里也可以做到

Linux基本指令(中)_时间戳_15

[bit@Qkj 07_03]$ cat -n 文件名+后缀

tac 指令

这个指令的作用和cat指令的作用是一样的,不过它是从最后一行开始打印的,而且不支持行号这个选项.

Linux基本指令(中)_文件名_16

more 指令

现在我想问,如果我们的文本很大,请问如果我们的文本很长,请问你使用cat和tac指令吗?必定不会啊,我们电脑的屏幕就那么大,一旦文件很大,肯定会发生刷屏现象,我们这里有提供了几个指令.

我们先来一个准备工作,先创建一个1w行的文本文件,你把下面的指令跑一下就可以了,我们这里先用着,过几个博客再说原理.

[bit@Qkj 07_03]$ cnt=1; while [ $cnt -le 10000 ];do echo "hello bit $cnt"; let cnt++;done > myfile.txt

这样我们就可以得到一个含有1w行的文本文件,我们使用cat指令试试,你会发现它会刷屏.

Linux基本指令(中)_重定向_17

这里就需要我们这个指令了,我们先来看看看用法,再说它的作用.

Linux基本指令(中)_重定向_18

[bit@Qkj 07_03]$ more -10 myfile.txt

这样的话,你就可以得到前10行代码,想看后面的就用键盘上的方向键就可以了,注意这个第一次出现多少行是你自己的确定的,而且我们如果不想看了,可以使用字母q退出.

less 指令

我们前面谈了more指令,但是这个指令有一个缺陷,他只能往下调,不可以往上刚,也就是我们必须按照代码的顺序来看,这个很不友好,所以我们出现了less指令,这个可以很好的帮助我们解决相应的问题.

  • less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。
  • less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看
  • 但若使用了 less 时,就可以使用 [pageup]\\[pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!
  • 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜

我们和之前一样,还是先来卡看现象,这里我想给大家看看最基本的演示,关于它的其他用法.

我们可以发现,如果我们使用下面的指令,可以得到一屏幕的代码,我们可以使用上下键来进行上下翻,按q键退出.

我们这里就演示最基本的用法.

Linux基本指令(中)_时间戳_19

[bit@Qkj 07_03]$ less myfile.txt

重定向

这里我们来见识两个符号,前面我们已经见过了,我们来看看吧,这里我们只讲用法.

  • 输出重定向 >
  • 追加重定向 \\>\\>
  • 输入重定向 <

输出重定向

我们还是先来看看用法.


从这里我们可以看出,所谓的输出重定向就是把原本该输出到显示器中的内容保存到一个文件中

这里我们们还要认清一个事实,它会把原来文件的里面的内容都给删除掉,只保存自己的,很是霸道.

Linux基本指令(中)_文件名_20

追加重定向

既然>有缺陷,那么这里有一个解决方法,又出现了一个追加重定向,我们可以在文本后面来写入一些内容.


再析 cat

我们这里再来认识一下cat的用法,如果我们直接打入一个cat指令,你会发现,你输入什么,在屏幕上就会得到什么,也就是说,cat输入后,默认打开了一个stdin流和stdout流,分别是键盘和显示器,这里我们也可以使用重定向.

Linux基本指令(中)_时间戳_21

输入重定向

那么我们就可以见识另外一个重定向了,我们使用cat输入重定向来打开一个输入流,这里我们来看看现象.

[bit@Qkj 07_03]$ cat < file.txt

Linux基本指令(中)_时间戳_22

ctrl c

如果我们发现,自己想要退出一个程序,但是不知道该如何做,记住我们可以无脑ctrl c,一定不要ctrl z,我们来看看.

Linux基本指令(中)_时间戳_23

ctrl z

记住,我们千万不要使用ctrl z来退出,他只是暂定,但是任务还是存在的,我们看看.

Linux基本指令(中)_时间戳_24

那么如果我们不小心按到了ctrl z,该怎么办?不要担心,我么可以使用下面的方法.

fg 指令

我们发现,在任务前面存在一个数字,这是任务编号,我们可以这样做,这样又可以重新打开这任务了,我们就可以ctrl c了.

Linux基本指令(中)_文件名_25

[bit@Qkj 07_03]$ fg 1

jobs 指令

这里个大家附加一个指令,我们可以通过它来看看我们有几个任务.

Linux基本指令(中)_文件名_26

一切皆文件

我们现在要分享一个很重要的观点,这是我们学习Linux的基础,可以说是重中之重.再几年前前网上有这么一个梗,"神马都是浮云",可以这么说,只要我摆烂了,困难就追不上我,再Linux中也是如此,或许Linux中存在很多东西,但是Linux把他们都看作是文件,我按照用规定的模式去处理就可以了,这样看待事情就简单多了.今天的这个就是一个开头,做一个感性的理解.

Linux基本指令(中)_文件名_27

head 指令 & tail 指令

我们再来看看这两个指令,作用我列出来

  • head -n 文件 查看前n行 不写默认10行
  • tail -n 文件 查看后n行 不写默认10行

[bit@Qkj 07_03]$ head myfile.txt

Linux基本指令(中)_重定向_28

tail myfile.txt

Linux基本指令(中)_重定向_29

管道

这里有一个问题,我们如何查看第300行到350行的代码?

  • 辅助文件
  • 使用管道

辅助文件

这里我提供两种解法.

第一种解法就是我们把前350行保存到一个文件中,然后在使用tail来查看.

Linux基本指令(中)_时间戳_30

管道

上面的方法有一点问题,我们不能每次查看文件都创造一个文件吧,这是很不友好的,这里还有第二个方法,使用管道.先看现象.

[bit@Qkj 07_03]$ head -350 myfile.txt | tail -51

Linux基本指令(中)_文件名_31

这个|就叫做管道,那么什么是管道文件,在现实生活中我们也存在管道,比如天然气管道,我们通过管道运输资源,在计算机中,我们也是通过管道来运输资源,在一家计算机公司中,最宝贵的资源就是数据,这便是计算机世界的石油.管道就是传输数据资源,管道重要的应用之一就是实现级联多个命令

我们现在只知道怎么用就可以了,之后会用代码来实现的.

Linux基本指令(中)_时间戳_32

date 指令

我们可以通过date指令来查看当前的时间,这里还提供年月日时分秒的的查找.

我们先来看最基本的,剩下的截了一张图,大家看看用法就明白了.

Linux基本指令(中)_文件名_33

[bit@Qkj 07_03]$ date

至于其他的用法,大家一看就可了解了.

Linux基本指令(中)_重定向_34

时间戳

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。

上面的的时间指令不重要,时间戳才是重要的,对于一个大型程序,写一个日志是非常重要的,如果你的项目上线了,突然你发现自己的程序挂了,但是你不知道什么时候挂的,但是你丝毫不慌,因为你写了日志,你的程序执行的重要代码和时间都被保存了下来,所以这就是日志的重要性.

Linux基本指令(中)_文件名_35

时间戳转化器

我们如何把时间戳戳转化成格式的时间,也就是人可以识别的时间格式,第一种方法就是网上搜索时间戳转化器,那么在Linux中可以执行下面的指令.

[bit@Qkj 07_03]$ date +%Y-%m-%d_%H:%M:%S -d@0

Linux基本指令(中)_文件名_36

cal 指令

这个就是一个附带品,就是查找每年日历,默认是当前月日历.

[bit@Qkj 07_03]$ cal

Linux基本指令(中)_文件名_37

查找上个月和下个月的日历

Linux基本指令(中)_文件名_38

查找1900年的日历

Linux基本指令(中)_文件名_39

find 指令

是一个查找文件的命令,它的功能类似Windows环境下的一款软件,叫做everything,但是这个指令需要知道我们文件所在的目录地址,很强大,选项也很多,但是今天只学最基本的.

[bit@Qkj ~]$ find ~/104/2022/07_03/main.c

Linux基本指令(中)_文件名_40

grep 指令

grep 指令在文件中搜索字符串,将找到的打印出来 ,它是一个行文本查找工具.

我们先来看卡场景吧.

Linux基本指令(中)_重定向_41

下面我来见识一下grep 指令的作用,这里要有三个方面需要谈.

  • 默认的话,是区分大小写的
  • -i 不区分大小写
  • -v 可以理解反向查找

Linux基本指令(中)_重定向_42

[bit@Qkj ~]$ grep C++ file.txt

Linux基本指令(中)_文件名_43

[bit@Qkj ~]$ grep -i C++ file.txt

Linux基本指令(中)_文件名_44

[bit@Qkj ~]$ grep -v C++ file.txt

一文理解Linux的基本指令(下)(三分钟学会Linux基本指令)

前言:

        衔接上一篇文章,继续总结一下Linux操作系统的指令,不会有人认为Linux系统指令只有上篇文章那么多了吧,嘿嘿小马告诉你可不止这么多,而我这篇文章总结完,也只是我们所用的比价常用的,而还有很多指令需要大家在学习中不断掌握,不断的学习,还是那一句话,Linux操作系统的命令,不需要我们去花特别的时间去专门记忆他,而是不断的练习中掌握他。^ _ ^

💞 💞    欢迎来到小马学习代码博客!!!! 

       塑造自己,前期是困难的,中期是折麽的,后期是享受的,在这里小马希望大家都能去坚持提升自己,向自己认为对的方向去坚持!!!

目录

 一、Linux操作系统的常见指令

1.1前提准备:

1.2 tac指令:

 1.3 more指令:

1.4 less 指令 :

 1.5head 指令 :

 1.6 tail 指令:        

 1.7 find 指令 :

​1.8 which   指令:

1.9whereis 指令 :

1.10 whoami 指令 :

1.11 grep指令:

 1.12 alias 指令 :

 1.13 sort 指令:

1.14uniq指令: 

1.15zip/unzip指令: 

1.16tar 指令: 

1.17clear指令:

1.18tree指令:

 1.19 bc指令:

1.20 date 指令:

总结 :


 

 一、Linux操作系统的常见指令

1.1前提准备:

   !!!!进行操作指令之前现在命令行上写一个这样的命令

 cnt=0;while [ $cnt -le 10000 ] ; do echo "hello xiaoma [$cnt]"; let cnt++; done >test.txt

他就是打印一万个 hello xiaoma 的命令:

为了方便我们操作下面的一些指令 。

1.2 tac指令:

功能:         cat      file        查看文本内容和cat的区别就是倒着查看 

 1.3 more指令:

功能: more        file                和cat类似(区别是cat是直接打印完,而more打印一个屏幕后就停下来,你可以按回车键进行继续浏览,按q键退出)

-n 对输出的所有行编号

q 退出more

例如这里我打印test.txt 文件:

 按回车键继续,按q键就是退出命令

1.4 less 指令 :

功能: less   file                         less功能和 more 差不多 也是打印一个屏幕后,如果继续打印就需要用回车键来进行,但比more更好的是他也可以用上下键,也就是可以进行上下翻阅的。

less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。 less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看 但若使用了less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容! 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜

例如这里我还是用less 打印test.txt 文件 但是向上向下翻的功能就你来进行实现吧:

 1.5head 指令 :

功能 : head         file                         head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。 

-n<行数> 显示的行数

例如这里 我用 head 输出 test.txt 文件:

 1.6 tail 指令:        

功能  :  tail        file                                         tail用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

-f 循环读取

-n<行数> 显示行数

例如这和head差不多 就是一个显示头一个显示尾

 这里我们既显示头了,又显示尾了 这我们设置一下不就可以显示中间片段的内容了嘛^ _ ^

head -100 test.txt | tail -20

 1.7 find 指令 :

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

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

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

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

 

例如 这里我查找我的test.txt 文件: 

1.8 which   指令:

功能        which   order         用于查找命令的位置

例如下面我查找的几个命令 

1.9whereis 指令 :

功能         whereis        filename                 定位/返回与指定名字匹配的二进制文件、源文件和帮助手册文件所在的路径。

这里我用whereis查找我的test.txt文件

1.10 whoami 指令 :

功能      whoami                         显示当前用户是谁

例如我这用户名字为xiaoma

1.11 grep指令:

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

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

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

 

例如这里我就进行筛选test.txt带999字符:

 1.12 alias 指令 :

功能 :                                 对指令重命名

例如这里 我把xiaoma命令变为ls -l 指令他就和ls -l具有相同的指令:

 1.13 sort 指令:

功能 :          sort          file                对文件进行排序(升序排的)

例如这里我创建file.txt 文件打印和排序后打印的区别:

1.14uniq指令: 

功能:           uniq            file                 对文件进行去重

例如这里我对file.txt文件进行了去重: 

1.15zip/unzip指令: 

功能 : zip         【你的压缩包】(自定义)        dir(要打包文件的目录/文件本身)          将目录或文件压缩成zip格式

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

这里我将file.txt文件进行一个压缩,就生成一个my.zip压缩包: 

功能 :        unzip         【你的压缩包】                对压缩包进行解压 

-d   :解压到指定的路径下

这里我先将my.zip进行剪切到dir目录里然后在进行了解压,解压完我们发现,目录dir出现了file.txt文件

 

1.16tar 指令: 

功能:  tar         【你的压缩包】(自定义)        dir(要打包文件的目录/文件本身)         对文件可以进行压缩也可以进行解压(这跟你带的选项有关)

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

这里我还是对file.txt文件进行打包和压缩:

用的是tar -czf    文件或目录名

这里我先将my.zip进行剪切到dir目录里然后在进行了解压解压方法为tar -xzf  文件或目录名,解压完我们发现,目录dir出现了file.txt文件

 下面就是一些比较简单的操作

1.17clear指令:

功能:         clear                                  对Linux窗口进行清屏  

用clear就是对这进行清屏 :

1.18tree指令:

功能:      tree    file/catalog                以树状的形式显示文件内容

 1.19 bc指令:

功能 :        bc                 Linux系统中的计算机

1.20 date 指令:

功能:         date                 查看时间

 

%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

嘿嘿这是小马写博客的时间(今天写今天提交^ _ ^) 

总结 :

        这里小马通过两篇博客把所有比较常见的Linux指令给总结完了,但Linux指令远不止这么多,其他的指令只有等我们用到的时候可以自己进行查阅学习,还是那一句话,不要去特别的背Linux的操作指令,用多了自然就掌握了哦*^ _ ^

最后小马码文不易,如果觉得有帮助就多多支持哈!!!^ _ ^

以上是关于Linux基本指令(中)的主要内容,如果未能解决你的问题,请参考以下文章

Linux基本指令(上)

linux学习笔记:基本指令mkdir, rmdir 和rm

Linux基本指令(上)

Linux/Unix/Cygwin 常用命令

linux系统中cd指令怎么用

linux下最最常用的20条指令,掌握这些就基本够用了