第十周

一、计算机
1、
能接收用户输入的指令和数据,经过中央处理器的算术逻辑单元
处理,然后会产生或者显示新数据的,就是计算机。
比如,普通商户用的计算器,手机,提款机,汽车导航,
桌面电脑,手提电脑等
2、计算机的五大单元:
输入单元:输入设备,键盘,鼠标,扫描仪,触摸屏幕
输出单元:显示器,打印机…
cpu的控制单元:控制输入单元和输出单元工作
cpu的算术逻辑单元:进行逻辑运算的
及其内存:从输入单元获取数据,或者将数据传输到输出单元上。

cpu与内存的关系:
cpu运算所需要的数据,全部都来自于内存。
产生的数据也全部都写入内存。

3、计算机的硬件
主板:相当于人的神经系统,将其他硬件联系到一起
主板中嵌入了一个微型程序:bios
(basic input out system)
cpu: 主要是起到控制其他硬件和运算。
内存: 暂时存储cpu要用的数据
硬盘: 永久存储数据
显卡(内存):存储像素颜色的。
网卡:使用tcp/ip协议进行网络通信的
电源:相当于人的心脏。提供能源的

小比喻:没有通电的计算机,就是一堆废铁
通电后的计算机,就是能电人的废铁
二、操作系统
1、概念
操作系统是一组程序,
这组程序中内部含有专门用来管理和控制计算机硬件的程序,
我们称之为内核。还有一组用来提供给应用
程序使用的系统调用接口。
2、常用的操作系统
unix,linux,windows,mac,ios,android,
wp,chrome os.
三、linux
1、简介
1991、林纳斯.托瓦斯写的一个内核程序,后经过多人
设计出的一个操作系统。是开源的,支持多用户,
多线程。
2、linux上的软件,多数都是免费的,我们可以直接使用。
四、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
1、桥接模式:

文件的位置:
/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设置成与网关一致即可

使用server版的linux练习网络配置
cd:表示切换目录
ls:显示目录的内容
pwd:显示当前位置

vi /etc/sysconfig/network-scripts/ifcfg-eth0
i键:表示插入
按退出键:esc
:wq回车
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显示的权限为真实权限的反码:
作业:
查看权限的数字
文件搜索命令:
(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)正常模式
(2)插入模式
(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= J A V A H O M E / l i b / d t . j a r : . . . . P A T H = . . . . . . : JAVA_HOME/lib/dt.jar:.... PATH=......: JAVAHOME/lib/dt.jar:....PATH=......:PATH
export JAVA_HOME CLASS_PATH PATH
ps:配置PATH时,一定要注意原有的值的拼接
第七步: 重启系统或者使用下面命令
使配置文件
source ~/.bashrc
文件搜索命令
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]}
三、获取数组所有元素
格式:
n a m e [ ∗ ] 或 {name[*]} 或 name[]{name[@]}
四、获取数组长度
格式:
KaTeX parse error: Expected '}', got '#' at position 2: {#̲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<v2
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 逻辑或,两个条件只要有一个成立,结果为真

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值