Linux基础入门+基本命令的万字碎碎念

开篇总想絮叨两句

以前一直没系统的学习过 Linux,也就简单的用过Ubuntu,或者在本地的虚拟机上,搭了搭开发的环境,以及半查半折腾的在阿里云的 CentOS 系统上部署了一个博客,如今由于有时候用的稍微多了一点,正好家里也有几本Linux的书,那就把这一部分好好学习,顺便整理一下,不免会有一些错误,有什么问题但愿你们不吝赐教 ~node

(一) 强大的 Shell

(1) terminal

shell 是什么,可能你们还有点迷糊,可是 terminal 这个词或许会感受熟悉一点,是的,通常在学习阶段,不少人安装系统的时候会选择安装图形化界面,相比较纯图形化界面,图形化界面看起来会友好一些,而在看一些书籍,视频的时候,咱们会很是频繁的使用到一个名叫 terminal (终端) 的东西,它在图形用户界面中,也算是一个很是重要的东西了,咱们就从这里讲起,Rush !!!linux

A:基本定义

终端(termimal),它确切的叫法是终端仿真器(termimal emulator),固然了大部分人更习惯于叫前者shell

  • 在 linux 下使用组合键 ctrl+alt+T 打开的就是终端
  • 固然,鼠标右键点击 open termimal 也是同样的

起码从我们用户看起来的角度来看,它提供了一个命令的输入输出环境,也就是说你想执行点啥命令操做,均可以在这里面经过具体的命令语法去执行ubuntu

B:terminal 和 Shell 的关系

标题是 Shell ,这都说了半天了,咋还没扯到呢vim

来了,来了,他们两个的关系很密切,在图形界面中的用户终端中,能够在这里用来启动 bash(也就是 Shell,由于 Linux 默认是使用 bash 后面你就知道,用它的快乐你想象不到)也就是说当你打开一个 terminal 的时候,terminal 和 Shell 会被操做系统关联起来,当咱们在 terminal 中输入命令后,shell 就负责解释命令c#

随意将 terminal 简单的理解成一个 “工具” 的概念也是能够的windows

下图就是分别在 乌班图 和 CentOS 下的终端界面安全

(2) Shell

A:基本定义

shell是一个命令行解释器,是 Linux 内核的一个外壳,负责外界与 Linux 内核的交互bash

shell接收用户或者其余应用程序的命令,而后将这些命令转化成内核能理解的语言并传给内核,内核执行命令完成后将结果返回给用户或者应用程序服务器

B:什么是Linux 内核 ?

上面一直又谈到了 Linux 的内核,这又是什么呢?

  • 计算机硬件包括运算器,控制器,存储器,输入/ 输出设备等等,而内核的做用就是让各类硬件设备各司其职且又能协同运行

  • 也就是说 Linux 系统的内核负责完成对硬件资源的分配、调度任务

  • 可是内核对于系统的正常运行,是绝对重要的一部分,因此咱们通常不直接编译内核参数,而是用户经过基于系统调用接口开发出的程序或者服务来管理计算机

C:什么是 Bash ?

早在 UNIX 时期,shell 有着许多版本,好比sh、C SHell、K SHell、等等,每一种Shell都各有特色

Bash(Bournce-Again SHell)这个shell是Bourne Shell的加强版本

一样如今大部分主流的 Linux 默认的选择了Bash解释器

  • 经过上下方向键来调取过以往执行过的命令

  • 命令或者参数仅需输入前几位就能够经过Tab键补全

  • 具备强大的批处理脚本

  • 具备实用的环境变量功能

D:Shell 的地位

经过这一张图片,你们应该就很好理解定义中所说 Shell 所处的地位了,简单的说,它就像是一个翻译官,帮助 用户与内核之间交流,用户想要执行一些 “命令” 就去告诉 Shell ,而后 Shell 再去和内核沟通,最终调用相应的程序或者服务去完成

到这里,小小的总结一下:terminal 这个工具活跃在为用户服务的面前,而 Shell 活跃在为用户服务的背后

(二) 提早说明

后面继续学习的东西,基本不涉及到图形界面了,不过做为初学,仍然能够在桌面中调出 terminal 进行使用,图形化会使得学习的压力也小一点,对我我的而言,平时 Linux 更多的是用来作服务器,稳定,可靠,安全是第一个考虑的问题,图形界面虽然简单,可是却须要安装更多服务,开放更多的端口,同时占用更多的系统资源,因此下面都涉及图形界面的讲解,再次强调一下,Ubuntu 和 CentOS 以及其余发行版本有些命令是不一样的,可是基础的基本也都差很少的,处于学习的态度,你们彻底能够在学习中使用不一样的发行版本试一试,若是你是一名开发的选手,我更推荐你在 CentOS 上实践,反正不会咱就学,不对咱就改呗

(三) 命令的基本格式

首先看一下命令的基本格式

基本格式:command [options] [arguments]

即:命令 [选项] [参数]

注意:别忘了命令后加空格

命令格式中的 [] 表明可选,有些命令能够不写选项或参数,也能执行

下面用常见的 ls 命令讲解一下(具体的知识点会放到下面说,这里只为了演示基本格式)

ls 的基本做用就是展开目录,而不一样的选项、参数

  • 直接输入 ls 指令(无选项参数)后回车,那是由于有默认参数存在
  • 输入 ls -l 显示出详细信息,这是一个短格式指令,因此使用 一个减号调用 -
  • 输入ls --all 列出包括隐藏文件的指令,这是这是一个长格式指令,它是英文完整单词,因此使用 两个减号调用 --

通常状况下,短格式选项是长格式选项的缩写,也就是一个短格式选项会有对应的长格式选项,就例如上面使用的长格式指令 ls --all 和其对应的短格式指令 ls -a的效果是一致的

可是也有一些例外好比刚开始的 ls 命令的短格式选项 -l 就没有对应的长格式选项

(四) Linux 文件和目录管理

(1) 目录结构

Linux 和 Windows 仍是有很大区别的,在正式学习命令以前,还有一个知识须要补充介绍,也就是目录的结构

我拿一台空着的乌班图给你们作演示,固然不一样的发行版本,仍是有区别的,不过这一篇主要是一些经常使用的基本命令,因此也不要紧,你们也能够CentOS 等等

你们能够在终端输入 ls / 看一下根目录下有些什么东西

固然了,其中天然有一些是比较重要的,咱们把关键的一些介绍一下

  • bin(binary) 存放二进制的可执行文件(这个目录存放着最常用的命令)
    • 例如 ls mkdir 就存在此处
  • sbin(super user binary):这里存放的是系统管理员使用的系统管理程序。
  • boot:这里存放的是引导 Linux 时使用的各类文件
  • dev(divices):该目录下存放的是 Linux 的设备文件
  • etc(etcetera):这个目录用来存放全部的系统管理所须要的配置文件和子目录
  • home:存放用户文件的根目录,其中有按照用户名称命令的文件夹,里面有相关的文件(非Root用户)
  • root:超级用户目录,即Root用户的主目录
  • lib(library):这个目录里存放着系统最基本的动态链接共享库,其做用相似于Windows里的DLL文件,几乎全部的应用程序都须要用到这些共享库
  • usr:这是一个很是重要的目录,用户的不少应用程序和文件都放在这个目录下,相似于windows下的program files目录
  • var:这个目录中存放着运行时须要改变数据的文件,包括各类日志文件
  • media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下

咱们只摘出来其中几个重要的介绍,固然还有一些就须要你们本身去探索一下啦~

(2) 绝对路径和相对路径

Linux 系统中全部的文件(目录)都被分为以根目录 “/” 开始的倒置的树状结构,学过数据结构中 “树” 这个结构,你们应该就明白了(节点上少,下多,像一个倒过来的树)

Linux使用正斜线 / 而不是反斜线 \ 来在文件路径中划分目录

在 Shell 中:

  • ~ 表明用户主目录
  • / 表明根目录
  • . 表明当前目录
  • .. 表明当前目录的上一级目录

这几个点,做为一个默认已知的基础铺垫,后面配合各类命令会及极其经常使用

A:绝对路径演示

最重要的一点:绝对路径必定是从根目录 / 写起的

例如,经过绝对路径打开 usr 文件夹 下的 src 目录

咱们以 root 用户目录出发(cd 为切换目录,pwd 为显示当前路径 后面会介绍,这里主要看绝对和相对路径的特色)

root@ubuntu:~# cd /usr/src
root@ubuntu:/usr/src# pwd
/usr/src
复制代码

上面的例子,即便咱们身在 root 目录下,可是经过绝对路径咱们仍然能够跳转到咱们想要去的目录下

root@ubuntu:~# cd usr/src
bash: cd: usr/src: No such file or directory
复制代码

若是咱们不从 / 写起,就会提醒找不到这个文件或者目录

B:相对路径演示

依旧从 root 目录出发,因为 root 的前一级目录就是 / 根目录,因此能够经过 cd .. 返回上一级目录,或者直接经过 cd / 回到根目录,因为 usr 就在根目录下,因此能够经过 cd ./usr 或者cd usr相对路径的写法进入,为了演示,我都拆开写了,你们也能够在 root 目录下,使用 ../usr 直接打开 usr目录

root@ubuntu:~# cd ..
root@ubuntu:/# cd ./usr
root@ubuntu:/usr# cd ./src
root@ubuntu:/usr/src# pwd
/usr/src
复制代码

C:总结

绝对路径永远是是相对于根路径 / 的,文件不动,则它的绝对路径不变

而相对路径是相对于当前所在目录而言的,当前所在目录改变,文件的相对路径也会变化

(3) 第一次使用命令的注意点

A:登陆后的显示

当你登陆后,首次出现的就是在用户(或超级用户)的目录下,因为你登陆的帐户不一样可能会有不一样的显示

  • 左侧显示用户名 右侧显示 $ 即普通用户登陆,例如:gzah7799@ubuntu:~$

  • 左侧显示 root 右侧为 # 即超级用户状态登陆,例如:root@ubuntu:~#

我这里选择了使用 root 直接登陆,固然你也能够选择使用普通用户登陆,可是最好给其赋予 root 权限,不然学习过程当中,有一些命令和操做是没有权限执行的

补充:不一样的发行版本中,提示符的外观可能有些许不一样,可是基本是一致的,一般会包括 (用户名@机器名 目录 和 #/$ 符号

B:家目录

用户登陆后,要有一个初始登陆的位置,这个初始登陆位置就称为用户的家目录(也称用户的主目录)

  • 超级用户的家目录:/root
  • 普通用户的家目录:/home/用户名

登陆后也会直接跳转到这个目录下

(4) 目录切换(cd)

cd 命令用于切换工做路径:也就是说**,输入 cd** 后接着输入绝对路径或者相对路径就能够完成目录的切换了

这个命令也太经常使用了,经过cd 能够很是灵活的切换工做目录,除了上面演示的绝对路径以及相对路径的写法,还有一些很是方便的写法能够搭配在 cd 后面

~ 表明当前登陆用户的主目录 ~ 用户名 表示切换至指定用户的主目录 - 表明上次所在目录 . 表明当前目录 .. 表明上级目录

随便写一个,你们能够参考下格式

root@ubuntu:/usr/src# cd ~
root@ubuntu:~#
复制代码

(5) 显示当前路径(pwd)

使用pwd命令能够显示当前用户所处的工做目录的绝对路径,pwd 是 Print Working Directory 的缩写

注意点:

Ubuntu 默认的终端下面,进入不少层的目录后,前面那个提示符会显示完整的路径,我感受不是很舒服,尤为是进去的目录比较深的时候,这一点能够度娘一下,把它改掉

  • root@ubuntu:/etc/vim#

CnetOS,虽然也显示出当前所在的目录,但它只会列出整个路径中最后的那一个目录,一样是 /etc/vim 文件夹,下面这种前面只显示 vim

  • root@localhost vim]#

(6) 查看目录下文件(ls)

经过前面的 cd 以及 pwd 命令咱们已经在 Linux 文件系统中乱跑了,可是再怎么跑也得有个方向,ls 就能够帮助咱们看到你跑到(切换)的这个地方(目录)放着哪些文件,而后再决定进行下一步操做

A:基本用法

因此这个 ls 也是很是经常使用的,使用频率甚至超过了cd

  • 只须要输入 ls 就能够直接查看当前工做目录下的一系列文件和子目录
  • 除此以外,还能够指定目录查看,例如指定查看 usr 目录下的内容
root@ubuntu:/# ls /usr
bin  games  include  lib  local  sbin  share  src
复制代码
  • 还有一种,就是指定多个目录查看,例如同时查看普通用户主目录以及 usr 目录
root@ubuntu:/# ls /home/gzah7799 /usr
/home/gzah7799:
Desktop  Documents  Downloads  examples.desktop  Music  Pictures  Public  Templates  Videos

/usr:
bin  games  include  lib  local  sbin  share  src
复制代码

B:选项和参数

搭配一点参数,带来加倍的快乐,固然这里都是短指令,例如 -a 的长指令是 -all 我都没有列举哈,我摘了几个经常使用的,不过这几个里面也主要用 -a 和 -l 比较多

选项(短) 含义
-a 显示全部文件及目录,包括隐藏文件(开头为 . 的文件)也一块儿罗列出来,这是最经常使用的选项之一。
-A 显示全部文件及目录,包括隐藏文件,但不包括 . 与 .. 这两个目录
-F 在文件或目录名后加上文件类型的指示符号例如,* 表明可运行文件,/表明目录,= 表明 socket 文件,\ 表明 FIFO 文件
-l 使用长格式列出文件和目录信息
-r 将文件以相反次序显示(原定依英文字母次序)
-S 用文件和目录大小排序
-t 将文件依创建时间的前后次序列出
-R 递归处理,将指定目录下全部文件及子目录及子目录中的文件一并列出(别乱试 - -)

-l举个例子:

补充:llls -l 的效果是同样的,能够理解为简写或者别名

root@ubuntu:/usr# ls -l
total 92
drwxr-xr-x   2 root root 49152 Apr 21 07:17 bin
drwxr-xr-x   2 root root  4096 Jul 24  2018 games
drwxr-xr-x  34 root root  4096 Apr 15 06:53 include
drwxr-xr-x 131 root root  4096 Apr 17 02:15 lib
drwxr-xr-x  10 root root  4096 Jul 24  2018 local
drwxr-xr-x   2 root root 12288 Apr 17 02:20 sbin
drwxr-xr-x 246 root root 12288 Apr 17 02:16 share
drwxr-xr-x   6 root root  4096 Apr 21 07:17 src
复制代码

C:长列表格式

前面看到了使用 cd -l使得目录下的内容经过长格式显示出告终果,而这种格式包含着不少的有用信息,简单看一下它提供了哪些

输出信息 信息描述
d 文件类型:“-”表明普通文件,d 表示目录
drwxr-xr-x 文件权限,以三个分,共分为三组,在后面的权限专篇文章,我会专门去讲解这一点
2 文件链接数
root 文件的用户全部者
root 文件的用户群全部者
49152 文件长度(也就是文件大小,不是文件的磁盘占用量)
Apr 21 07:17 文件的更改时间(mtime),或者是文件的最后访问时间(atime)
bin 文件 / 目录名称

(7) Linux建立目录(mkdir命令)

基本用法:mkdir [参数] 目录名称

  • -m<目录属性>或—mode<目录属性> :创建目录的同时设置目录的权限,而不是采用默认目录权限

    • 无参数默认建立目录dir,其默认权限为755,加-m 权限为777
  • -p--parents :若上层目录没有创建,则递归帮你建立上层目录

权限的问题咱们仍很少考虑,放到后面,这里分别演示一下无参数建立以及递归建立

root@ubuntu:~# mkdir ideal-20
root@ubuntu:~# cd ideal-20
root@ubuntu:~/ideal-20# mkdir -p a/b
root@ubuntu:~/ideal-20# cd a
root@ubuntu:~/ideal-20/a# cd b
root@ubuntu:~/ideal-20/a/b# pwd
/root/ideal-20/a/b
复制代码

(8) 删除空目录(rmdir)

基本用法:rmdir [选项] [目录]

  • -p:递归删除目录,当子目录删除其父目录为空时,也一同删除
  • -v:输出处理的目录详情

演示:

root@ubuntu:~/ideal-20/a/b# rmdir /root/ideal-20/a/b
复制代码

若是目录不为空就会报错

rmdir: failed to remove '/root/ideal-20': Directory not empty
复制代码

(9) 建立文件 (touch)

建立好了目录,就能够开始试着建立文件了,touch 能够帮助咱们建立文件,也能够修改目录的时间参数

基本用法:touch 文件名称

选项
-c--no-create 若是文件不存在,不创建任何文件,也不提示
-d<时间日期> 使用指定的时间日期,而非如今的时间
-t<日期时间> 使用指定的日期时间,而非如今的时间
-a 改变文件的访问时间为系统当前时间,无需设置时间选项
-m 改变文件的修改时间为系统当前时间,无需设置时间选项
-r 把指定文件或目录的日期、时间都设成和参考文件或目录的日期、时间想经过

比较用的多一点的就是简单的文件建立了

root@ubuntu:~# touch demo.txt
root@ubuntu:~# ls
demo.txt
复制代码

指定修改时间 也给出一下格式

touch -d "20200423 10:11" test.txt
复制代码

(10) 复制文件和目录(cp)

cp 命令,主要用来复制文件和目录

基本用法:cp [选项] 源文件 目标文件

选项 含义
-a 复制文件和目录以及属性(包括全部权和权限)
-i 若目标文件或目录已经存在时,进行覆盖时会先询问是否进行覆盖
-p 保留源文件或目录的属性,而非使用默认属性(备份经常使用);
-r 递归地复制目录及其内容
u 复制时,只会复制那些目标目录不存在的或者相应文件的更新文件
v 复制文件时,显示信息性消息

A:复制文件

  • 首先将 root 目录下的 demo.txt 复制到 var 文件夹下
root@ubuntu:~# cp demo.txt /var/
复制代码
  • 再次执行这一句,原来的内容就会被覆盖掉,若是想要提醒能够执行 cp -i

  • 当咱们处于别的目录下记得要写绝对路径,同时下面一同演示如何更名修改

root@ubuntu:/var# cp /root/demo.txt /var/test.txt
复制代码

B:复制目录

  • 把 var 目录下的 ideal 文件夹复制到 root目录下
root@ubuntu:/var# cp -r /var/ideal/ /root/
复制代码
  • 还有一种就是使用通配符,把第一个文件夹中的全部文件复制到第二个文件夹中
root@ubuntu:/var# cp -r /var/ideal/* /root/
复制代码

(11) 删除文件或目录(rm)

rm 命令用来删除文件和目录,同时默认状况下不会有任何的提示

基本用法:rm[选项] 文件或目录

选项 含义
-f 系统将再也不询问,而是直接删除目标文件或目录
-i 在删除文件或目录以前,系统会给出提示信息
-r 可删除指定目录及包含的全部内容,包括全部的子目录和文件

这个方法使用要特别当心,Linux 但是没有还原操做的,它默认认为用户是明智的,尤为搭配通配符进行删除的时候,必定要当心,能够提早使用 ls 命令看一下要删除的内容是否是本身想要的

下面两行命令分别就是删除文件和删除目录的简单演示

root@ubuntu:/var# rm test.txt
root@ubuntu:/var# rm -r /var/ideal/
复制代码

(12) 移动文件或重命名文件(mv)

基本用法:mv [参数] [源文件或目录] [目标文件或目录]

选项 含义
-b 若需覆盖文件,则覆盖前先进行备份
-f 若是目标文件或目录已经存在,则直接覆盖现有的文件或目录
-i 若目标文件或目录已经存在时,进行覆盖时会先询问是否进行覆盖
-u 移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件

A:移动文件

/root/demo.txt 文件移动到根目录 /

root@ubuntu:~# mv /root/demo.txt /
复制代码

B:移动文件并更名

/root/demo.txt 文件移动到根目录 / ,并重命名为 test.txt

root@ubuntu:~# mv /root/demo.txt /test.txt
复制代码

C:移动目录

移动/root/ideal目录中的全部文件和子目录到根目录

root@ubuntu:~# mv /root/ideal /
复制代码

D:重命名文件或目录

将 demo 文件重命名为 demo2 ,将 ideal 目录重命名为 ideal2

root@ubuntu:~# mv /root/demo /root/demo2
root@ubuntu:~# mv /root/ideal /root/ideal2
复制代码

(13) 文件间创建连接(ln)

基本用法:ln [选项] 源文件 目标文件

选项 含义
-s 若是目标文件已经存在,则删除目标文件后再创建连接文件
-f 若是目标文件已经存在,则删除目标文件后再创建连接文件

Linux 连接概念

Linux 连接分两种,一种被称为硬连接(Hard Link),另外一种被称为符号连接(Symbolic Link)。默认状况下,ln 命令产生硬连接。

硬链接

硬链接指经过索引节点来进行链接。在 Linux 的文件系统中,保存在磁盘分区中的文件无论是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。好比:A 是 B 的硬连接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不一样的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来讲是彻底平等的。删除其中任何一个都不会影响另一个的访问。

硬链接的做用是容许一个文件拥有多个有效路径名,这样用户就能够创建硬链接到重要文件,以防止“误删”的功能。其缘由如上所述,由于对应该目录的索引节点有一个以上的链接。只删除一个链接并不影响索引节点自己和其它的链接,只有当最后一个链接被删除后,文件的数据块及目录的链接才会被释放。也就是说,文件真正删除的条件是与之相关的全部硬链接文件均被删除。

软链接

另一种链接称之为符号链接(Symbolic Link),也叫软链接。软连接文件有相似于 Windows 的快捷方式。它其实是一个特殊的文件。在符号链接中,文件其实是一个文本文件,其中包含的有另外一文件的位置信息。好比:A 是 B 的软连接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不一样的 inode,继而指向两块不一样的数据块。可是 A 的数据块中存放的只是 B 的路径名(能够根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,若是 B 被删除了,A 仍然存在(由于两个是不一样的文件),但指向的是一个无效的连接。

(五) 文本操做(仅查看)

(1) 显示文本文件内容(cat)

使用 cat 命令能够显示文本文件的内容,其后能够直接跟文件名

同时 cat 也能够把几个文件内容附加到另外一个文件中,即链接合并文件

基本用法:cat [参数] [文件]

选项 含义
-A 显示全部的内容,包括特殊字符
-E 列出每行结尾的回车符 $;
-n 对输出的全部行进行编号;
-s 当遇到有连续 2 行以上的空白行时,就替换为 1 行的空白行。

选个长度小点的演示,别的你们亲手试一试就行了

root@ubuntu:/etc# cat -n issue
     1	Ubuntu 18.04.1 LTS \n \l
     2	
复制代码

补充:cat 是从第一行开始显示,而有一个命令 tac 则是从最后一行开始显示

(2) 分页显示文本文件的内容(more)

上面的演示是一个很短的文件,可是因为 cat 命令是直接将内容一次性输出到屏幕上,可是若是内容过多,查看起来就会很是的麻烦,由于信息会在屏幕上快速的滚动,对于长篇的文本内容,更推荐使用more命令来查看,同时它在下面会以百分比的形式告诉你已经读了多少

基本用法:more [选项] 文件名

除了特殊须要,通常也不加什么参数,下面的大概了解下就行了

选项 含义
-f 计算行数时,以实际的行数,而不是自动换行事后的行数。
-p 不以卷动的方式显示每一页,而是先清除屏幕后再显示内容。
-c 跟 -p 选项类似,不一样的是先显示内容再清除其余旧资料。
-s 当遇到有连续两行以上的空白行时,就替换为一行的空白行。
-u 不显示下引号(根据环境变量 TERM 指定的终端而有所不一样)。
+n 从第 n 行开始显示文件内容,n 表明数字。
-n 一次显示的行数,n 表明数字。

more 命令的执行会打开一个能够交互的界面,因此了解下面一些交互的指令仍是必要的

交互指令 功能
h 或 ? 显示 more 命令交互命令帮助。
q 或 Q 退出 more。
v 在当前行启动一个编辑器。
:f 显示当前文件的文件名和行号。
!<命令> 或 :!<命令> 在子Shell中执行指定命令。
回车键 向下移动一行。
空格键 向下移动一页。
Ctrl+l 刷新屏幕。
= 显示当前行的行号
' 转到上一次搜索开始的地方
Ctrf+f 向下滚动一页。
. 重复上次输入的命令
/ 字符串 搜索指定的字符串
d 向下移动半页
b 向上移动一页

(3) 显示文本文件前/后 N 行(head/tail)

这个命令的应用场景就是当你不想要看完整个文档,直线看前N行,就可使用它

基本用法:head [选项] 文件名 以及 tail [选项] 文件名

选项 含义
-n K 这里的 K 表示行数,该选项用来显示文件前 K 行的内容;
-c K 这里的 K 表示字节数,该选项用来显示文件前 K 个字节的内容
-v 显示文件名

(2) 和 (3) 都比较简单,就不演示了

(4) 显示(less)

less命令和more命令功能基本差很少,也是分屏的显示方式,同时支持 more 命令的全部参数,同时还多了一些选项,例如支持使用上下键翻页,总的来讲,它更加的全面以及完善

基本用法:less [选项] 文件名

选项暂时用的也很少,暂时搁着,之后有须要查就是了,下面的交互指令,了解一下就行了,把经常使用的例如上下页这种记住就能够了

交互指令 功能
/字符串 向下搜索“字符串”的功能。
?字符串 向上搜索“字符串”的功能。
n 重复*前一个搜索(与 / 成 ? 有关)。
N 反向重复前一个搜索(与 / 或 ? 有关)。
b 向上移动一页。
d 向下移动半页。
h 或 H 显示帮助界面。
q 或 Q 退出 less 命令。
y 向上移动一行。
空格键 向下移动一页。
回车键 向下移动一行。
【PgDn】键 向下移动一页。
【PgUp】键 向上移动一页。
Ctrl+f 向下移动一页。
Ctrl+b 向上移动一页。
Ctrl+d 向下移动一页。
Ctrl+u 向上移动半页。
j 向下移动一行。
k 向上移动一行。
G 移动至最后一行。
g 移动到第一行。
ZZ 退出 less 命令。
v 使用配置的编辑器编辑当前文件。
[ 移动到本文档的上一个节点。
] 移动到本文档的下一个节点。
p 移动到同级的上一个节点。
u 向上移动半页。

(5) 总结

这几个查看文本的命令用几句话总结一下

  • cat 从第一行开始显示内容,特色是一次性加载完
  • tac 从最后一行开始显示内容,特色是一次性加载完
  • more 一页一页的显示文件内容
  • less 与 more 相似,能够向前翻页,更加完善
  • head 只显示前 N 行
  • tail 只显示后 N 行

(六) Linux 打包和压缩

在网络上,人们天然是更倾向于传输通过压缩后的文件,因为其体积小,因此传输时间得以缩短,下面咱们就来了解一下 Linux 针对文件压缩等的概念

(1) 区分打包和压缩的概念

在 Windows 下,咱们一般会借用一些第三方的压缩软件,例如 WinRAR Bandizip 进行文件的压缩,常见的格式 也就是 .rar .zip .7z 等,而一样 Linux 也有着它压缩的方式与一些格式,在 Linux 中,在压缩以前,一般还有一个打包的操做,咱们首先来了解一下这两个概念

① 打包,也称为归档,是将一个文件或者目录的集合存储在一个文件中,打包后的文件没有通过压缩,所以它占用的空间是其中全部文件目录的总和

  • 说白了,就是把一些文件放在一块儿变成一个包,方面存储和和传输

② 压缩的原理就是将文件中相同的信息用一个字符代替,文件体积就能变小,压缩对于文本或者数据类文件有比较明显的做用

  • 就好比,文本中总出现,理想二旬不止 这几个字,那么这些都会被一个代码表示,而后写入词典文件

下面看一下具体的用法

(2) 打包/解打包命令(tar )

A:打包

基本用法:tar [选项] 源文件或目录

同时因为打包(归档)后的包文件都是 .tar 结尾因此,又叫作 tar 包

选项 含义
-c 将多个文件或目录进行打包。
-A 追加 tar 文件到归档文件。
-f 包名 指定包的文件名。包的扩展名是用来给管理员识别格式的,因此必定要正确指定扩展名;
-v 显示打包文件过程;

注意哈,使用 tar 命令指定选项时能够不在选项前面输入“-”,输不输入都同样的

演示下,首先 root 目录下有 demo.txt 文件以及 test 目录,这三种状况就分别表明了,打包文件、目录,以及同事打包多者

root@ubuntu:~# tar -cvf demo.txt.tar demo.txt
demo.txt

root@ubuntu:~# tar -cvf test.tar test
test/

root@ubuntu:~# tar -cvf demo-test.tar demo.txt test
demo.txt
test/
复制代码

查看一下结果

root@ubuntu:~# ls
demo-test.tar  demo.txt  demo.txt.tar  test  test.tar
复制代码

若是想要进而对其压缩,就能够执行下面的命令,暂时先看看,别急,这种方式有点麻烦,能更加优化的

这样 文件就加上了 .gz 后缀了,这是一种压缩格式,后面再细说

root@ubuntu:~# gzip demo.txt.tar
root@ubuntu:~# ls
demo-test.tar  demo.txt  demo.txt.tar.gz  test  test.tar
复制代码

B:解打包

基本用法:tar [选项] 压缩包

选项 含义
-x 对 tar 包作解打包操做。
-f 指定要解压的 tar 包的包名。
-t 只查看 tar 包中有哪些文件或目录,不对 tar 包作解打包操做。
-C 目录 指定解打包位置。
-v 显示解打包的具体过程。

其实与打包区别是不大的,只不过把 -cvf 替换成了 -xvf

root@ubuntu:~# tar -xvf demo.txt.tar
复制代码

前者是默认解压在当前目录的,若是想要指定目录解压,须要使用 -C 选项,例以下面解压到 usr 目录下

root@ubuntu:~# tar -xvf demo.txt.tar -C /usr
复制代码

若是想看一下包中有哪些文件,能够 将 -x 替换成 -t 选项

root@ubuntu:~# tar -tvf test.tar
复制代码

C:tar 命令直接作打包后压缩/解压缩

上面虽然演示了一下打包后,再进行压缩的一个例子,可是这也太麻烦了吧,打包压缩,须要先打包成 .tar 再压缩成 .tar.gz 别急阿,前面演示,是为了让你们分的更清楚一点,天然是有着更加方便的操做方式,下面来看一下

基本用法:tar [选项] 压缩包 源文件或目录

经常使用的有两种:

  • -z:压缩和解压缩 ".tar.gz" 格式
  • -j:压缩和解压缩 ".tar.bz2"格式

① .tar.gz 方式

  • 打包压缩
root@ubuntu:~# tar -zcvf demo.txt.tar.gz demo.txt
复制代码
  • 解压
root@ubuntu:~# tar -zxvf demo.txt.tar.gz
复制代码

② -jcvf 方式

这个的区别就是把上面的 -zcvf 换成了 -jcvf 也就是 -z 变成了 -j

  • 打包压缩
root@ubuntu:~# tar -jcvf demo.txt.tar.gz demo.txt
复制代码
  • 解压
root@ubuntu:~# tar -jxvf demo.txt.tar.gz
复制代码

同时上面说的, -C用于指定解压位置、-t 用于查看压缩包内容,也是同样的哈

总结:通常来讲,.tar.gz.tar.bz2 是比较经常使用的,后面这两种直接打包压缩 解压缩的方式要记好了

(七) 总结

这一篇文章,也是除了安装,以及配置网络,环境之外,关于 Linux 的第一篇,这一篇主要讲解了关于 Linux 的经常使用命令,固然了,都是一些比较基础的,本来 vi/vim 也想放到这里,可是如今已经1w字左右了,篇幅太长,给你们查阅起来也不是很方便,就挪到下一篇说,虽说我暂时没想着把 Linux 学到多么深的一个层次,不过即便做为基础认识,还有一些例如用户、还有权限等等的问题也没有说到,后面我会再出几篇文章说一下

写这篇文章,主要缘由仍是由于本身欠缺这方面的知识,顺便当总结,也一样分享给你们一块儿交流,固然啦,这篇文章都是一些入门的基础操做,没什么难度可言,也渴望与你们交流

感谢你们的支持,谢谢!

(八) 结尾

若是文章中有什么不足,欢迎你们留言交流,感谢朋友们的支持!

若是能帮到你的话,那就来关注我吧!若是您更喜欢微信文章的阅读方式,能够关注个人公众号

在这里的咱们素不相识,却都在为了本身的梦而努力 ❤

一个坚持推送原创开发技术文章的公众号:理想二旬不止

相关文章
相关标签/搜索