Linux基础(四)
一、文件压缩和打包
1.gzip命令(应用广泛):可以解开compress,zip与gzip等软件所压缩的文件
-c 将压缩的数据输出到标准输出(stdout)上
-d 解压缩
-t 可以用来检验一个压缩文件的一致性,看看文件有无错误
-v 可以显示出原文件/压缩文件的压缩比的等信息
-(1,2,…,9)压缩等级,1最快,但是压缩比较差;9最慢,但是压缩比最好,默认是6
-l 查看压缩文件的压缩比:gzip -l *.gz
eg:
压缩:gzip -v install.log
解压缩:gzip -d install.log.gz
注意这方式无论压缩还是解压缩源文件都将不再存在
gzip -c install.log直接输出到终端上
gzip -c install.log > install.log.gz可以保留原文件并且可以将压缩文件之间改名
2.zcat查看压缩文件内容
zcat .gz 查看全部内容
zcat .gz|head -n 查看前n行
cat可以读取纯文本文件,那个zcat则可以读取纯文本文件被压缩后的压缩文件
3.bzip2命令
-c 将压缩的过程产生的数据输出到标准输出(stdout)
-d 解压缩的参数
-k 保留源文件,而不会删除原始的文件
-z 压缩的参数
-v 可以显示出原文件/压缩文件的压缩比等信息
-(1,2,…,9)与gzip同样的,都是在计算压缩比的参数
eg:
压缩bzip2 -z install.log//删除源文件
bzip2 -zk install.log//保留源文件
解压bzip2 -d install.log.bz2//删除源文件
bzip2 -dk install.log.gz2//保留源文件
4.文件打包tar命令
-c 建立打包文件
-t 查看打包文件的内容含有哪些文件
-x 解打包或解压缩的功能,可以搭配-C大写在特定到特定目录打开
-j 通过bzip2的支持进行压缩/解压缩:此时文件最好为.tar.gz2
-z 通过gzip的支持进行压缩/解压缩:此时文件最好为.tar.gz
-v 在压缩/解压缩的过程中,将正在处理的文件名显示出来
-f filename:-f 后面跟处理后文件的全名称(路径+文件名+后缀名)
-C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以用这个选项
-p 保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
--exclude=FILE:在压缩的过程中,不要将那些文件打包
-c -t -x不可同时出现在一串指令中
tar常用的指令组合
1.打包和压缩
tar -zcv -f [/路径/]filename.tar.gz被压缩的文件或目录
tar -jcv -f [/路径/]filename.tar.bz2被压缩的文件或目录
2.解压
tar -zxv -f[/路径/]filename.tar.gz
tar -jxv -f[/路径/]filename.tar.bz2
解压到指定目录
tar -zxv -f[/路径/]filename.tar.gz -C 指定目录
tar -jxv -f[/路径/]filename.tar.bz2 -C 指定目录
filename前带路径表示该路径下的,反之表示当前目录下
查询shells文件在压缩包中是否存在 tar -ztv -f [/路径/]filename.tar.gz|grep ‘shells’
仅解压出shells文件 tar -zxv -f etc01.tar.gz etc/shells
二、rpm安装软件
1.安装
rpm -ivh package_name
选项与参数
-i:install的意思
-v 查看更细部的安装信息画面
-h 以安装信息列显示安装进度
安装多个rpm包 rpm -ivh a.rpm b.rpm
安装网上某个位置rpm包 rpm -ivh http://website.name/path/pkgname.rpm
小贴士:rz:从本机到虚拟机拷贝软件 sz从linux虚拟机到本机,如果输入rz提示命令没找到那么没有安装lrzsz程序,访问http://rpmfind.net/linux/rpm2html/serach.php?query=lrzsz 下载lrzsz-0.12.21-15.x86_64.rpm
2.升级与更新
rpm -Uvh <package_name> -Uvh后面接的软件如果没有安装过,系统会直接安装,若后面接的软件安转过但版本较旧,则更新至新版
rpm -Fvh <package_name> -Fvh如果后面接的软件并未安装到linux系统上,则该软件不会被安装,只有已安装的软件才会被升级
3.rpm查询
rpm在查询的时候,其实查询的地方是在/var/lib/rpm这个目录下的数据库文件
-q 仅查询,后面接的软件名称是否有安装
-qa 列出所有的已经安装在本机Linux系统上面所有软件名称
-qi 列出该软件的详细信息,包含开发商,版本和说明等
-ql 列出该软件所有的文件与目录所在完整文件名
-qc 列出该软件的所有配置文件
-qd 列出该软件的所有说明文件
-qR 列出和该软件有关的相依软件所含的文件
-qf 由后面接的文件名,找出该文件,属于哪一个已安装的软件,查询某个RPM文件内含有的信息
-qp[icdlR]注意 -qp后面接的所有参数以上面说明一致,但用途仅在与找出某个RPM文件内的信息,而非已安装的软件信息
eg:
查看是否安装jdk rpm -qa|grep jdk
查找所有凶已经安装的包,前四个 rpm -qa|head -n 4
查询lrzsz所包含的文件及目录 rpm -ql lrzsz
查看安装软件的相关信息 rpm -qi jdk1.8.0_111-1.8.0_111-fcs.x86_64
列出jdk的配置文件 rpm -qc jdk1.8.0_111-1.8.0_111-fcs.x86_64
列出说明文件 rpm -qd apr
查看需要依赖 rpm -qR apr
4.rpm检查
找出有关的软件名 rpm -qa|grep apr
卸载软件 rpm -e apr
三、yum安删更软件
1.配置epel
1.确认版本 cat /etc/redhat-release
2.下载epel的rpm安装包
wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
3.安装 rpm -ivh
4.更新yum源 yum repolist
2.yum查询参数
serach 查询某个软件名称或是描述的关键字
list 列出目前yum所管理的所有软件名称与版本类似 rpm -qa
info 同上,格式不太一样,不过有限类似 rpm -qai的执行结果
eg:
查找jdk相关的软件包 yum search jdk
查看beakerlib软件包功能 yum info beakerlib
列出yum服务器上提供的所有软件的详细信息20条 yum info|head -20
列出yum服务器上面提供的所有软件名称100条 yum list|head -100
列出目前服务器上可供本机进行升级的软件有哪些 yum install updates
列出目前服务器上xz.x86_64可更新版本 yum list updates|grep xz.x86_64
3.yum安装/升级/卸载软件
yum [install|update|remove] 软件名
install 后面要安装的软件
update 后面接要升级的软件,若要升级整个系统就直接update即可
remove:删除某个软件时,依赖于该软件并已经安装到系统中的其他软件或者包,会被一并删除
4.yum安装hadoop分布式软件
yum list|grep hadoop 发现没有需要在/etc/yum.repos.d下自己配置repo文件 http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/cloudera-cdh5.repo
5.创建本地yum源
1.rpm -qa|grep httpd检查是否有web服务器,如果没有则安装
2.创建本地web服务yum intall httpd
3.安装自带工具:yum install yum-utils createrepo
4.在/var/www/html下执行 reposync -r cloudera-cdh5
5.通过http://ip:port项目名来访问本地yum源
6.最后修改/etc/yum.repos.d/xxx.repo 文件中的baseurl换成本地地址
四、shell基础
1.变量读取
1.通过echo读取
命令格式:echo $ variable
eg:
读取登陆用户名:echo $ LOGNAME
读取用户home目录:echo $ HOME
读取当前系统默认的shell:echo $ SHELL
2.另一种格式 echo $ {LOGNAME}
2.环境变量
1将普通变量变为环境变量
1.export 变量名=值
2.变量名1=值1 变量名2=值2 export 变量名1 变量名2
3.局部变量的设置规则
1.变量与变量内容以一个等号"=“链接(name=value)
2.等号两边不能直接接空格符
3.变量名称只能是英文字母,数字,下划线,但开头不能是数字
4.变量内容若有空格符可使用双引号或单引号将变量内容结合起来
1.双引号中的特殊字符保有原本的特性
2.单引号中的特殊字符仅为一般字符
5.可用转义字符”"将特殊字符变为一般字符
6.把一个命令定义为一个变量
1.version= $ (uname)
2.cmd=date+%F
7.数据重定向
将某个命令行执行后应该要出现在屏幕上的数据,给他传输到其他地方,例如传输到文件或是其他命令
执行命令时候会有标准输出和标准错误输出
标准输出是指命令执行之后,传回正确信息的输出目标
标准错误输出是命令执行失败后,所传回错误信息的输出目标
标准输入(stdin):编号为0
标准输出(stdout):编号为1
标准错误输出(stderr):编号为2
1>:以覆盖的方法,将正确的数据输出到文件;
1>>:以累加的方法,将正确的数据输出到文件;
2>:以覆盖的方法,将错误输出的数据输出到文件;
2>>:以累加的方法,将错误输出的数据输出到文件;
8.命令执行判断
$ ?:命令回传值
cmd1&&cmd2:若cmd1执行完毕且正确执行( $ ?=0),则开始执行cmd2,若cmd1执行完毕且为错误( $ ?≠ 0),则cmd2不执行。
||:若cmd1执行完毕且正确执行( $ ?=0),则cmd2不执行。
若cmd1执行完毕且为错误($ ?≠0),则开始执行cmd2
举例:如果/tmp/test存在,则创建/tmp/test/jinxf
ls /tmp/test && touch /tmp/test/jinxf