1 软件安装
rpm安装 (radhat,contos)
检查是否已经安装
rpm -ivh i安装 v展示#号式的进度条,h详细过程
rpm -qa |grep jdk q查询 a所有
rpm -qi jdk 查询安装信息
rpm -qc jdk 查询安装的配置文件
rpm -ql jdk more more 一屏屏显示,包括隐藏文件放到哪儿了
所谓的安装目录是不能选择的,官方在打包的时候已经定好了
删除 rpm -m
查询
rpm -qi jdk
3 下载源码,自己编译安装
yum 类同 manven,有库,它可以很好的解决依赖关系。yum库也可改为阿里云的 (阿里云镜像站,点击help,缓存云的镜像文件)
配置文件 /etc/yum.repos.d
搭建本地 yum 源,制定本地目录为yum源
(注意服务间要想沟通,需要建一个基于某种协议的共享服务器)
yum本地源:
注意在使用yum时
1 先查 yum search mysql-server yum中是否有该包
2 可以查版本 yum -info mysql-server
cd /mnt/Packages
ls 你会发现有很多包,但你rpm -i安装时是不成功的,因为有依赖
3 但是这个本地yum源只能在本机上用不能在其他机子上用,那么我么需要搭建一个共享服务器
搭建nginx,用编译源码方式安装
源码安装,一般是指repm中找不到,yum库中也没有,例如 nginx
源码安装注意几个步骤
1 找到源码,预编译(就是准本编译环境,查看依赖和兼容性,就是执行./configure)
(查看是什么语言写的,基本都是python,c++)
2 编译、安装 make && make install
4 linux命令
文件准备
man (手册)
man有8个种类
例如 man 1 ls (1,表示普通命令也叫用户命令)数字可以省略
man 8 ifconfig (8表示管理命令)
学习date man date
显示当前日期date +%Y-%m-%d
学习 echo
type echo 输出内容
man:
examples ,man tar examples
翻屏:
向后翻一屏:SPACE
向前翻一屏:b
向后翻一行:ENTER
向前翻一行:k
查找:
n: 下一个
N:前一个
q: 退出
more 是屏显示 less是行显示
tail 是后,head是前
例:看第15行
head -15 profile |tail -1
分屏看
ls -l /dev | more
文本、字符串处理
cut:
-d: 指定字段分隔符,默认是空格
-f: 指定要显示的字段
-f 1,3
-f 1-3
文本排序:sort
文本统计:wc (word count)
-l
-c
sed基本用法:
sed: Stream EDitor
行编辑器 (全屏编辑器: vi)
sed: 模式空间
默认不编辑原文件,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕;
sed [options] 'AddressCommand' file ...
-n: 静默模式,不再默认显示模式空间中的内容
-i: 直接修改原文件
-f /PATH/TO/SED_SCRIPT
sed -f /path/to/scripts file
-r: 表示使用扩展正则表达式
Command:
d: 删除符合条件的行;
a \string: 在指定的行后面追加新行,内容为string
\n:可以用于换行
i \string:添加 在指定的行前面添加新行,内容为string
r FILE: 添加 将指定的文件的内容添加至符合条件的行处
s/pattern/string/修饰符: 查找并替换,默认只替换每行中第一次被模式匹配到的字符串
加修饰符
g: 全局替换
i: 忽略字符大小写
s///: s###, s@@@ (/#@这3种都可以,是命令隔断符)
\(\), \1, \2
自己解释
^(行首)$(行尾) ^$就表示空白符
cut(行) sort wc(统计) sed(行编辑) awk
cut: cut -d(切割符号): -f(域)1,7 passwd
sort: cut -d: -f1 passwd | sort
wc:ls -l /dev | wc -l(统计有多少行) 得到dev下有多少个文件
wc -l passwd 得到passwd的行数
sed:行编辑器 全屏编辑器: vi sed -i(本文件) 's/before/after/gi' profile
sed -r(后面是正则) 's@^(行首)[[:space:]]+@@g' /etc/grub.conf
awk: 它比sed要复杂 它也是行编辑,一行一行的读出,注意区分 vi
awk是一个强大的文本分析工具,
相对于grep的查找,sed的编辑,
awk在其对数据分析并生成报告时,显得尤为强大。
简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk '{pattern + action}' {commands}
awk 选项 '内部命令{匹配表达式去查找(可以省略) + 匹配后的一系列动作}' 【】括号也行 {commands}
其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。
花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。
pattern就是要表示的正则表达式,用斜杠括起来。
案例:
显示最近登录的5个帐号
last 命令时,它会把所有登录的信息列出来 tty1说明客户端是 xshell,还有ip
#last -n 5 | awk '{print $1}' 这里省略了匹配表达式 默认按字表符(也就是那个空格) 隔开
awk -F: '{print $1}' passwd
读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域
$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键",
所以$1表示登录用户,$3表示登录用户ip,以此类推。
输出 第一个和第七个 按字表符分开
#cat /etc/passwd |awk -F ':' '{print $1"\t"$7}' "\t"表示按字表符隔开
在开头输出个“name” 和“tshell”
cat /etc/passwd |awk -F ':' 'BEGIN {print "name\tshell"} {print $1","$7} ' passwd
在头行和尾行加东西
cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "aaaaaa"}'
BEGIN(awk内部命令表示读入数据之前执行的动作)
只输出能登录的,,这时候你要做判断了
注意:::::每读取一行就会执行花括号里的动作
awk -F: '{if($7=="/bin/bash") print $1"\t"$7}' passwd
接着我们添加用户 useradd hsc
more /etc/passwd
允许登录的用户前加序号,序号要随着用户增加而增加
可见在读文件之前定义一个变量 i=0
awk -F: 'BEGIN {i=0} {if($7=="/bin/bash"){ i++;print i"\t" $1"\t"$7"\t"NF}}' /etc/passwd
awk内置变量
awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数(例如上面那一行被分成了7份)
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
好多不常用
$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。
上面介绍的awk只做一些了解,不会后再看看这里能想起来就行,后期会用shell编程替代它
查看登录用户默认执行的shell 用 passwd
root:x:0:0:root:/root:/bin/bash (bash是默认的执行的shell)
shell
1 shell:若类型、解释型语言
解释器:bash
变量,变量的类型
环境变量 (用户,系统)
export 名字 = 值
作用于当前bash及子bash
本地变量 没有local
只属于某一个bash的变量,另外一个bash是取不到的。
作用于整个bash进程
name = 值
局部变量 有local
作用于 当前代码段
local name = 值
位置变量:传给脚本的参数 $1是第一个,依次类推
特殊变量:(死记住)
$?:上一个命令的执行状态返回值,记录一个特殊值
# ls
hsc nginx-1.8.1 nginx-1.8.1.tar.gz zs
# echo "$?"
0 在bash里只要非0就表示错误
$#:传递到脚本的参数个数
$* 传递到脚本的参数,与位置变量不同,此选项参数不超过9个
$$ 传入当前进程的id号
后面用的不多
$! 最后一个进程号
$@与$#相同,使用时加引号,并在引号中返回参数个数
$-上一个命令的最后一个参数
程序两类执行结果:
1 执行结果
2 执行状态 $?:0表示成功,1-255错误
> 覆盖重定向 ls>/dev/null
>> 追加重定向
2> 错误重定向
2>> 错误追加重定向
&> 全部重定向 ls abc&>/dev/null
查看shell中变量:
set 命令
查看shell中的环境变量
printenv
env
export
应用变量:$(变量名),一般可以省略{}
单引号:强引用,不作变量替换
双引号:弱引用,做变量替换
反引号:··命令替换
脚本
脚本:命令的堆砌
标准输入stdin、标准输出stdout
条件判断
1 [ 表达式 ] 这种多,注意空格
2 test 表达式
整数比较
-eq:比如[ $A -eq $B ]
-ne,-gt,-lt,-ge,-le
命令的逻辑关系:
在linux中 命令执行状态:0位真,其他为假
逻辑与:&&
[ $# eq 0 ] && exit 3
id $1 (非0,都是假)|| echo "user $1 not found" 或运算如果前面是真,那后面就不用运行了
1 tomi 敏感信息加密(比如法律规定不能讲手机号密码等敏感信息传播)
2 两种计算体系流式计算体系
rabhat和 centos 区别很小,他俩版本号几乎一致,例如都有6.5
centos就是来源于radhad
rpm是一个应用程序
linux 和win都有 用户接口((图形和命令接口),所有的用户接口,它就是一个软件,一个桌面
应用程序,把进程关掉后就看不到桌面
命令行的share和图形化的share。linux就bash
ls -l /usr
命令 选项 参数
应用程序的的入口就命令,可执行文件就是应用程序的入口,一个应用程序有多个程序入口,一个
可执行文件就是一个入口
键盘是字符设备 硬盘是块设备
ibm 包
man 1 ifconfig 1表示第一章节,也就是第一类型 外部命令
帮助文档
help 查看内部命令
【】表示可选 login表示用户名
date 031215062016
boot 在关机时,它是0k的,他是系统的映射文件,他和系统文件是一一对应的
home 是家的概念,也就是说在家里有最高的权限
lib64 指64位操作系统
opt是用户自己放东西的
/proc内核文件都和磁盘上的文件一一对应的
/sys 同上
/ temp 重启是会 清掉一些,所以重要文件不能放到这儿
/var第三方的数据或配置文件
看文件时间
stat 1.txt
access最后一次访问时间
改变包括修改,改变权限的时候,change时间也会改变,修改时间不变
vim是vi的进化版
i在光标前,o在光标后
vi + 自动跑最后一行
vi +/after 再写小写字母n 下一个,N前一个
zz 保存并退出
jkil 移动光标
行首 0 ^ 行尾 $
w 往后移动单词
# G 最后一行
x删除,i,输入完了后再按下退出键就又回来
dd 删除
4dd 删除4行
3dw删除3个词
先钱还到抹行.+3d ($文件末尾)
复制 yw 就复制成功了
复制一行 2yy
u 撤销上一次操作,
ctrl撤销上次撤销
末行:!接外部命令?
末行 :显示行号,随便找个地方放进去就行
设置自动缩进
bash登录时 启动 已登录就会看到一个任务接口
如果不指定 GID 或UID 那么它就会自动增 ,如果不创建组的话,就会 和用户名一样的组
ps -aux 详细 看进程
net start
网络底层协议就两种 tcp udp
grep ^zx /etc/passwd 匹配
rpm安装 (radhat,contos)
检查是否已经安装
rpm -ivh i安装 v展示#号式的进度条,h详细过程
rpm -qa |grep jdk q查询 a所有
rpm -qi jdk 查询安装信息
rpm -qc jdk 查询安装的配置文件
rpm -ql jdk more more 一屏屏显示,包括隐藏文件放到哪儿了
所谓的安装目录是不能选择的,官方在打包的时候已经定好了
删除 rpm -m
查询
rpm -qi jdk
3 下载源码,自己编译安装
yum 类同 manven,有库,它可以很好的解决依赖关系。yum库也可改为阿里云的 (阿里云镜像站,点击help,缓存云的镜像文件)
配置文件 /etc/yum.repos.d
搭建本地 yum 源,制定本地目录为yum源
(注意服务间要想沟通,需要建一个基于某种协议的共享服务器)
yum本地源:
注意在使用yum时
1 先查 yum search mysql-server yum中是否有该包
2 可以查版本 yum -info mysql-server
cd /mnt/Packages
ls 你会发现有很多包,但你rpm -i安装时是不成功的,因为有依赖
3 但是这个本地yum源只能在本机上用不能在其他机子上用,那么我么需要搭建一个共享服务器
搭建nginx,用编译源码方式安装
源码安装,一般是指repm中找不到,yum库中也没有,例如 nginx
源码安装注意几个步骤
1 找到源码,预编译(就是准本编译环境,查看依赖和兼容性,就是执行./configure)
(查看是什么语言写的,基本都是python,c++)
2 编译、安装 make && make install
4 linux命令
文件准备
man (手册)
man有8个种类
例如 man 1 ls (1,表示普通命令也叫用户命令)数字可以省略
man 8 ifconfig (8表示管理命令)
学习date man date
显示当前日期date +%Y-%m-%d
学习 echo
type echo 输出内容
man:
examples ,man tar examples
翻屏:
向后翻一屏:SPACE
向前翻一屏:b
向后翻一行:ENTER
向前翻一行:k
查找:
n: 下一个
N:前一个
q: 退出
more 是屏显示 less是行显示
tail 是后,head是前
例:看第15行
head -15 profile |tail -1
分屏看
ls -l /dev | more
文本、字符串处理
cut:
-d: 指定字段分隔符,默认是空格
-f: 指定要显示的字段
-f 1,3
-f 1-3
文本排序:sort
文本统计:wc (word count)
-l
-c
sed基本用法:
sed: Stream EDitor
行编辑器 (全屏编辑器: vi)
sed: 模式空间
默认不编辑原文件,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕;
sed [options] 'AddressCommand' file ...
-n: 静默模式,不再默认显示模式空间中的内容
-i: 直接修改原文件
-f /PATH/TO/SED_SCRIPT
sed -f /path/to/scripts file
-r: 表示使用扩展正则表达式
Command:
d: 删除符合条件的行;
a \string: 在指定的行后面追加新行,内容为string
\n:可以用于换行
i \string:添加 在指定的行前面添加新行,内容为string
r FILE: 添加 将指定的文件的内容添加至符合条件的行处
s/pattern/string/修饰符: 查找并替换,默认只替换每行中第一次被模式匹配到的字符串
加修饰符
g: 全局替换
i: 忽略字符大小写
s///: s###, s@@@ (/#@这3种都可以,是命令隔断符)
\(\), \1, \2
自己解释
^(行首)$(行尾) ^$就表示空白符
cut(行) sort wc(统计) sed(行编辑) awk
cut: cut -d(切割符号): -f(域)1,7 passwd
sort: cut -d: -f1 passwd | sort
wc:ls -l /dev | wc -l(统计有多少行) 得到dev下有多少个文件
wc -l passwd 得到passwd的行数
sed:行编辑器 全屏编辑器: vi sed -i(本文件) 's/before/after/gi' profile
sed -r(后面是正则) 's@^(行首)[[:space:]]+@@g' /etc/grub.conf
awk: 它比sed要复杂 它也是行编辑,一行一行的读出,注意区分 vi
awk是一个强大的文本分析工具,
相对于grep的查找,sed的编辑,
awk在其对数据分析并生成报告时,显得尤为强大。
简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk '{pattern + action}' {commands}
awk 选项 '内部命令{匹配表达式去查找(可以省略) + 匹配后的一系列动作}' 【】括号也行 {commands}
其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。
花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。
pattern就是要表示的正则表达式,用斜杠括起来。
案例:
显示最近登录的5个帐号
last 命令时,它会把所有登录的信息列出来 tty1说明客户端是 xshell,还有ip
#last -n 5 | awk '{print $1}' 这里省略了匹配表达式 默认按字表符(也就是那个空格) 隔开
awk -F: '{print $1}' passwd
读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域
$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键",
所以$1表示登录用户,$3表示登录用户ip,以此类推。
输出 第一个和第七个 按字表符分开
#cat /etc/passwd |awk -F ':' '{print $1"\t"$7}' "\t"表示按字表符隔开
在开头输出个“name” 和“tshell”
cat /etc/passwd |awk -F ':' 'BEGIN {print "name\tshell"} {print $1","$7} ' passwd
在头行和尾行加东西
cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "aaaaaa"}'
BEGIN(awk内部命令表示读入数据之前执行的动作)
只输出能登录的,,这时候你要做判断了
注意:::::每读取一行就会执行花括号里的动作
awk -F: '{if($7=="/bin/bash") print $1"\t"$7}' passwd
接着我们添加用户 useradd hsc
more /etc/passwd
允许登录的用户前加序号,序号要随着用户增加而增加
可见在读文件之前定义一个变量 i=0
awk -F: 'BEGIN {i=0} {if($7=="/bin/bash"){ i++;print i"\t" $1"\t"$7"\t"NF}}' /etc/passwd
awk内置变量
awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数(例如上面那一行被分成了7份)
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
好多不常用
$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。
上面介绍的awk只做一些了解,不会后再看看这里能想起来就行,后期会用shell编程替代它
查看登录用户默认执行的shell 用 passwd
root:x:0:0:root:/root:/bin/bash (bash是默认的执行的shell)
shell
1 shell:若类型、解释型语言
解释器:bash
变量,变量的类型
环境变量 (用户,系统)
export 名字 = 值
作用于当前bash及子bash
本地变量 没有local
只属于某一个bash的变量,另外一个bash是取不到的。
作用于整个bash进程
name = 值
局部变量 有local
作用于 当前代码段
local name = 值
位置变量:传给脚本的参数 $1是第一个,依次类推
特殊变量:(死记住)
$?:上一个命令的执行状态返回值,记录一个特殊值
# ls
hsc nginx-1.8.1 nginx-1.8.1.tar.gz zs
# echo "$?"
0 在bash里只要非0就表示错误
$#:传递到脚本的参数个数
$* 传递到脚本的参数,与位置变量不同,此选项参数不超过9个
$$ 传入当前进程的id号
后面用的不多
$! 最后一个进程号
$@与$#相同,使用时加引号,并在引号中返回参数个数
$-上一个命令的最后一个参数
程序两类执行结果:
1 执行结果
2 执行状态 $?:0表示成功,1-255错误
> 覆盖重定向 ls>/dev/null
>> 追加重定向
2> 错误重定向
2>> 错误追加重定向
&> 全部重定向 ls abc&>/dev/null
查看shell中变量:
set 命令
查看shell中的环境变量
printenv
env
export
应用变量:$(变量名),一般可以省略{}
单引号:强引用,不作变量替换
双引号:弱引用,做变量替换
反引号:··命令替换
脚本
脚本:命令的堆砌
标准输入stdin、标准输出stdout
条件判断
1 [ 表达式 ] 这种多,注意空格
2 test 表达式
整数比较
-eq:比如[ $A -eq $B ]
-ne,-gt,-lt,-ge,-le
命令的逻辑关系:
在linux中 命令执行状态:0位真,其他为假
逻辑与:&&
[ $# eq 0 ] && exit 3
id $1 (非0,都是假)|| echo "user $1 not found" 或运算如果前面是真,那后面就不用运行了
1 tomi 敏感信息加密(比如法律规定不能讲手机号密码等敏感信息传播)
2 两种计算体系流式计算体系
rabhat和 centos 区别很小,他俩版本号几乎一致,例如都有6.5
centos就是来源于radhad
rpm是一个应用程序
linux 和win都有 用户接口((图形和命令接口),所有的用户接口,它就是一个软件,一个桌面
应用程序,把进程关掉后就看不到桌面
命令行的share和图形化的share。linux就bash
ls -l /usr
命令 选项 参数
应用程序的的入口就命令,可执行文件就是应用程序的入口,一个应用程序有多个程序入口,一个
可执行文件就是一个入口
键盘是字符设备 硬盘是块设备
ibm 包
man 1 ifconfig 1表示第一章节,也就是第一类型 外部命令
帮助文档
help 查看内部命令
【】表示可选 login表示用户名
date 031215062016
boot 在关机时,它是0k的,他是系统的映射文件,他和系统文件是一一对应的
home 是家的概念,也就是说在家里有最高的权限
lib64 指64位操作系统
opt是用户自己放东西的
/proc内核文件都和磁盘上的文件一一对应的
/sys 同上
/ temp 重启是会 清掉一些,所以重要文件不能放到这儿
/var第三方的数据或配置文件
看文件时间
stat 1.txt
access最后一次访问时间
改变包括修改,改变权限的时候,change时间也会改变,修改时间不变
vim是vi的进化版
i在光标前,o在光标后
vi + 自动跑最后一行
vi +/after 再写小写字母n 下一个,N前一个
zz 保存并退出
jkil 移动光标
行首 0 ^ 行尾 $
w 往后移动单词
# G 最后一行
x删除,i,输入完了后再按下退出键就又回来
dd 删除
4dd 删除4行
3dw删除3个词
先钱还到抹行.+3d ($文件末尾)
复制 yw 就复制成功了
复制一行 2yy
u 撤销上一次操作,
ctrl撤销上次撤销
末行:!接外部命令?
末行 :显示行号,随便找个地方放进去就行
设置自动缩进
bash登录时 启动 已登录就会看到一个任务接口
如果不指定 GID 或UID 那么它就会自动增 ,如果不创建组的话,就会 和用户名一样的组
ps -aux 详细 看进程
net start
网络底层协议就两种 tcp udp
grep ^zx /etc/passwd 匹配