Linux(期末总结)

157 阅读15分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

目录

一.了解Linux操作系统

操作系统的分类

Linux的历史

Linux内核与发行版本

使用Linux操作系统

SSH协议

用户管理

Linux进程

二.了解Linux文件系统

Linux的文件系统

对比Linux和Windows的文件系统

文件系统的属性

三.了解Linux中的文件

1.文件的命名

2.文件的位置

3.文件的类型

4.文件的访问权限/用户类型

5.文件的管理

四.操作Linux的目录和文件

1.命令语法

2.操作Linux的目录

        3.操作Linux的文件

六.对文件的内容进行操作

1.基础篇

2.高级篇

重定向

过滤器

管道

七.shell

 1.shell基础

 什么是shell?

 shell的类型

使用shell脚本

2.shell高级

命令替换

使用编程构造

处理shell脚本中的参数

调试shell脚本

使用shell脚本的Linux服务管理

八.实用程序


一.了解Linux操作系统

操作系统的分类

什么是操作系统

操作系统(operating system    OS),如果一台电脑只有硬件没有操作系统,称之为裸机,用户无法与硬件进行交互。操作系统来管理一些硬件和维护一些软件的资源。

操作系统的分类

桌面操作系统

有Windows,mac,Linux

服务器操作系统

​编辑

开发游戏用Windows Server比较多,大数据应用服务用Linux比较多

嵌入式操作系统

比如单片机,汽车上的控制器,电梯上的控制程序的操作系统都是嵌入式操作系统。

​编辑

移动设备操作系统

​编辑

Linux的历史

Unix是由贝尔实验室实现的早期使用的操作系统,但是不开源。

Linus torvalds便研发了Linux并开源免费,Linux是类似Unix的操作系统,指的是外观上和操作方式上相似,但源码并不是抄袭。便于更好的推广和降低人们学习成本。

Linux内核与发行版本

内核

操作系统的核心部分称为内核,Linus torvalds公开内核代码允许他人来一起完善Linux操作系统。

Linux操作系统 = linux内核+GUN软件及系统软件+必要的应用程序软件。

发行版本

发行版本就是由Linux内核与各种常用软件的集合产品。

​编辑

使用Linux操作系统

 安装vmware虚拟机下载centos,便可在自己的电脑上使用Linux的操作系统。

同时vmware还可以实现搭建大数据的学习环境

大数据需要分布式的应用,就需要多个主机。用vmware来创建多个虚拟机便可以实现。

​编辑

在虚拟机上安装多个操作系统就构成了一个局域网。

自己的笔记本处理两个网络的中间,主机和这些虚拟机组成一个局域网,同时主机还可以去访问外网。

一些系统操作

查看系统日期和时间

date    "+%T"

%T以HH::MM:SS的格式显示时间
%y显示年份
%m显示月份
%d显示日期
%D以mm/dd/yy显示日期
%H显示小时
%M显示分钟
%S显示秒
%a显示星期几
%h显示月份
%r以AM/PM格式显示时间

修改屏幕

clear清空
tput clear
tput cup 15 20将光标定位到15行20列
tput smso屏幕反白
tput rmso正常显示
tput blink闪烁输出
tput reset屏幕设置恢复默认值

系统的当前用户

who

whoami

确定系统的正常运行时间

uptime

SSH协议

SSH  安全外壳

在本机上去访问服务器时,可以使用xshell软件,服务器不一定在本机的虚拟机上,实际工作中服务器是在机房,你也不能操作服务器时蹲在机房,所以需要通过远程登录会话访问。

登录是还需要用户名和密码,避免被拦截,该软件还实现了加密解密的功能。

​编辑

​编辑

用户管理

用户的标识

通过id

创建新用户

useradd

还需要通过passwd 设置密码

授予/撤销用户的root访问权限

useradd

usermod

/etc/passwd

删除用户

userdel

修改密码

passwd

要求:不能与账号密码相同,与原先密码至少有3个位置不同,至少有6个字符。

Linux进程

什么是进程

进程的类型

监视和执行进程

停止和终止进程

二.了解Linux文件系统

Linux的文件系统

​编辑

root是老板

/root是老板的办公室

/home是员工宿舍

对比Linux和Windows的文件系统

​编辑

​编辑

Windows下:C:\Users\zhou

Linux下:/root/

两个系统的斜杠不同 

文件系统的属性

  • 所有的文件和目录都包含在根目录(/)中
  • 每个文件或目录由名称,所在目录,inode唯一标识符来唯一标识
  • 各个文件系统之间没有依赖关系

三.了解Linux中的文件

1.文件的命名

  • 文件名最多255字节长度
  • 可包含除了/之外的特殊字符
  • 区分大小写
  • 不能有空格或制表符

2.文件的位置

绝对路径

从根目录开始

相对路径

不从根目录开始,路径中不以/开头,以./或者直接目录名或文件名开头 

HOME目录路径

表示家目录,比如当前登录用户为Emily,则代表/home/Emily

3.文件的类型

目录文件

在界面中显示为蓝色。Linux在创建目录时自动创建目录文件,此文件与目录同名,用户不能修改目录文件。

普通文件

在界面中显示为白色。用户创建的文件都视为普通文件,包括数据文件,程序文件,目标文件,可执行文件。

特殊文件

大多是系统文件都是特殊文件,常与IO设备关联,用户不能修改特殊文件。

标准输入文件

键盘被称为标准输入文件。

比如当使用cat指令时,如果cat后面没有跟文件名,则该命令从标准输入文件中获取输入。

输入完成按CTRL+d结束。

标准输入文件的文件描述符为0。

标准输出文件

显示器被称为标准输出设备。

发出ls命令时,将内容输出发送到标准输出文件。

标准输出文件的文件描述符为1。

标准错误文件

显示器也是标准错误文件

cat后面跟一个不存在的文件名会在显示器上生成错误消息。

标准错误文件的文件描述符为2。

标准输入后,要么标准输出,要么标准错误。

 Linux系统中文件的后缀名不影响文件的类型,只是为了方便阅读。

​编辑

4.文件的访问权限/用户类型

Linux可以根据用户类型限制对文件的访问

用户类型

  • 系统管理者
  • 文件所有者
  • 组所有者
  • 其他用户

其他用户是相对于组用户来说的

文件类型

-        普通文件

d        目录

b        块特殊文件

c        字符特殊文件

l          符号链接

s        套接字

p        命名管道

文件的访问权限

文件访问权限是给文件所有者,组所有者,其他用户来设置。

  • 读   R      4
  • 写   W       2
  • 执行   X       1

对文件授予执行权限时,必须要有读权限。

更改用户对文件的权限

使用chmod     (change  mode)

符号格式(使用字母)

  • u 文件或目录所有者
  • g 同一组的成员  group
  • o 其他所有用户  other
  • a 所有用户          all

chmod  u+x   x.c    给文件所有者授予对x.c文件的执行权限

chmod  g-r     x.c    给组所有者撤销对于对于x.c文件的读权限

chmod  o-r     x.c    给其他用户撤销对于x.c文件的读权限

chmod  a+x   x.c    文件所有者给所有用户授予对x.c文件的执行权限

chmod  a=rwx  x.c  所有用户对该文件都有读写执行权限

绝对格式(使用数字)

chmod  400   x.c     给文件所有者添加读权限

chmod  6       x.c     给其他用户授予读写权限

chmod  61     x.c     给其他用户授予执行权限,给组用户授予读写权限

chmod  741   x.c     所有者授予读写执行权限,组成员授予写权限,其他用户授予执行权限

5.文件的管理

定位文件

find

locate

xargs

        跟find中的-exec选项和-ok选项的功能类似,但xarg是命令,结合find使用管道来实现功能。

操作多个文件

ln

paste

比较文件

cmp

comm

uniq

type

exec

了解特殊字符

文件扩展字符

命令终止符

插入注释

四.操作Linux的目录和文件

1.命令语法

当用root账号登陆并进入root目录时,在命令行最开头显示的是【root@localhost /root】#

root表示登录的用户

@是占位符

当前机器的名字是localhost

空格

/root表示当前你所在的工作目录

#是提示符,普通用户的提示符是$

如何显示这些信息?

whoami   显示当前用户

hostname  显示主机名

pwd  显示当前路径

​编辑

输入命令行的语法格式

命令    空格    参数      空格   文件/文件夹

  ls                      -a                        /root

  • 空格可以是一个,也可以是多个
  • 参数和文件/文件夹是可选的

2.操作Linux的目录

创建目录

mkdir    make directory

mkdir  file    在当前目录创建file文件夹。

mkdir  /home/Emily/file   在特定目录创建文件夹 如果该文件的父目录不存在则创建不了,需要添加-p属性。

列出目录内容

ls  list

ls  列出当前目录内容

ls  file   列出当前目录file目录的内容

ls  /home/Emily  列出home下Emily目录内容

-l  列出详细信息

-a 所有文件,包括隐藏文件

-A 除了.和..之外的所有文件

-F

​编辑​编辑 

 -r

-R

-S

确定当前目录路径

pwd  print work directory

更改当前目录

cd change directory

​编辑

cd和cd~效果相同

删除目录

rmdir   remove  directory

删除的条件:

该目录是空的,并且当前所在位置不是该目录,也就是只能删除所在目录下的其他目录。

rmdir  file   删除当前目录下的file目录

3.操作Linux的文件

创建文件

touch

复制文件

cp  copy

cp data1 data2    将data1 复制到data2  如果data2有数据则内容重写,没有则创建data2文件

cp  -r  file1  file2   将file1的内容递归复制到文件夹file2

-i  interactive  重写前进行提示

-l  link  

-s symbolic-link  创建符号链接

-v verbose 详细说明正在执行的操作

显示文件内容

cat  

cat data1  显示当前目录下data1文件的内容

cat data1 data2 显示当前目录下data1和data2文件的内容

more

回车键:向上滚动一行

空格键:向上滚动一个屏幕

缺点:下滚后无法上滚

less

可以使用方向键上下移屏幕

可以指定数字指定移动行数

还可以上滚

移动和重命名文件

mv   move    mv  source  destination

如果destination是一个路径,则视为移动文件,如果是文件名并且当前目录不存在这个目录,则视为改名。

mv  file1  file2   如果当前路径中只有file1没有file2,则视为改名,如果有file2则视为将file1移动到file2中

-f

-i

-v

删除文件

rm   remove  也可以删除目录

rm  file  删除当前路径下的文件

rm  /home/Emily  删除Emily

-I

-f

-r/-R

-v

通配符

用通配符来代替文件的名称

匹配任意个字符

匹配一个字符

【】

匹配指定字符中的一个

六.对文件的内容进行操作

1.基础篇

打开或创建文件

vi  filename

三种模式

命令模式:可以执行控制光标在文件中移动。

输入模式:将内容添加到文件中。

退出模式:可以保存,退出,替换文件。

命令模式的命令

h

l

k

j

x

dd

w/W     word

b/B       behind

e/E        end

输入模式的命令

a  append

A

i   insert

I

o  open

O

rx

Rtext

退出模式的命令

:e filename

:w filename

:w! filename

:! command name

d  delete

c change

y  yank

ctrl  +  f    front

CTRL +b   back

​编辑

​编辑

2.高级篇

重定向

输入重定向

cat < test1   或    cat  0<   test1    

将test1作为标准输入。如果<后面没有文件名,则从标准输入文件中读内容,有的话就从该文件读内容。 

输出重定向

cat  file1 >  file2   或 cat file1 1>  file2

将file1的内容输入到file2,并且覆盖。

cat file1 >> file2   或  cat file1  1>> file2

将file1的内容追加到file2

cat  > file2 

从标准文件中输入内容到file2

cat  >> file2 

从标准文件中追加内容到file2

错误重定向

cat  file1  2>  file2

如果cat file1 出错,将错误信息输入到file2

过滤器

过滤器用来处理加工文件的内容

grep   global  regular  expression  print  全局正则表达式打印

wc      word count     计算行数,字数,字符数

cut    从特定命令的输出抽取特定列

tr  translate  将一组字符翻译成另一组字符

sort  排序

管道

七.shell

1.shell基础

什么是shell?

​编辑

​编辑

具体实现了shell变成的软件称为bash,也有其他编程语言;

如果ls命令,首先发给shell,shell将命令解释成内核认识的语言,再让机器配件执行。

从我们登录Linux,所有的操作都是交给shell来执行的。

bash可以理解成shell的不同的版本。就像有各种各样的编程语言一样,对于centos而言使用的是bash。

其实一个命令对应的是调用一个c语言编写的脚本。

​编辑

​编辑

shell的类型

Unix Shell

Bourne Shell

C Shell

Korn Shell

Restricted Shell

Linux Shell

Bash

Ash 

Shell的功能

父子shell

 进入一个新的shell   bash

退出当前shell   exit

更改登录时的默认shell    chsh

检查进程树   pstree

使用shell脚本

除了交互式的操作还有非交互式的操作,那就是使用shell脚本。 ​编辑

shebang

 ​编辑

shebang

 运行shell脚本文件时,可以使用相对路径直接运行。./hello.sh

也可以直接指定解释器来执行shell脚本,/bin/sh  ./hello.sh   或/bin/bash  ./hello.sh

使用第一个方法需要有执行权限。

变量的介绍

变量的介绍

Linux中的变量都被视为是字符串

声明变量   

name=周                     注意:等号两边不能有空格

name="zhou zhou"     如果值中有空格,需要用引号括起来,如果值不含空格,引号可不加

变量命名规则

​编辑

引用变量

 ${变量名}

echo  变量名    name2=变量名       name2=name   或        echo  变量名    name2={变量名}       name2={name}

当进行字符串拼接时,则必须要有括号

echo  ${day}th

括号内不能有多余空格,除非包含在变量名中

变量的赋值

方式1:name2=name    name2={name}      name2=name 

方式2:read name

变量的作用域

​编辑

本地shell变量

当前shell中创建的变量对于当前shell来说是本地变量

全局shell变量/环境变量

通过export命令,将当前shell中的变量传递到子shell中,那么该变量就是全局变量了。

但是在子shell中修改变量的值在父shell中不会改变,因为传递的是副本。全局/环境变量在每个shell中都能找到。

其他环境变量:

HOME

PATH

PS1

PS2

LOGNAME

SHLVL

SHELL

执行

​编辑

需要赋予权限

显示

  • 单引号变量,不识别特殊语法
  • 双引号变量,能识别特殊语法

my=zhou

name='${my}'

echo name

输出的是'${my}

name="${my}"

输出zhou

source命令

​编辑

在make.sh的shell脚本中有一行代码   name=zhou

在当前bash中创建name=zhouzhou

如果用bash来执行make.sh脚本,那么echo ${name}输出zhouzhou,因为会创建子shell,将变量加载到子shell中

如果用source make.sh 来执行脚本,则会将变量加载到当前shell中

反引号

反引号可以识别命令

先执行反引号里面括起来的命令,在将命令的输出原地替换,最后执行整个命令。

 name=ls

echo ${name}

则输出当前命令的内容

2.shell高级

命令替换

expr  算数运算

不支持小数点

*号为了与通配符区别,前面要加\

test   评估表达式

test expression 等价于【expression】返回真(0)或假(1) 

test $username = "an"   等号两边需要有空格

[ $username = "an" ]  等号和括号都需要空格

评估文件状态

评估算数式

评估字符串

使用编程构造

if

if   fi

case

case   esac

while

while   do     done

until

until     do      done

for

for   in

do      done

exit

退出shell脚本,还可以退出当前shell。

break

continue

函数

处理shell脚本中的参数

调试shell脚本

使用shell脚本的Linux服务管理

八.实用程序

压缩和解压文件

gzip

tar

打包:将一堆文件或目录汇总成一个整体

压缩:将大文件压缩成小文件,需要先打包再压缩。

用作计算器

bc

显示用户状态

finger

对文件内容进行拼写检查

ispell

更改用户的finger信息

chfn

显示文件指定的行数

head

tail

九.指令总和

<或0<                输入重定向

1>或>                输出重定向覆盖

1>>或>>            输出重定向追加

2>                      错误输出重定向                       

 grep                查询某个字符或字符串

[abc]

[a-c]

^New[abc]        Newa或Newb或Newc必须出现在行首   

New[^abc]        New后不能出现a或b或c

New.[abc]        忽略符号含义

-n                      打印匹配到的每行及行号

-c                      打印行数  

-v                      打印不匹配的行

wc                   计算文件行数,字数,字符数

-l                        显示行数

-w                      显示词数

-c                       显示字符数

cut                    获取某列(需要分割)或获取每行的某些列的字符

-f                        指定列

-c                        指定字符的列序号

-d                        指定列定界符

tr 将字符翻译

-s                        压缩某个字符为一个

"str1"  "str2 "       将str1替换为str2

sort 排序

-r                        降序排

-f                        忽略大小写

-n                        不再用ASCII码顺序排列数字,而是按数字本身大小

+num1 -num2    忽略num1个分隔符,在num2个分隔符处停下

-t                        指定分隔符

-o                        将排序输出到文件中

+b                       忽略前导空格和制表符

tee 读取标准输入将其写到标准输出或文件

echo                    在屏幕显示消息

=        创建变量

${}                        引用变量

read                      将变量的值从键盘输入

export                 传递变量给其他shell

$HOME                显示当前用户目录

$PATH                以冒号分割目录列表

$PS1                    提示符

$PS2                     次级提示符

$LOGNAME        用户登录名

$SHLVL                当前shell层

$SHELL                存储用户默认shell

$env                      查看所有导出的环境变量和值的列表

``                             重音符,先执行重音符内的内容,再原地替换

expr                        计算算数表达式

typeset -i 变量名    直接定义一个整数变量,可以直接用于计算

test                        评估表达式

$?                            内置变量,存储命令、函数或脚本本身的退出状态

test  -e                     测试文件是否存在

test  -f                      文件存在并且是普通文件

test  -d                     文件存在并且是目录

test  -r                      文件存在并且可读

test  -w                    文件存在并且可写

test  -x                      文件存在并且可执行

test  -s                      文件存在并且不为空

test   -b                     文件存在并且是块特殊文件

test   -L                     文件存在并且是一个符号链接

test  -O                      文件存在并且由当前用户拥有

test  -G                      文件存在并且由当前用户组拥有

file1 -nt  file2             文件1比文件2新

file1 -ot  file2             文件1比文件2旧

-eq                             等于

-ne                             不等于

-gt                              大于

-ge                              大于或等于

-lt                                小于

-le                                小于或等于

test   string                   string不为空

test    -z  string              字符串长度为0

test    -n  string              字符串长度不为0

test   string1  =  string2   字符串相同

test   string1 1= string2   字符串不同

if  then  elif  then  else  fi

case   value  in

value1)

value2)

esac   

while

do

done

until

do

done

for  value  in  value1  value2

do

done

exit

break

continue

function  function_name

{

}

function_name 【 arg1 arg2 ...】

1  第一个参数   1    第一个参数     2 第二个参数

source      脚本名                  将脚本中所有函数导入环境中

$0                                         命令名

$1-9                                      参数1-9

$*                                           整串参数

$#                                        命令的参数个数

shift                                      忽略第一个参数

命令   <<  pattern:   语句  :pattern   将语句作为命令的输入

set  -x

set  -v

sh  -v                  执行脚本前显示脚本的内容

sh  -x                  执行脚本时,显示脚本的内容,并且显示赋值后的内容

file   文件名                          检查文件是否存在

service   服务名   命令        控制服务

chkconfig  --add   脚本名     启动脚本  

chkconfig  --level  一大堆     启动脚本

chkconfig  --list                     检查脚本是否启动

find                                        定位特定目录及其所有子目录中的文件

-name                                    搜索目录中指定文件

-print                                      在标准输出设备上显示文件完整路径名

-type                                      搜索特定类型文件

-mtime                                   当前日期前特定天数内修改过的所有文件

-exec                                      指定对文件执行的操作

-ok                                          与exec唯一不同点是执行前会要求用户确认

locate                                      定位文件

-c                                             显示匹配条目计数

-i                                              在定位输出中忽略大小写

-l                                              显示一定数量的记录

xargs                                       对多个文件执行操作

ln                                               创建链接

-s                                              创建软链接

paste                                        水平连接两个文件

cmp                                           按字节比较两个文件

comm                                        按行比较两个文件

-1                                                不显示第一列

-2                                                不显示第二列

-3                                                不显示第三列

uniq                                             比较一个文件中的行,删除重复的行

-u                                                只显示唯一的行

-d                                                只显示重复的行

-c                                                显示所有行,每行前面有它出现的次数

type                                             解释一个命令

exec                                            用命令代码代替当前shell并执行该命令,再返回父级Shell

/                                                    忽略后面紧跟的字符的特殊含义

''                                                    忽略单引号中所有字符的特殊含义

""                                                  忽略除$,',\之外的字符的特殊含义

:                                                     终止命令

&                                                     终止命令,该符号之前的命令在后台运行

#                                                     注释

ps                                                    为当前活动的每个进程生成一条信息

pstree                                            查看完整的进程树

top                                                与ps类似

kill                                                向进程发送信号,默认情况下终止进程

killall                                               向匹配指定名称的所有进程发送SIGTERM和SIGKIL信号

\