目录
一.了解Linux操作系统
用户管理
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来创建多个虚拟机便可以实现。
在虚拟机上安装多个操作系统就构成了一个局域网。
自己的笔记本处理两个网络的中间,主机和这些虚拟机组成一个局域网,同时主机还可以去访问外网。
?
SSH协议
SSH? 安全外壳
在本机上去访问服务器时,可以使用xshell软件,服务器不一定在本机的虚拟机上,实际工作中服务器是在机房,你也不能操作服务器时蹲在机房,所以需要通过远程登录会话访问。
登录是还需要用户名和密码,避免被拦截,该软件还实现了加密解密的功能。
?
用户管理
用户的标识
通过id
创建新用户
useradd
还需要通过passwd 设置密码
授予/撤销用户的root访问权限
useradd
usermod
/etc/passwd
删除用户
userdel
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? 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的类型
父子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=$name? ?或????????echo? ${变量名}? ? ? ?name2=${name}
当进行字符串拼接时,则必须要有括号
echo? ${day}th
括号内不能有多余空格,除非包含在变量名中
变量的赋值
方式1: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? ?评估表达式
评估文件
评估算数式
评估字符串
使用编程构造
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
|