看完这篇Linux基本操作你就会了

 

一、我们为什么要学习Linux

相信大部分人的pc端都是windows系统,那么我们为什么要学习Linux这个操作系统呢???Windows图形化界面做的那么好,学习成本几乎为0.

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

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

那可能就有人会提出疑问了:

windows同样是操作系统,为什么要放在Linux下,而不放在windows下呢??相信windows下也是可以运行我们写出来的程序的

我总结了Linux的几个优点:

  1、免费

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

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

  4、相对安全稳定

参考资料:

所以开发者选择了Linux来跑我们自己写出来的程序

 

二、Linux的基本知识

Linux系统的组成

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

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

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

  4、第三方应用软件

2.1 Shell的基础知识

除了Shell、其他的应该都挺好懂的,那么Shell是什么东西呢??

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

Shell可以执行:

  内部命令

  应用程序

  Shell脚本

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

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

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

       2、命令的多种执行顺序

    3、通配符(wild-card characters)

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

    5、I/O重定向(Input/Output redirection)

    6、管道(pipes)

    7、命令替换(或$())

    8、Shell编程语言(Shell Script)

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

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

Bash

bash是大多数Linux系统默认的Shell

bash与bsh是完全向后兼容的,并且在bsh的基础上增加和增强了很多特性

bash也包含了很多C shell和Korn Shell中的优点

bash有很灵活和强大的编程接口,同时又有很友好的用户界面

Ksh

Korn Shell 是由Dave Korn所写。它是UNIX系统上的标准Shell。

在Linux环境下有一个专门为Linux系统编写的Korn Shell的扩展版本

即Public Domain Korn Shell(pdksh)

tcsh

tcsh是C Shell的扩展。tcsh与csh完全向后兼容,但它包含了更多的使用户感觉方便的新特性,其最大的提供是在命令行编辑和历史浏览方面

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

 

2.2 Linux基本的目录结构

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

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

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

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

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

  3、dev用于存放设备文件

  4、etc用于存放系统配置文件

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

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

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

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

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

  10、root 超级用户目录

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

  12、tmp 用于存放各种临时文件

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

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

2.3 命令基本格式

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

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

  Linux是区分大小写的

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

但这是一般的规律鸭,有些命令不是这样的鸭

例子:

ls -a 和ls -all

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

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

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

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

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

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

 

2.4 通配符

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

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

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

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

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

 

2.5 文件的类型

在linux下文件的类型有这么多

  1、普通文件-

  2、目录 d

  3、符号链接l

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

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

  4、字符设备文件c

  5、块设备文件b

  6、套接字s

  7、命令管道p

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

2.5.1 用户主目录

可能在网上查阅资料的时候会出现用户主目录这个每次,那他是什么呢???

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

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

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

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

三、常用命令

上面说了一堆基础的概念,这是给我们敲命令之前打了一点基础,在敲命令的同时也会遇到一些比较重要的知识点,那就到时候再说说~~~

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

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

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

  2、可用cd命令来切换目录

    . 表示当前目录

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

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

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

绝对路径:

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

相对路径:

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

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

ls:显示文件或目录信息

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

rmdir:要求目录为空

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

cp:复制文件或目录

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

rm:删除文件或目录

ln:建立链接文件

find:查找文件

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

cat:查看文本文件的内容

more:可以分页查看

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

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

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

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

管道命令 | :将前面的结果给后面的命令,例如

ls -la | wc

将ls的结果加油wc命令来统计字数

重定向>是覆盖模式,>>是追加模式,例如

echo "I love you" >qingshu.txt 把左边的输出放到右边的文件里去

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

3.1.1 常用的文件、目录操作练习题

巩固一下基础,来做做题目:

  1、Linux的shell程序默认是bash程序

  2、Linux命令格式包含三个部分,分别是:命令、选项、参数

  3、Linux命令选项前为单个减号- ,后面一般为单字符,选项前为双减号 --,后面一般为单词

  4、Linux命令中使用的通配符有? *  [ ]

  5、命令ls /usr/bin/w*的效果是 列出指定目录的所有以w开头的文件或目录

  6、命令ls/usr/bin/w??的效果是 列出指定目录下的以w开头名称长度为3的所有或目录

  7、命令ls/usr/bin/[xyz]*的效果是 列出指定目录下的文件名以x或y或z开头的所有文件或目录

  8、命令 ls/usr/bin/[!a-h]*的效果是 列出指定目录下的文件名不以a到h区间字母开头的所有文件或目录

  9、目录操作时, " . "表示当前目录

  10、目录操作时,".."表示上一级目录

  11、目录操作时,“-”表示上一次工作目录

  12、目录操作时,“~”表示用户主目录

  13、命令ln可以建立文件链接,这种链接分为:硬链接和软链接

  14、命令touch可以改变文件的三种时间,分别是:access time、modify time、change time

 进入/tmp目录建立chy8,查看文件时间。

在账户的主目录中,建立一个dog目录,进入dog目录后,建立一个cat8目录,进入cat8目录,显示当前目录,然后返回上一级目录,删除cat8目录

复制/etc/passwd文件到账户主目录,修改账户主目录下passwd为passwd8

查找文件名叫做zcat的文件,复制该文件到/tmp,用长格式列出该文件,然后删除/tmp目录下的所有文件,并检查文件是否已被删除

复制/etc/hosts文件到账户主目录下,在账户主目录中建立一个硬链接(文件名为hostschy)链接到主目录下的hosts文件,分别查看hosts和hostschy的文件的inode信息

创建vdir文件到账户主目录下;在账户主目录中建立一个软链接文件(文件名为newdir),链接到主目录下的dog目录下的vdir文件;分别查看vdir和newdir的文件的inode信息

 

用长格式列出目录/usr/bin目录下的所有文件,输出重新定向到文件out8,检查结果;用长格式列出目录/etc目录下的所有文件,输出结果补充到文件out8末尾

用长格式列出/usr/bin目录下的所有文件,通过管道与more命令连接,实现对文件列表的浏览

 

 

 >和>>有什么区别?

>是覆盖方式重定向到新的文件,>>是以补充方式添加到原文件的末尾

通过管道和more命令,浏览文件方便在哪里?

对于文件列表超出一个屏幕的情况,这种方式可以分屏浏览,比较方便

 

3.2文件打包盒压缩命令

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

在Linux下当然也可以压缩或者解压缩,下面我们就来学习一下Linux下是怎么压缩和解压缩的

命令

功能
xz 使用LZMA算法的高性能压缩/解压工具
gzip 流行的GNU gzip数据压缩/解压程序
bzip2 免费的无专利的高性能数据压缩工具
zip/unzip 与winzip兼容的压缩/解压缩工具
rar 与winrar兼容的压缩/解压缩工具
7za 使用LZMA算法的高性能压缩/解压工具
tar 文件打包、归档工具

 

文件后缀 说明
.bz2 用bzip2压缩的文件
.gz 用gzip压缩的文件
.xz 用xz压缩的文件
.tar 用tar打包的文件也称tar文件
.tbz tar打包时用bzip2压缩的文件
.tgz tar打包时用gzip压缩的文件
.zip 用zip/winzip压缩的文件
.rar 用rar压缩的文件
.7z 用7za压缩的文件

 

常用的压缩的命令就有:

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查找关键字

在Linux下,没有图形化界面,没有CTRL+F的情况下,如果不懂一些命令的话,那还真难找对应的字符出来,下面我们就来说说如何快速查找一个文本文件下的某些字符

3.3.1正则表达式

首先,我们就来说说正则表达式,如果接触过的同学就知道,这玩意并不好记,一旦不用,很容易就忘记了,所以只能在用的时候查查了,所以下面我就直接给出一些规则了,不多说了。

3.3.2 grep命令

grep(global search regular expression)是一个强大的文本搜索工具

 grep使用正则表达式搜索文本,并将匹配的行打印出来

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

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

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

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

例子

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

  grep -n mystr myfile

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

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

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

  grep -v  '^#' myfile

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

  grep -lr root  /etc/*

grep常用选项

-c:统计搜索字符串的次数
-i:忽略字母大小写
-y:忽略字母大小写
-n:输出对应行号
-v:反向搜索,显示不存在对应字符串的信息
-r:递归目录进行查找
--color=auto:将找到的关键字显示颜色
-E:使用扩展正则表达式
-o:只输出文件中匹配的部分
-l:列出文件内容符合指定模式的文件名称
-L:列出文件内容不符合指定模式的文件名称
-w:只显示全字符合的列
-x:只显示全列符合的列
-q:不显示任何信息
-H:在显示符合模式的那一列之前标示该列所属的文件名称
-h:在显示符合模式的那一列之前不显示改了所属的文件名称
-F:将模式视为固定字符串的列表
-G:将模式视为普通字符串的列表
-e <模式>:指定字符串作为查找内容的模式
-d <进行动作>:指定要查找的是目录而非文件,必须使用此参数,否则报错
-b:在显示符合模式的哪一行之前,也显示该行前后的内容
-a:不要忽略二进制数据
-C <number>:显示除了匹配模式的行外,还显示对应匹配的前后number行
-A <number>:显示除了匹配模式的行外,还显示对应匹配的后number行

 用grep查找/etc/passwd文件中以a开头的行,要求显示行号;查找/etc/passwd文件中以login结束的行;

grep -n ^a /etc/passwd

grep login$ /etc/passwd

 

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

自动补全命令

TAB键

历史命令

上下箭头

别名alias

显示shell当前已经定义的别名

 

# alias lx=ls
# lx
anaconda-ks.cfg Desktop install.log install.log.syslog qte

 

显示shell当前已经定义的别名

3.5 shell变量与shell环境

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

Shell变量可以大至分为三类

1、内部变量:系统提供,用户只能使用不能修改GROUPS

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

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

  变量赋值(定义变量)

    varName=value

    export varName=value

  引用变量$varName

Shell变量的作用域:

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

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

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

  

export命令:

1、显示当前shell可见的全局变量

  export [-p]

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

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

3、声明已经赋值的某个局部变量为全局变量

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

4、声明已经赋值的某个全局变量为局部变量

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

Shell环境变量:

环境变量定义 Shell 的运行环境,保证 Shell 命令的正确执行。
Shell用环境变量来确定查找路径、注册目录、终端类型、终端名称、用户名等。
所有环境变量都是全局变量(即可以传递给 Shell 的子进程),并可以由用户重新设置。

常见的shell环境变量

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

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

      所有环境变量env

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

  2、显示某些变量的值

      echo  $NAME1[$NAME2....]

     3、取消变量的声明或赋值

      unset <NAME>

 3.5.1 Shell变量和Shell环境练习题

Shell环境变量的值是否可以修改?为什么?

 答:环境变量的值一般情况下,可以修改。但一定要慎重修改,因为一旦修改错误,对shell正常运行造成严重影响,甚至导致shell无法运行。

四、Vi编辑器

相信没有用过Linux的同学在看一些段子的时候都会看到过两个编辑器:

vim和emacs

下面我们学习如何简单使用vi。vi 是 “Visual interface” 的简称,它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。

vi可以看做成我们Windows下的记事本
vim 即 Vi IMproved,vi 克隆版本之一
使用Vi来编辑文件:

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 显示所有可以设置的选项

4.4 Vi练习题

四、总结

本文主要讲解了Linux的最基础的知识,可以简单地操作Linux了。命令可以说是学不完的,只能是记住Linux是有这个功能,到时候去网上查查也很方便。

主要是多练、多玩就可以记住一些常用的Linux命令了~~~~

posted @ 2019-04-18 16:57  chy8  阅读(511)  评论(0)    收藏  举报