一、计算机
1、能接收用户输入的指令和数据,经过中央处理器的算术逻辑单元处理,然后会产生或者显示新数据的,就是计算机。
比如,普通商户用的计算器,手机,提款机,汽车导航,桌面电脑,手提电脑等
2、计算机的五大单元:
输入单元:输入设备,键盘,鼠标,扫描仪,触摸屏幕
输出单元:显示器,打印机.....
cpu的控制单元:控制输入单元和输出单元工作
cpu的算术逻辑单元:进行逻辑运算的
内存:从输入单元获取数据,或者将数据传输到输出单元上。
cpu与内存的关系:
cpu运算所需要的数据,全部都来自于内存。产生的数据也全部都写入内存。
3、计算机的硬件
主板:相当于人的神经系统,将其他硬件联系到一起
主板中嵌入了一个微型程序:bios(basic input out system)
cpu: 主要是起到控制其他硬件和运算。
内存: 暂时存储cpu要用的数据
硬盘: 永久存储数据
显卡(内存):存储像素颜色的。
网卡:使用tcp/ip协议进行网络通信的
电源:相当于人的心脏。提供能源的
小比喻:没有通电的计算机,就是一堆废铁
通电后的计算机,就是能电人的废铁
二、操作系统
1、概念
操作系统是一组程序,这组程序中内部含有专门用来管理和控制计算机硬件的程序,我们称之为内核。还有一组用来提供给应用程序使用的系统调用接口。
2、常用的操作系统
PC端:unix,linux,windows,
手机端:mac,ios,android,
微软: wp,
谷歌:chrome os.
三、linux
1、简介
1991、林纳斯.托瓦斯写的一个内核程序,后经过多人设计出的一个操作系统。是开源的,支持多用户,多线程。
2、linux上的软件,多数都是免费的,我们可以直接使用。
--衍生出众多版本:redHat 优班图 centOS.....
四、linux的安装
1、虚拟机VMware
虚拟机的作用,就是模拟一台计算机硬件环境,可以在此环境上安装操作系统。
2、vmware的安装
(1)查询计算机是否禁止使用虚拟技术
去bios里查看
Inter Virtualization technology
inter-VT
如果是禁止,设置为enable。之后保存退出。重启电脑
(2)安装(略)
(3)破解,去百度搜一下相应版本的破解码即可。
(4)安装后,网络中心会多出两个虚拟网卡vmnet1,vmnet8。
ps:两个网卡的ip,可能会发生变化
(5)ctrl+g是进入虚拟机界面
ctrl+alt是退出虚拟机界面,回到主机
建议: 内存设置为1G
练习:
DeskTop----桌面版
Basic Server--服务版
===============================================================================
二、网络配置
linux下查看网卡的信息命令:
ifconfig
网卡eth0的信息:
...............
DEVICE=网卡设备
TYPE=Ethernet--以太网(有线)
UUID=.....网卡的唯一标识符
bootproto=dhcp/static/none
name="System eth0" --网卡的名字
onboot=yes/no--开启启动设置
...........
连接网络的两种形式:
1、自动获取ip连接
前提:
在网卡eth0中的属性ONBOOT的值改为yes,即自动连接(需要使用root账户进行修改)
桥接模式:主机自带的网卡会为虚拟机的网卡分配同一段位下的ip地址。
可以联网。
NAT模式:主机的虚拟网卡VMnet8会为虚拟机的网卡分配相同段位下的IP地址。
可以联网。
使用命令ping一下 要连接的网络地址:
原理:向ping的远程ip地址发送请求,请求成功后远程会返回64个byte。如果没有字节丢失,即连接成功
(1) ping 一下本地
ping localhost
(2) ping 一下主机
ping 192.168.43.250
(3) ping 一下百度
ping www.baidu.com
(4) 使用主机ping一下linux虚拟机
仅主机模式:主机的VMnet1网卡会为虚拟机的网卡分配ip地址。(网段相同)。
不可以联网。
---------------------------------------------------------------------------------------------------------------------------------
2、设置静态ip(手动改)
桥接模式:
文件的位置:
/etc/sysconfig/network-scripts/ifcfg-eth0
打开后修改红色区
DEVICE=eth0
TYPE=Ethernet
UUID=edece2c6-947e-4e8b-ab2e-43ed59c6a614
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static ----------修改成static或none都行
HWADDR=00:0C:29:5e:1f:c3
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
IPADDR=192.168.1.200 --设置成你想要的IP(与物理机在同一段位)
NETMASK=255.255.255.0 ----子网掩码
GATEWAY=192.168.1.1 -----网关(与物理机一致)
DNS1=192.168.1.1 ---DNS与网关ip一致
去修改/etc/resolv.conf 添加
nameserver 网关ip
重启网络服务命令:
service network restart
之后测试:
ping localhost
ping 主机ip-----关闭防火墙
ping www.baidu.com
NAT模式:
DEVICE=eth0
TYPE=Ethernet
UUID=edece2c6-947e-4e8b-ab2e-43ed59c6a614
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static -----------修改成static
HWADDR=00:0C:29:5e:1f:c3
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
IPADDR=192.168.9.200 -----------设置成你想要的(与VMnet8在同一段位即可)
NETMASK=255.255.255.0 --------子网掩码
GATEWAY=192.168.9.2 ----------网关(需设置成VMnet8提供的网关,一般结尾都是2)
DNS1=192.168.9.2 --------------DNS设置成与网关一致即可
重启网络服务命令:
service network restart
之后测试:
ping localhost
ping 主机ip-----关闭防火墙
ping www.baidu.com
练习:
使用server版的linux练习网络配置
cd:表示切换目录
ls:显示目录的内容
pwd:显示当前位置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
i键:表示插入
按退出键:esc
:wq回车
:q!强退出
2018.9.26
复习
ip的四个段位,每个段位的范围0-255
桥接模式:ip与物理机在同一网段下(前三个段位一样)
网关与物理机要相同
nat模式:ip与vmnet8虚拟网卡在同一网段下
网关与dns1要与vment8结尾
仅主机:不能联网
--衍生出众多的版本:redHat,优班图,centOS...
连接模式:
ip: 段位1.段位2.段位3.段位4
每个段位的范围:0-255
桥接模式:能联网。
ip与物理机在同一网段下(前三个段位一样)
在设置静态ip时:
网关与DNS1要与物理机相同
NAT模式: 能联网
ip与VMnet8虚拟网卡在同一个网段下。
在设置静态ip时:
网关与DNS1要与VMnet8相同
仅主机模式:不能联网
============================================================================
linux的文件系统结构
特点:是一个倒立的树形结构
最顶端:是根目录,使用"/"表示,一般不用来存储文件
下面有很多系统预设的目录:
/bin:存放的命令文件,也可以称之为二进制目录。是系统管理员和普通用户使用的命令。
/boot:该目录下存放系统的内核文件和引导程序文件。
/dev,/media,/mnt:用来挂载linux系统下的其他设备
/etc: 存储的是所有的系统管理所需要的的配置文件和子目录
/home:用户的主目录,每个用户都有一个自己的目录,该目录名以用户账号命名,存于home下。
/lib:存放的是系统最基本的动态连接资源库,几乎所有的应用程序都用到此资源库
/lost+found:系统意外崩溃或者意外关机后,产生的文件碎片存放于此。
/opt::给主机额外安装软件所摆放的目录。
/proc:此目录的数据存于内存中
/root:系统管理员root的主目录
/sbin,/usr/sbin,usr/local/sbin:存放的是系统管理员所使用的命令
/selinux:存放的是系统的安全机制相关文件,相当于防火墙
/srv:存放的一些服务启动后需要提取的数据
/tmp:存放系统产生的临时文件
/usr:应用程序存放目录
/var:存放系统执行过程中不断变化的文件,如日志文件等
===============================================================================
二、常用命令
1、文件命名规则
1)除了/之外,所有字符都合法
2)有些字符最好不要用,如空格符、制表符、字符@#$&()-等
3)避免使用.作为普通文件名的第一个字符。
4)大小写敏感
2、命令的格式:
格式:命令 -选项 参数
ex: ls -la /etc
PS:1)多个选项可以写在一起
2)目录的.和..
.:当前目录
..:当前目录的父目录
(一)文件处理命令
(1)
命令名称:ls
命令原意:list
命令路径:/bin/ls
执行权限:所有用户
功能描述:显示目录文件
语法:ls 选项[-ald] [目录或文件]
-a 显示所有文件,包含隐藏文件
-l 详细信息显示
-d 查看目录属性
(2)
命令名称:cd
命令原意:change directory
命令路径:shell内置命令
执行权限:所有用户
功能描述:切换目录
语法:cd [目录]
Ex: cd / 切换到根目录
cd .. 回到上一级目录
注意: ~:当前用户的主目录
cd 后不写参数,即回到主目录。
(3)
命令名称:pwd
命令原意:print working directory
命令路径:/bin/pwd
执行权限:所有用户
功能描述:显示当前所在的工作目录
语法: pwd
(4)
命令名称:touch
命令原意:
命令路径:/bin/touch
执行权限:所有用户
功能描述:创建空文件
语法:touch [文件名]
Ex: touch newfile
(5)
命令名称:mkdir
命令原意:make directories
命令路径:/bin/mkdir
执行权限:所有用户
功能描述:创建新目录
语法:mkdir [目录名]
Ex: mkdir newdir
(6)
命令名称:mv
命令原意:move
命令路径:/bin/mv
执行权限:所有用户
功能描述:移动文件、更名
语法:mv [文件或目录名] [目的目录]
Ex: mv file1 file2
将当前目录下文件file1更名为file2
mv file2 dir2
将file2移动到目录dir2下
(7)
命令名称:rm
命令原意:remove
命令路径:/bin/rm
执行权限:所有用户
功能描述:删除文件
语法: rm -r [文件或目录]
-r 删除目录
Ex: rm file2
删除文件 file2
rm –r dir1
删除目录 dir1
(8)
命令名称:cp
命令原意:copy
命令路径:/bin/cp
执行权限:所有用户
功能描述:复制文件或目录
语法:cp -r [源文件或目录] [目的文件或目录]
-r 复制目录
Ex: cp file1 file2 dir1
将文件file1、file2复制到目录dir1
cp –r dir1 dir2
将dir1及其内容复制到dir2里
(9)
命令名称:cat
命令原意:concatenate and display files
命令路径:/bin/cat
执行权限:所有用户
功能描述:显示文件内容
语法:cat [文件名]
Ex: cat /etc/issue
cat /etc/services
(10)
命令名称:more
命令路径:/bin/more
执行权限:所有用户
功能描述:分页显示文件内容
语法:more [文件名]
(空格)或f 显示下一页
(enter) 显示下一行
q或Q 退出
Ex: more /etc/services
(11)
命令名称:head
命令路径:/bin/head
执行权限:所有用户
功能描述:查看文件的前几行
语法:head -num [文件名]
-num 显示文件的前num行
Ex: head -20 /etc/services
(12)
命令名称:tail
命令路径:/bin/tail
执行权限:所有用户
功能描述:查看文件的后几行
语法:tail -num [文件名]
-num 显示文件的后num行
-f 动态显示文件内容
Ex: head -20 /etc/services
(13)
命令名称:ln
命令原意:link
命令路径:/bin/ln
执行权限:所有用户
功能描述:产生连接文件
语法:ln -s [源文件] [目标文件]
-s 创建软连接
Ex: ln –s /etc/issue /issue.soft
创建文件/etc/issue的软连接/issue.soft
ln /etc/issue /issue.hard
创建文件/etc/issue的硬链接/issue.hard
软链接: 相当于window下的快捷方式对软连接操作,就是对源文件操作
源文件的删除会使软连接无效。
支持目录。
硬链接: 源文件的删除不会影响硬链接
(硬链接相当于源文件的备份)
不支持目录。
=========================================
权限管理命令
drwxr-xr-x. 2 root root 4096 9月 26 19:21 test
详情的第一个字段:共有10个字符
drwxr-xr-x
第一个字符:表示文件的类型
如: -,表示文件
d: 表示目录
l: 表示软连接
第2~4个字符:user
表示文件或目录的拥有者的权限
r:read,可读权限, 数字表示:4
w:write,可写权限,数字表示:2
x:execute,可执行权限,数字表示:1
文件:
r:可以查询里面的内容
w: 可以修改里面的内容
x: 可以执行此文件的
目录:
r:可以查询目录内的文件或子目录
w:可以创建或删除目录里的数据
x:可以进入此目录。
第5~7个字符:(group)
表示此文件或目录的拥有者所在组
的组成员的权限
第8~10个字符:(other)
表示除了拥有者所在组之外的
其他人权限
第三个字段:表示拥有者的名称
第四个字段:拥有者所在组的组名称
练习:
michael用户的主目录
/home/michael
root用户的主目录
/root
使用michael用户在其主目录下创建目录
dir1.
并查看权限。
切换到root用户
在dir
=====================
创建用户:
useradd 用户名 (系统管理员可用此命令)
设置密码
passwd 用户名
创建一个scott的普通用户,密码123456
========================
chmod 421 file1
-r---w---x
(1)
命令名称:chmod
命令原意:change the permissions mode of a file
命令路径:/bin/chmod
执行权限:所有用户
功能描述:改变文件或目录权限
语法:chmod [{ugo}{+-=}{rwx}] [文件或目录]
[mode=421] [文件或目录]
Ex: chmod g+w file1
赋予文件file1所属组写权限
chmod 777 dir1
设定目录dir1为所有用户具有全部权限
(2)
命令名称:chown
命令原意:change file ownership
命令路径:/bin/chown
执行权限:所有用户
功能描述:改变文件或目录的所有者
语法:chown [用户] [文件或目录]
Ex: chown nobody file1
改变文件file1的所有者为nobody
PS:此命令只能使用root用户进行修改。
(3)
命令名称:chgrp
命令原意:change file group ownership
命令路径:/bin/chgrp
执行权限:所有用户
功能描述:改变文件或目录的所属组
语法:chgrp [用户组] [文件或目录]
Ex: chgrp dam file1
改变文件file1的所属组为adm
(4)
命令名称:umask
命令路径:/bin/umask
执行权限:所有用户
功能描述:显示、设置文件的缺省权限
语法:umask [-S]
-S 以rwx形式显示新建文件或目录的缺省权限
Ex: umask
umask -S
注意:umask显示的权限为真实权限的反码:
作业:
查看权限的数字
2018.9.27
复习:
1、文件处理命令:
ls:查看文件或目录信息
cd:切换目录
pwd:查看当前目录的绝对路径
mv:移动、更名
rm:删除命令 -rf
touch:创建文件
mkdir:创建目录
cp:复制
cat:显示文件内容
more:分页显示 f/空格 回车, Q/q
head:
tail: -f 动态显示
ln:创建链接文件。-s:软连接
2、权限管理命令
chmod:更改目录或文件的权限
方式1: u g o
chmod u+r|w|x 文件/目录
方式2: r-4,w-2,x-1
chmod 755 文件/目录
chown:修改目录或文件的拥有者
chgrp:修改目录或文件的所属组
umask:显示当前用户在创建文件或目录的默认权限
目录:所有权限为777
在使用umask命令时显示的是权限的补码/掩码
reg: # umask
0022
第一个0:特殊权限位
之后三位:022,就是权限的掩码
真实权限为:
777
- 022
--------
755
选项 -S 查看真实权限
# umask -S
u=rwx,g=rx,o=rx
文件:所有权限为666
文件:linux系统要求新建的文件权限,不能有执行权限
即最大值为:666
掩码为:022
文件的真实权限:
666
-022
-------
644
# umask -S
u=rw,g=r,o=r
能不能修改系统默认设置的权限
答:能,但是不建议。
umask [掩码值]
练习: 修改新建目录的默认权限为750
umask [掩码值]
666
027
640
====================================
文件搜索命令:
(1)
命令名称:which
命令路径:/usr/bin/which
执行权限:所有用户
功能描述:显示系统命令所在目录
语法:while [命令名称]
Ex: which ls
相似命令:whereis [文件名]
(2)
命令名称:find
命令路径:/usr/bin/find
执行权限:所有用户
功能描述:查找文件或目录
语法:find [搜索路径] [搜寻关键字]
PS:尽量不要在根路径下搜索。
选项: -name 查找名称
通配符: *表示0或多个字符
占位符: ?
-size 按照文件大小搜索
文件块: 一个块,512个字节=0.5KB.
100M 102400*2
正负号: -102400 小于 50M
+204800 大于 100M
连接符: -a 相当于 and
-o 相当于 or
练习:查看 大于500KB 并且小于3M的文件
选项:-user,按照拥有者搜索
-type,按照文件类型查询
练习:在 /home/michael 搜索大于3m 并且文件类型
是f
find /home/michael -size +6144 -a -type f
选项:
按天查询: ctime,atime,mtime
按分钟查询: cmin,amin,mmin
c:change 文件属性被改变,比如权限,修改时间,拥有者
a:access 文件被访问
m:modify 文件内容被修改
reg:
find / -mmin -120 :查找两小时内被修改过的文件
连接符:
-exec ls -l {} 空格\;
-exec [命令] [选项] {} \;
练习:查找两小时内被访问过的文件,
并显示详情信息
find /home/michael -amin -120 -exec
ls -l {} \;
查找/home/michael里大于50M的文件,并删除
find /home/michael -size +102400
-exec rm {} \;
在做查找并删除时,为了防止删除重要文件。
可以使用-ok 代替-exec 来进行询问
(3)
命令名称:locate
命令原意:list files in databases
命令路径:/usr/bin/locate
执行权限:所有用户
功能描述:寻找文件和目录
语法:locate [搜索关键字]
Ex: locate file
列出所有跟file相关的文件
linux系统里维护了一个文件系统结构的数据库
locate是在数据库中查询文件。速度比find快
(4)
命令名称:updatedb
命令原意:update the slocate databases
命令路径:/usr/bin/updatedb
执行权限:root
功能描述:建立整个系统目录文件的数据库
语法:updatedb
Ex: updatedb
命令名称:grep
命令原意:
命令路径:/bin/grep
执行权限:所有用户
功能描述:在文件中搜寻字串匹配的行并输出
语法:grep [指定字符] [源文件]
Ex: grep ftp /etc/services
帮助命令:
(1)
命令名称:man
命令原意:manual----手册的含义
命令路径:/usr/bin/man
执行权限:所有用户
功能描述:获取帮助信息
语法:man [命令或配置文件]
Ex: man ls
查看ls命令的帮助信息
man services
查看配置文件services的帮助信息
(2)
命令名称:info
命令原意:information
命令路径:/usr/bin/info
执行权限:所有用户
功能描述:获取帮助信息
语法:info [任何关键字]
Ex: info ls
查看ls命令的帮助信息
(3)
命令名称:whatis、apropos、makewhatis
命令原意:search the whatis database for strings
命令路径:/usr/bin/whatis apropos
/usr/sbin/makewhatis
执行权限:all user、 all user、root
功能描述:获取索引的简短说明信息
语法:whatis|apropos [任何关键字]
Ex: whatis ls
apropos fstab 相当于man -k
makewhatis
建立前两个命令使用的数据库,
当使用这两个命令发生错误时,
就是whatis dababase没有建立
压缩解压缩命令:
(1)
命令名称:gzip
命令原意:gnu zip
命令路径:/bin/gzip
执行权限:所有用户
功能描述:压缩文件
语法:gzip 选项 [文件]
压缩后文件格式:.gz
(2)
命令名称:gunzip
命令原意:gnu unzip
命令路径:/bin/gunzip
执行权限:所有用户
功能描述:解压缩.gz的压缩文件
语法:gunzip 选项 [压缩文件]
Ex:gunzip file1.gz
(3)
命令名称:tar
命令原意:
命令路径:/bin/tar
执行权限:所有用户
功能描述:打包目录
语法:tar 选项 [目录]
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
格式:.tar.gz
Ex: tar –zcvf dir1.tar.gz dir1
将目录dir1压缩成一个打包并压缩的文件
Tar的解压缩语法:
tar 选项 [目录]
-x 解包.tar文件
-v 显示详细信息
-f 指定解压文件
-z 解压缩
Ex: tar –zcvf dir1.tar.gz
PS:解压时,v在f之间
(4)
命令名称:zip
命令原意:
命令路径:/usr/bin/zip
执行权限:所有用户
功能描述:压缩文件或目录
语法:
zip 选项 [压缩后文件名称] [文件或目录]
-r 压缩目录
格式:.zip
Ex: zip services.zip /etc/services
zip -r test.zip /test
(5)
命令名称:unzip
命令原意:
命令路径:/usr/bin/unzip
执行权限:所有用户
功能描述:解压.zip的压缩文件
语法:
unzip [压缩文件]
Ex: upzip test.zip
(6)
命令名称:bzip2
命令原意:
命令路径:/usr/bin/bzip2
执行权限:所有用户
功能描述:压缩文件
语法:
bzip2 选项 [文件]
-k 产生压缩文件后保留源文件
格式: .bz2
Ex: bzip2 –k file1
(7)
命令名称:bunzip2
命令原意:
命令路径:/usr/bin/bunzip2
执行权限:所有用户
功能描述:解压缩
语法:
bunzip2 选项 [文件]
-k 解压缩后保留源文件
Ex: bunzip2 –k file1.bz2
=====
网络通信命令
(1)
命令名称:write
命令原意:
命令路径:/usr/bin/write
执行权限:所有用户
功能描述:向另外一个用户发信息,以ctrl+D作为结束
语法:
write <用户名>
Ex: write webmaster
======
(2)
命令名称:wall
命令原意:
命令路径:/usr/bin/wall
执行权限:所有用户
功能描述:向所有用户广播信息
语法:
wall [message] [文件名]
Ex: wall Happy New Year
(3)
命令名称:ping
命令原意:
命令路径:/usr/sbin/ping
执行权限:root
功能描述:测试网络连通性
语法:
ping 选项 ip地址
Ex: ping 192.168.1.1
(4)
命令名称:ifconfig
命令原意:
命令路径:/usr/sbin/ifconfig
执行权限:所有用户
功能描述:查看网络设置信息
语法:
ifconfig 选项 [网卡设备标识]
-a 显示所有网卡信息
Ex: ifconfig -a
系统关机命令:
(1)
命令名称:shutdown
命令原意:
命令路径:/usr/sbin/shutdown
执行权限:root
功能描述:关机
语法:
shutdown
Ex: shutdown –h now
shutdown -h now
shutdown -r 10
(2)
命令名称:reboot
命令原意:
命令路径:/usr/sbin/reboot
执行权限:root
功能描述:重启系统
语法:
reboot
Ex: reboot
==================
vi/vim
1、简介
Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/Unix上最常用的文本编辑器,它的作用是建立、编辑、显示文本文件
PS:Vim/Vi没有菜单,只有命令
2、几种模式:
(1)正常模式----------Esc
(2)插入模式----------i
(3)命令模式----------:
(4)可视模式----------
3、常用的命令
a:在光标后插入文本
A:在行末插入文本
i:在光标前插入文本
I:在行开头插入文本
o:在光标下生成新行
O:在光标上生成新行
h、left:向左移动光标
j、down:下移一行
k、up:上移一行
l、right:向右移动光标
$:移动至行尾,不进入插入模式
0(零):移动至行首,不进入插入模式
H:移动到屏幕顶端
M:移动到屏幕中央
L:移动到屏幕底部
:set nu 设置行号
:set nonu 取消行号
gg: 到文本的第一行
G:到文本的最后一行
nG:到文本的第n行
:n 到文本的第n行
:w 保存修改
:w file_name 另存为一个新文件
:q 退出
:wq 保存并退出
:q! 不保存退出(强退)
:wq! 保存并退出(只适合拥有者,即所有者可以忽略只读权限)
ZZ 快捷键,保存并退出
x:删除光标所在处的字符
nx:删除光标后n个字符
dd:删除光标所在行的内容
ndd:删除光标后n行的内容
dG:删除光标所在行到文件末尾的内容
D:删除光标所在处到行末的内容
:n1,n2d 表示删除指定范围的行
yy、Y 复制当前行内容
p、P 将复制的内容粘贴到当前行的行下或行上
nyy、nY 复制当前行以下的n行内容
dd:剪切当前行
ndd:剪切当前行以下的n行
r: 替换光标所在处的内容
R: 从光标所在处开始替换,按ESC结束
u: 取消上一步的操作
===============================================================================
/string 从文本开始处,向结尾处搜索字符串
可以先使用:set ic进行忽略大小写。
或者/string\c 忽略大小写的搜索
n:搜索后,n键可以移动下一个位置上
:%s/old/new/g 全文替换old字符串
:n1,n2s/old/new/g 指定范围内替换old字符串
===============================================================================
注释:
:n1,n2s/^/#/g 使用#进行连续行注释
:n1,n2s/^#//g 取消注释
:n1,n2s/^/\/\//g 使用//进行连续行注释
===============================================================================
软件的安装
二进制文件的安装方式:
rpm与yum
JDK的安装: *.tar.gz
第一步:先查询是否有安装过
# rpm -qa | grep jdk/java/jre
第二步:如果安装过进行删除
# rpm -e --nodeps 文件名
第三步:(注意:使用普通用户)
将*.tar.gz文件使用普通账户上传
/home/michael/soft/
第四步: 解压文件到soft目录里,(然后可以创建一个软连接)
第五步: 选择配置文件进行配置环境变量
/etc/profile--相当于windows的系统变量配置文件
~/.bash_profile
~/.bashrc 相当于windows的用户变量配置文件
第六步:
JAVA_HOME=.....
CLASS_PATH=$JAVA_HOME/lib/dt.jar:....
PATH=......:$PATH
export JAVA_HOME CLASS_PATH PATH
ps:配置PATH时,一定要注意原有的值的拼接
第七步: 重启系统或者使用下面命令
使配置文件
source ~/.bashrc
2018.9.28
文件搜索命令
which
find [路径] [选项] [文件名]
选项: -name init 通配符*,占位符?
-size 文件块 0.5KB
-user
-ctime atime mtime
-cmin amin mmin
-type
连接符: -a -o
连接符: -exec [命令名] [选项] {} \;
-ok 表示询问
locate 一般与updatedb一起使用
PS:locate在系统维护的一个文件系统数据库里查询
速度快。
帮助命令
man
info
whatis、apropos、makewhatis
网络通信命令
write、wall、ifconfig、ping
压缩解压缩:
gzip-gunzip
tar
压缩:
-c
-v
-z
-f
解压缩:
-x
zip--unzip
bzip2--bunzip2
关机命令:
shutdown [选项] [time]
reboot
================================
VI:linux内置的文本编辑器
模式:
(1)正常模式
(2)插入模式
(3)命令模式
(4)可是模式
命令(自行复习)
========================
软件包的管理
rpm:
(1)查看软件是否安装
#rpm -q jdk
#rpm -qa | grep jdk
(2)卸载安装包
# rpm –e jdk
注意:如果其他软件包有依赖关系,
卸载时会产生提示信息,
可使用 --nodeps强行卸载
reg: rpm -e --nodeps [安装包名]
(3)安装:
#rpm -ivh jdk-7u80-linux-x64.rpm
PS:安装之后的软件包名很可能与安装前的
包名不一样
最好查询一下。
其他选项:
--excludedocs
不安装软件包中的文档文件
--prefix path
将软件包安装到由path指定的路径下
--test
只对安装进行测试,并不实际安装
情况1: 软件包已经被安装
#rpm -ivh jdk-7u80-linux-x64.rpm
提示:
package jdk-7u80-linux-x64.rpm is already
Installed
如果想覆盖此软件包,可以在命令行上使用
--replacepkgs选项
情况2: 文件冲突
#rpm -ivh jdk-7u80-linux-x64.rpm
提示:conflicts with file from ….
Connot be installed
如果想让rpm忽略该错误信息,可以在命令行上使用
--replacefiles选项
情况3:未解决依赖关系
rpm软件包可能依赖于其他软件包,在安装了特定的软件包后才能安装该软件包。
提示:failed dependencies …. Is needed by ….
你必须安装完所依赖的软件包,才能解决这个问题。
如果想强制安装,请使用 --nodeps选项
情况3:升级
#rpm -Uvh jdk-7u80-linux-x64.rpm
应用yum的优势:
1)自动解决软件包的依赖关系
2)方便软件包升级
安装 yum install
检测升级 yum check-update
升级 yum update
软件包查询 yum list
软件包信息 yum info
卸载 yum remove
帮助 yum -help、 man yum
(4)查询
选项:
-a 查询所有已安装的软件包
-f 查询文件所属软件包
-p 查询软件包
-i 显示软件包信息
-l 显示软件包中的文件列表
-d 显示被标注为文档的文件列表
-c 显示被标注为配置文件的文件列表
rpm查询应用案例
查询文件隶属的软件包:rpm –qf
查询软件包信息: rpm –qi、rpm –qip
查询软件包安装文件: rpm -ql、rpm –qlp
查询软件包帮助文件: rpm –qd
查询软件包配置文件: rpm -qc
软件包文件提取
解压所有文件到当前目录
Rpm2cpio 软件包 | rpio -idv
解压制定文件到当前目录
Rpm2cpio 软件包 | cpio –idv ./etc/inittab
=====================================
一、Shell(壳)
Shell 是一个用 C 语言编写的程序,
这个应用程序提供了一个界面,
用户通过这个界面访问操作系统
内核的服务。
Ken Thompson 的 sh
是第一种 Unix Shell,
Windows Explorer
是一个典型的图形界面 Shell。
二、Shell 脚本
是一种为 shell 编写的脚本程序。
业界所说的 shell 通常都是指
shell 脚本,但读者朋友要知道,
shell 和 shell script 是两个不
同的概念。
本文出现的 “shell编程”
都是指 shell 脚本编程。
三
Shell 编程跟 java、php 编程一样,
只要有一个能编写代码的文本编辑器和
一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种类众多,常见的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
本章节关注的是 Bash
也就是 Bourne Again Shell,
由于易用和免费,Bash 在日常工作
中被广泛使用。同时,Bash 也是大
多数Linux 系统默认的 Shell。
在一般情况下,人们并不区分
Bourne Shell 和 Bourne Again Shell,
所以,像?#!/bin/sh,它同样也可以改
为?#!/bin/bash。
#! ?告诉系统其后路径所指定
的程序即是解释此脚本文件的
Shell 程序。
Shell程序步骤
1、创建一个文件,扩展名为.sh。
2、修改文件的权限为可执行文件
3、编程程序
4、执行
执行方式两种
(1) sh 脚本
(2) ./脚本
Shell结构
1、#! 用来指定执行脚本的shell
2、# 注释
3、 命令和控制结构
命名规则:
1、命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
2、中间不能有空格,可以使用下划线(_)。
3、不能使用标点符号。
4、不能使用bash里的关键字(可用help命令查看保留关键字)
使用规则:
1、习惯用大写字母来命名变量
2、赋值时,”=”前后不能有空格
3、命令的执行结果赋值给变量时,使用反单引号
如:TIME=`date`
4、使用变量时,使用 $变量名 或 ${变量名}
只读变量
使用readonly。此命令可以将变量定义为只读变量,只读变量的值不能被改变
删除变量
使用unset。变量删除后不能再次被使用,unset不能删除只读命令
临时变量:也叫局部变量,在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
永久变量: 也叫环境变量,所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
字符串
是shell编程中最常用最有用的数据类型
(除了数字和字符串,也没啥其它类型好用了)
字符串可以用单引号,也可以用双引号,
也可以不用引号。
单引号:
1、单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
2、单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
双引号:
1、双引号里可以有变量
2、双引号里可以出现转义字符
一、拼接字符串
两种方式:
1、无缝拼接
2、双引号内直接使用变量
二、获取字符串长度
语法1: ${#name}
语法2: expr length ${name}
三、提取子字符串
语法:${name:startIndex:length}
${name:startIndex}
${name:0-index:length}
${name:0-index}
另注:还可以使用 #、##、%、%%进行删除后保留子串
A、#、##?:从左边开始删除。
#?表示从左边删除到第一个指定的字符;
##?表示从左边删除到最后一个指定的字符。
B、%、%%?:从右边开始删除。?
%?表示从右边删除到第一个指定的字符;
%%?表示从右边删除到最后一个指定的字符。
另注:删除包括了指定的字符本身。
四、查找子字符串:
使用命令 expr。
ex:
url=“this is a good man”
index=`expr index “${url}” is`
echo $index ----输出 2
========================================
Shell数组
使用规则
1、Bash仅仅支持一维数组,并且没有限定数组的大小。
2、数组元素的下标从0开始。
3、获取数组中的元素要利用下标,
4、下标使用不当,会报错。
一、定义数组
语法1:
arrayName=(值1 值2 … 值n)
语法2:
arrayName=(
值1
值2
..
值n
)
注意:元素间使用空格分隔开或者换行符
或者直接定义数组的各个元素
name[0]=值1
name[1]=值2
…
name[n]=值n
二、读取数组
格式:
${name[index]}
三、获取数组所有元素
格式:
${name[*]} 或${name[@]}
四、获取数组长度
格式:
${#name[*]}或${#name[@]}
位置变量和特殊变量
Shell解释用户执行的命令时,会将命令行的一串字符进行解析划分成部分。
每个部分都有一个固定的变量名$n,不能自定义。
$n: n从0开始,依次往后+1。
从$1开始 叫位置参数变量。
大于等于10时,必须使用{}将数字括起来
Ex:
ls –la file1 file2 file3 ….. file10
$0 的值为:ls -la
$1 的值为file1
…….
${10} 的值为file10
特殊变量:
$* :获取所有参数合并成一个字符串
$# :获取参数的个数
$$ :当前进程的ID
$! :后台运行的最后一个进程的ID
$? :最后一个命令的退出状态,0表示没有错误
一、read命令
从键盘读取数据,赋值给变量
Ex: read username
注1:当输入的词组个数大于需要的参数个数,则多出的词组将被作为整体为最后一个参数接收
一、read命令(续)
Ex:
read –p “请输入密码:” –n 6 -t 5 password
echo -e “\npassword is $password”
参数说明:
-p:输出提示文字
-n :输入字符串长度,达到此长度,自动结束
-t :输入限制时间
-s :隐藏输入内容
-e :使转义功能生效
二、expr命令
对整数型变量进行算术运算
Ex:
expr 3 + 5
expr 3 \* 5
复杂计算:
expr ` expr 5 - 1` / 2
num=` expr $var / 2`
三、echo命令
用于字符串的输出显示
echo $var
echo It is a test file
开启转义 : -e
echo -e “ hello \n world”
echo -e “hellokitty \c”
\n #换行
\c #不换行
四、printf命令
与echo功能相同,用来输出,功能更强大,如格式化字符串,指定字符串的宽度,左右对齐方式,默认不换行,可以手动添加\n
语法:
printf format-string [arguments……...]
说明:
format-string: 格式控制字符串
arguments: 参数值列表
%d %s %c %f?格式替代符详解:
d: Decimal 十进制整数?-- 对应位置参数必须是十进制整数,否则报错!
s: String 字符串?-- 对应位置参数必须是字符串或者字符型,否则报错!
c: Char 字符?-- 对应位置参数必须是字符串或者字符型,否则报错!
f: Float 浮点?-- 对应位置参数必须是数字型,否则报错!
四、printf命令(续)
Ex:
printf “%d %s\n” 1 “abc”
printf %s abcdef
printf %s abc def #此格式只指定了一个参数,但是多出的参数仍然会按照该格式输出,格式被重用
printf “%s %s %s\n” a b c d e f g h I j
printf “%s and %d” #没有参数时,%s为空,%d为0
五、test命令
用于测试变量是否相等、是否为空、文件类型等
格式:
test 测试条件
测试范围:整数测试,字符串测试,文件测试
五、test命令(续)
整数测试
test v1 -eq v2 测试两个数是否相等
test v1 -gt v2 测试是否v1>v2
test v1 -ge v2 测试是否v1>=v2
test v1 -lt v2 测试是否v1 test v1 -le v2 测试是否v1<=v2 test v1 -ne v2 测试两个数是否不相等 五、test命令(续) 字符串测试 test str1 = str2 测试字符串是否相等 test str1 != str2 测试字符串是否不相等 test str1 测试字符串是否不为空 test -n str1 测试字符串是否不为空 test -z str1 测试字符串是否为空 五、test命令(续) 文件测试 test -d file 指定文件是否目录 test -f file 指定文件是否是常规文件 test -x file 指定文件是否可执行 test -r file 指定文件是否可读 test -w file 指定文件是否可写 test -a file 指定文件是否存在 test -s file 文件的大小是否非0 另注:通常test命令不单独使用, 而是与if语句连用 分支结构: 一、if -else分支结构 if语法格式: if 条件 then 逻辑块(通常都是些命令) fi 写成一行:适用于终端写法 If 条件; then 逻辑 ; fi 一、if -else分支结构 if else语法格式: if 条件 then 逻辑块(通常都是些命令) else 逻辑块 fi 一、if -else分支结构 If else-if else语法格式: if 条件1 then 逻辑块(通常都是些命令) elif 条件2 then 逻辑块 else 逻辑块 fi 一、if -else分支结构(续) 1、分支结构也可以进行嵌套 2、多个条件的联合 -a 逻辑与 当两个条件都成立时,结果为true -o 逻辑或,两个条件只要有一个成立,结果为真 :nohl --------------------------------------------------------------------------------------------------------------------------------- 2018.9.29 二、case多选择语句 Case语句会匹配一个值和一个模式,匹配成功,执行相应逻辑块 语法: case 值 in 模式1) 逻辑块 ;; 模式2) 逻辑块 ;; esac 三、for循环结构 格式: for 变量 in 名字表 do 逻辑 done 写成一行: for 变量 in 列表;do 逻辑; done; 四、select表单循环 语法: select 变量 in 列表 do 逻辑块 done 写成一行: Select 变量 in 列表;do 逻辑 ; done; 1) 小黑 小白 2) 小王 小刘 3) 小张 小罗 五、while循环 语法: while 条件 do 逻辑块 done 六、无限循环 语法: while : do 逻辑块 done 或 while true do 逻辑块 done 七、until循环 Until循环执行逻辑直到true时停止 语法: until 条件 do 逻辑块 done 八、break与continue 如果想要提前结束循环(即想跳出循环) 使用关键字 break 如果想结束当次循环,进行下一次循环 使用关键字 continue --练习: 计算100以内的和,排出25 50 75 --练习: 循环从命令行读取字符串,进行拼接 当读取到q或者exit时,终止循环。 并输出拼接后的字符串 九、shift指令 作用: 参数左移,每执行一次,参数序列顺次左移一个位置,$#的值少一个, 多数用于分别处理每一个参数,移出去的参数不再可用 ls -l p1 p2 p3 p4 p5 p2 p3 p4 p5 p3 p4 p5 p4 p5 p5 练习: ./test6.sh 1 2 3 4 5 6 7 一、基础 在shell脚本中,我们也可以定义函数,封装逻辑,进行调用 语法: [function] functionName() { 逻辑 } 调用时,不带() 一、基础 说明: 1、关键字function,可以忽略不写 2、return关键字,可加可不加,看需求 (1)加: 返回值只能是0~255的数字 (2)不加: 最后一条命令结果作为返回值