Linux基础二(个人整理)
来源:互联网 发布:php做直播 编辑:程序博客网 时间:2024/05/16 23:35
三、变量和环境变量
定义一个变量
$ declare tmp
变量赋值
$ tmp=text
读取变量的值
$ scho $tmp
注:并不是任何形式的变量名都是可用的,变量名只能是英文字母,数字或者下划线,且不能以数字作为开头。
通常我们会涉及到的环境变量有三种:
- 当前 Shell 进程私有用户自定义变量,如上面我们创建的 temp 变量,只在当前 Shell 中有效。
- Shell 本身内建的变量。
- 从自定义变量导出的环境变量。
也有三个与上述三种环境变量相关的命令,set,env,export。这三个命令很相似,都可以用于打印相关环境变量,区别在于涉及的是不同范围的环境变量,详见下表:
set
显示当前 Shell 所有环境变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量env
显示与当前用户相关的环境变量,还可以让命令在指定环境中运行export
显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量如果我们在shell中输入一个命令,shell是怎么知道在哪里去找到这个命令然后执行的呢,这是通过环境变量path来进行搜索的,path里面的路径是以:作为分隔符,所以我们可以添加自定义路径到path:
$ PATH=$PATH:+绝对路径
注:这里一定要用绝对路径
添加全局有效的环境变量:
$echo"PATH=$PATH:+绝对路径">> .zshrc
直接添加内容到配置文件.zshrc中
变量修改
变量的修改有以下几种方式:
${变量名#匹配字串}
从头向后开始匹配,删除符合匹配字串的最短数据${变量名##匹配字串}
从头向后开始匹配,删除符合匹配字串的最长数据${变量名%匹配字串}
从尾向前开始匹配,删除符合匹配字串的最短数据${变量名%%匹配字串}
从尾向前开始匹配,删除符合匹配字串的最长数据${变量名/旧的字串/新的字串}
将符合旧字串的第一个字串替换为新的字串${变量名//旧的字串/新的字串}
将符合旧字串的全部字串替换为新的字串变量删除
可以使用unset命令删除一个环境变量:
$ unset temp
让环境变量立即生效:(避免上述方法每次修改后必须要重启终端才能生效)
$ source .zshrc
四、搜索文件
whereis 简单快速
whereis直接从数据库中查询,只搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s),并没有从硬盘中依次查找。
locate 快而全
可以用来查找指定目录下的不同文件。
查找 /etc 下所有以 sh 开头的文件:它不只是在etc目录下查找并会自动递归子目录进行查找
$locate /etc/sh
查找usr/share/下所有jpg文件:注意要添加*前的\转义,否则无法找到
$ locate /usr/share/\*.jpg
注:如果想只统计数目可以加上-c参数,-i参数可以忽略大小写进行查找,whereis同样适用-b、-m、-s。
which小而精
which本身是shell内建的一个命令,它只从path环境变量指定的路径中去搜索命令,我们通常使用which来确定是否安装了某个指定的软件。
find精而细
最强大的的查找命令,不但可以通过文件类型、文件名进行查找而且可以根据文件的属性(时间戳,权限等)进行搜索。基本命令格式:find [path][option][action],eg:$ find /etc/ -name
与实践相关的命令参数:
参数 说明
-atime
最后访问时间-ctime
创建时间-mtime
最后修改时间举个栗子:-mtime n:n为数字,表示在n天之前的“一天之内”修改过的文件
-mtime +n:列出在n天之前(不包含n天本身)呗修改过的文件
never file:file为一个已存在的文件,列出比file还要新的文件名
find ~ -mtime 0:列出home中当天有改动的文件
find ~ -never /home/text/Code:列出用户home目录下比code文件夹新的文件
五:文件的打包与压缩
文件后缀名 说明
*.zip
zip程序打包压缩的文件*.rar
rar程序压缩的文件*.7z
7zip程序压缩的文件*.tar
tar程序打包,未压缩的文件*.gz
gzip程序(GNU zip)压缩的文件*.xz
xz程序压缩的文件*.bz2
bzip2程序压缩的文件*.tar.gz
tar打包,gzip程序压缩的文件*.tar.xz
tar打包,xz程序压缩的文件*tar.bz2
tar打包,bzip2程序压缩的文件*.tar.7z
tar打包,7z程序压缩的文件一般常见的是zip、rar、tar。直接上命令栗子zip压缩与解压:
$zip -r -q -o text.zip /home/text
$du -h text.zip
$file text.zip
-r参数表示递归打包包含子目录的全部内容,-q参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。后面使用du命令查看打包后文件的大小
$ zip -r -9 -q -o text_9.zip/home/text -x ~/*.zip
$ zip -r -1 -q -otext_1.zip/home/text -x ~/*.zip
这里添加了一个参数用于设置压缩级别-[1-9],1表示最快压缩但体积大,9表示体积最小但耗时最久。(默认压缩级别是最高的)最后那个-x是为了排除我们上一次创建的 zip 文件,否则又会被打包进这一次的压缩文件中,注意:这里只能使用绝对路径,否则不起作用。
$ zip -r-e -otext_encryption.zip /home/text
-e参数创建加密压缩包
$unzip text.zip
解压
$ unzip -q shiyanlou.zip-d ziptest
使用安静模式,将文件解压到指定目录
注:使用unzip解压文件时我们同样应该注意兼容问题,不过这里我们关心的不再是上面的问题,而是中文编码的问题,通常 Windows 系统上面创建的压缩文件,如果有有包含中文的文档或以中文作为文件名的文件时默认会采用 GBK 或其它编码,而 Linux 上面默认使用的是 UTF-8 编码,如果不加任何处理,直接解压的话可能会出现中文乱码的问题(有时候它会自动帮你处理),为了解决这个问题,我们可以在解压时指定编码类型。
使用-O(英文字母,大写o)参数指定编码类型:
unzip -O GBK 中文压缩文件.zip
rar打包压缩
$ rm *.zip$ rar a text.rar .
上面的命令使用a参数添加一个目录~到一个归档文件中,如果该文件不存在就会自动创建。
注:rar 的命令参数没有-,如果加上会报错。
$ rar d text.rar .zshrc:从指定压缩包文件中删除某个文件$rar ltext.rar:查看不解压文件
$mkdir tmp
$unrar e text.rar tmp/ :去掉路径解压
tar打包
在 Linux 上面更常用的是tar工具,tar 原本只是一个打包工具,只是同时还是实现了对 7z,gzip,xz,bzip2 等工具的支持,这些压缩工具本身只能实现对文件或目录(单独压缩目录中的文件)的压缩,没有实现对文件的打包压缩,所以我们也无需再单独去学习其他几个工具,tar 的解压和压缩都是同一个命令,只需参数不同,使用比较方便。
下面先掌握tar命令一些基本的使用方式,即不进行压缩只是进行打包(创建归档文件)和解包的操作。
$tar -cftext.tar ~:创建一个 tar 包
上面命令中,-c表示创建一个 tar 包文件,-f用于指定创建的文件名,注意文件名必须紧跟在-f参数之后,比如不能写成tar -fc text.tar,可以写成tar -f text.tar -c ~。你还可以加上-v参数以可视的的方式输出打包的文件。上面会自动去掉表示绝对路径的/,你也可以使用-P保留绝对路径符。
$mkdir tardir$tar -xf text.tar -C tardir:解包一个文件(-x参数)到指定路径的已存在目录(-C参数)
$tar -tftext.tar:只查看不解包文件-t参数
$tar -cphf etc.tar /etc:保留文件属性和跟随链接(符号链接或软链接),有时候我们使用tar备份文件当你在其他主机还原时希望保留文件的属性(-p参数)和备份链接指向的源文件而不是链接本身(-h参数)
对于创建不同的压缩格式的文件,对于tar来说是相当简单的,需要的只是换一个参数,这里我们就以使用gzip工具创建*.tar.gz文件为例来说明。
$tar -czf text.tar.gz ~:我们只需要在创建 tar 文件的基础上添加-z参数,使用gzip来压缩文件
$tar -xzftext.tar.gz:解压*.tar.gz文件
现在我们要使用其他的压缩工具创建或解压相应文件只需要更改一个参数即可:
*.tar.gz
-z
*.tar.xz
-J
*tar.bz2
-j
以上就是本人自己整理总结的自认为是linux最最基础的知识,余下的感觉就是各种命令,就像哈利波特里的魔法咒语一样,因为自己本身目前对linux的理解就需要到这里,所以就暂总结到这里吧。。。欢迎批评。
- Linux基础二(个人整理)
- Linux基础一(个人整理)
- 个人整理------NSString基础
- Java基础整理(二)
- Java基础整理(二)
- Java基础整理(二)
- HTML5基础(二) 个人笔记
- CSS基础(二) 个人笔记
- javascript基础(二) 个人笔记
- Linux命令整理(二)
- Eclipse 常用设置 (个人经验整理)(二)
- 阿里巴巴Java开发手册个人整理精简版(二)
- 面试基础计算机网络(个人理解整理版)
- Linux基础(二)
- linux基础(二)
- Linux基础(二)
- Linux基础(二)
- linux基础(二)
- Opencv YAML和XML格式文件操作详解
- hdu 3117
- 关闭weblogic的服务报错javax.naming.ServiceUnavailableException [Root exception is java.net.UnknownHostExcep
- redis技术之旅六
- 开源中最好的Web开发资源汇总
- Linux基础二(个人整理)
- Kurento应用开发指南(以Kurento 5.0为模板) 之二:示例教程helloworld
- 自适应网页设计
- Shader的亮度brightness、饱和度saturation、对比度contrast算法
- 使用SWPM安装 SAP ERP6.0 on solaris 10
- JAVA常见错误处理方法
- Cubietruck---3. android编译命令分析
- jQuery文档处理,外部插入
- [VIM]可视模式下的几个命令