Linux基本操作

举报
斌哥来了 发表于 2021/07/27 19:04:18 2021/07/27
【摘要】 一、为什么我们要学习Linux 相信大部分人的PC端都是用Windows系统的,那我们为什么要学习Linux这个操作系统呢???Windows图形化界面做得这么好,日常基本使用的话,学习成本几乎为零。 而Linux不一样,可能刚接触Linux的人会认为:Linux好麻烦哦,不好玩,都是字符界面。不直观、这个破系统是用来干嘛的 日常用的话Windows是比较顺手的,但是我们要知道的是:我们开发...

一、为什么我们要学习Linux

相信大部分人的PC端都是用Windows系统的,那我们为什么要学习Linux这个操作系统呢???Windows图形化界面做得这么好,日常基本使用的话,学习成本几乎为零。

而Linux不一样,可能刚接触Linux的人会认为:Linux好麻烦哦,不好玩,都是字符界面。不直观、这个破系统是用来干嘛的

日常用的话Windows是比较顺手的,但是我们要知道的是:我们开发出来的程序一般都是放在Linux下运行的。

那可能就会有人提出疑问了:Windows同样是操作系统,为啥要放在Linux下,而不放在Windows下呢??相信Windows也是可以运行我们写出来的程序的。

我总结了Linux的几个优点:

1. 免费

2. 很多软件原生是在Linux下运行的,庞大的社区支持,生态环境好。

3. 开源,可被定制,开放,多用户的网络操作系统。

4. 相对安全稳定


二、Linux的基础知识

Linux系统的组成:

1. linux内核(linus 团队管理)

2. shell:用户与内核交互的接口

3. 文件系统:ext3、ext4等;windows 有 fat32 、ntfs

4. 第三方应用软件

2.1Shell的基本知识

Shell是系统的用户界面,提供了 用户与内核进行交互操作的一种接口 (命令解释器)

Shell可以执行:

内部命令

应用程序

shell脚本


使用 type 命令可以 区分 内部命令和外部命令

于是乎,我们利用Shell就可以干下面这些事了:

命令行解释(这是用得最多的!)

命令的多种执行顺序

通配符( wild-card characters )

命令补全、别名机制、命令历史

I/O重定向( Input/output redirection )

管道( pipes )

命令替换( 或$( ) )

Shell编程语言( Shell Script )


Shell的主要版本有以下这么多:

我们 常用(默认)的就是bash (bourne again shell)



使用 ps 命令观察正在执行的shell


       

2.2Linux基本目录结构

在Windows下,会有 基本的目录结构 的:




Linux下也不例外了,也是有基本的目录结构的:




Linux 文件系统是一个 目录树的结构 ,文件系统结构从一个根目录开始,根目录下可以有任意多个文件和子目录,子目录中又可以有任意多个文件和子目录

bin 存放二进制可执行文件(ls,cat,mkdir等)

boot 存放用于系统引导时使用的各种文件

dev 用于存放设备文件

etc 存放系统配置文件

home 存放所有用户文件的根目录

lib 存放跟文件系统中的程序运行所需要的共享库及内核模块

mnt 系统管理员安装临时文件系统的安装点

opt 额外安装的可选应用程序包所放置的位置

proc 虚拟文件系统,存放当前内存的映射

root 超级用户目录

sbin 存放二进制可执行文件,只有root才能访问

tmp 用于存放各种临时文件

usr 用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录

var 用于存放运行时需要改变数据的文件


2.3命令基本格式

cmd [options] [arguments] ,options称为选项,arguments称为参数

选项和参数都作为Shell命令执行时的输入,它们 之间用空格分隔开

Linux是 区分大小 写的

一般来说 ,后面跟的选项如果 单字符 选项前使用 一个 减号 - 单词选项 前使用两个 减号 --


在Linux中, 可执行的文件 也进行了分类:

内置命令 :出于效率的考虑,将一些常用命令的解释程序 构造在Shell内部

外置命令 :存放在/bin、/sbin目录下的命令

实用程序 :存放在/usr/bin、/usr/sbin、/usr/share、/usr/local/bin等目录下的实用程序

用户程序 :用户程序经过编译生成可执行文件后,可作为Shell命令运行

Shell脚本 :由Shell语言编写的批处理文件,可作为Shell命令运行


2.4通配符

学过一些正则表达式的或者有点基础的同学对通配符应该就不陌生的了,在Linux也有通配符(在搜索的时候挺有用的)

*:匹配任何字符和任何数目的字符

?:匹配单一数目的任何字符

[ ]:匹配[ ]之内的任意一个字符

[! ]:匹配除了[! ]之外的任意一个字符,!表示非的意思


2.5文件的类型

在Linux下文件的类型有这么多:

普通文件 -

目录 d

符号链接   l

o 硬链接: 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块

o 软链接: 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径(简单地理解为 Windows 中常见的快捷方式)。

字符设备文件  c

块设备文件 b

套接字 s

命名管道 p

我们常见的就是普通文件,目录和符号链接。其他的了解一下即可~


2.5.1用户主目录

前面已经说了,我们的Linux是 多用户的网络系统 !所以,我们可以在Linux下创建多个用户, 每个用户都会有自己专属的空间

所以,在创建用户时,系统管理员 会给每个用户建立一个主目录 ,通常在 /home/ 目录下

比如:用户osmond的主目录为: /home/osmond

用户 对自己主目录的文件拥有所有权 ,可以在自己的主目录下进行相关操作。



三、常用的命令

3.1常用的文件、目录操作命令

这是我们 使用得最多 的命令了, Linux最基础的命令

可用  pwd 命令查看用户的当前目录

可用  cd  命令来切换目录

. 表示当前目录

..  表示当前目录的上一级目录(父目录)

- 表示用 cd 命令切换当前目录之前所在的目录

~  表示 用户主目录 的绝对路径名


绝对路径:

以斜线(/)开头 ,描述到文件位置的 完整说明  ,任何时候你想指定文件名的时候都可以使用

相对路径 :

不以斜线(/)开头 ,指定 相对于你的当前工作目录而言的位置  ,可以被用作指定文件名的简捷方式

tips: 输入命令的时候要常用tab键来补全

ls :显示文件或目录信息

mkdir :当前目录下创建一个空目录

rmdir :要求目录为空

touch :生成一个空文件或更改文件的时间

cp :复制文件或目录

mv :移动文件或目录、文件或目录改名

rm :删除文件或目录

ln :建立链接文件

find :查找文件

file/stat :查看文件类型或文件属性信息

cat 查看文本文件内容

more 可以分页看

less 不仅可以分页,还可以方便地搜索,回翻等操作

tail -10 : 查看文件的尾部的10行

head -20 :查看文件的头部20行

echo :把内容重定向到指定的文件中 ,有则打开,无则创建

管道命令 |  :将前面的结果给后面的命令,例如: ls -la | wc ,将ls的结果加油wc命令来统计字数

重定向 > 是覆盖模式, >> 是追加模式 ,例如: echo "Java3y,zhen de hen xihuan ni" > qingshu.txt 把左边的输出放到右边的文件里去

学了这些命令我们能干嘛? 其实就是在Windows下复制文件、粘贴文件、创建文件、查看文件这几种 ~~~


3.2文件打包和压缩命令

在Windows操作系统下,我们会使用WinRAR或者快压等等的压缩软件来进行压缩或者解压。

在Linux下 当然也存在压缩或解压的操作咯 ,下面我们就来学习一下在Linux下是怎么压缩和解压的!




压缩的方式也是有好几种,我们 常用 的有下面这三种:

gzip

bzip2

tar

常用的压缩的命令就有:

gzip filename

bzip2 filename

tar -czvf filename

常用的解压命令有:

gzip -d filename.gz

bzip2 -d filename.bz2

tar -xzvf filename.tar.gz


3.3正则表达式+grep


上面我们已经学过了 cat more less tail 这些查看文本文件的命令了,但是我想 快速查看这个文本文件下的某些关键字是否存在 ,那怎么办???

在Windows下就比较简单的,几乎所有的文本编辑器(记事本)都支持 CTRL+F ,往里面输入关键字就可查找出来:


3.3.1正则表达式








3.3.2grep命令

grep(global search regular expression)是一个 强大的文本搜索工具 。grep 使用正则表达式搜索文本,并把匹配的行打印出来。

格式: grep [options] PATTERN [FILE...]

PATTERN 是查找条件: 可以是普通字符串、可以是正则表达式 ,通常用单引号将RE括起来。

FILE 是要查找的文件,可以是用空格间隔的多个文件,也可是使用Shell的通配符在多个文件中查找PATTERN,省略时表示在标准输入中查找。

grep命令不会对输入文件进行任何修改或影响,可以使用输出重定向将结果存为文件

例子:

在文件 myfile 中查找包含字符串 mystr的行

o grep -n mystr myfile

显示 myfile 中第一个字符为字母的所有行

o grep '^[a-zA-Z]' myfile

在文件 myfile 中查找首字符不是 # 的行( 即过滤掉注释行

o grep -v '^#' myfile

列出/etc目录(包括子目录)下所有文件内容中包含字符串“root”的文件名

o grep -lr root /etc/*


3.4几种提高工作效率的方法

自动补全命令

o TAB键

历史命令

o 上下箭头键

别名alias


3.5Shell变量 和 Shell环境

在Windows下有用户的环境变量,系统的环境变量。在Linux一样也是有的。




Shell 变量大致可以 分为三类

内部变量 :由系统提供,用户只能使用不能修改。

o ?

o GROUPS

环境变量 :这些变量决定了用户工作的环境,它们不需要用户去定义,可以直接在 shell 中使用,其中某些变量用户可以修改。

用户变量 :由用户建立和修改,在 shell 脚本编写中会经常用到。

o 变量赋值(定义变量)

varName=Value

export varName=Value

o 引用变量 $varName

Shell变量的 作用域

局部变量 的作用范围仅仅 限制在其命令行所在的Shell或Shell脚本文件中

全局变量 的作用范围则包括 本Shell进程及其所有子进程

局部变量与全局变量 互换 :可以使用  export  内置命令将局部变量设置为全局变量。 可以使用  export  内置命令将全局变量设置为局部变量。

export命令

显示 当前Shell可见的全局变量

o export [-p]

定义变量值的同时声明为全局变量

o export < 变量名 1= 1> [< 变量名 2= 2> ...]

声明已经赋值的某个(些) 局部变量为全局变量

o export < 变量名 1> [< 变量名 2> ...]

声明已经赋值的某个(些) 全局变量为局部变量

o export -n < 变量名 1> [< 变量名 2> ...]

Shell环境变量:

环境变量定义 Shell 的 运行环境 ,保证 Shell 命令的正确执行。

Shell用环境变量来确定查找路径、注册目录、终端类型、终端名称、用户名等。

所有环境变量 都是全局变量 (即可以传递给 Shell 的子进程),并可以由用户重新设置。




Shell变量:查询、显示和取消

显示当前已经定义的所有变量

o 所有 环境变量 env

o 所有 变量和函数 (包括环境变量) : set

显示某(些)个变量的值

o echo $NAME1 [$NAME2 ……]

取消变量的声明或赋值

o unset <NAME>



四、VI编辑器





4.1普通模式

G 用于直接跳转到文件尾

ZZ 用于存盘退出Vi

ZQ 用于不存盘退出Vi

/ 和? 用于查找字符串

n 继续查找下一个

yy 复制一行

p 粘帖在下一行,P粘贴在前一行

dd 删除一行文本

x 删除光标所在的字符

u 取消上一次编辑操作(undo)


4.2插入模式

在 Normal 模式下输入插入命令  i a o 进入insert模式。用户输入的任何字符都被vim 当做文件内容保存起来 ,并将其显示在屏幕上。

在文本输入过程中,若想回到Normal模式下,按 Esc 键即可。


4.3命令行模式

Normal 模式下,用户按冒号  : 即可进入 Command 模式,此时 vim 会在显示窗口的最后一行 (屏幕的最后一行) 显示一个 “:” 作为 Command 模式的提示符,等待输入命令。

:w  保存当前编辑文件,但并不退出

:w  newfile 存为另外一个名为 “newfile” 的文件

:wq  用于存盘退出Vi

:q!  用于不存盘退出Vi

:q 用于直接退出Vi (未做修改)


设置Vi环境:

:set autoindent 缩进,常用于程序的编写

:set noautoindent 取消缩进

:set number 在编辑文件时显示行号

:set nonumber 不显示行号

:set tabstop=value 设置显示制表符的空格字符个数

:set 显示设置的所有选项

:set all 显示所有可以设置的选项



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。