Linux基础二(个人整理)

来源:互联网 发布:php做直播 编辑:程序博客网 时间:2024/05/16 23:35

三、变量和环境变量

定义一个变量

$ declare tmp

变量赋值

$ tmp=text

读取变量的值

$ scho $tmp

注:并不是任何形式的变量名都是可用的,变量名只能是英文字母,数字或者下划线,且不能以数字作为开头。

通常我们会涉及到的环境变量有三种:

  • 当前 Shell 进程私有用户自定义变量,如上面我们创建的 temp 变量,只在当前 Shell 中有效。
  • Shell 本身内建的变量。
  • 从自定义变量导出的环境变量。

也有三个与上述三种环境变量相关的命令,setenvexport。这三个命令很相似,都可以用于打印相关环境变量,区别在于涉及的是不同范围的环境变量,详见下表:

命令说明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文件夹新的文件


五:文件的打包与压缩

文件后缀名说明*.zipzip程序打包压缩的文件*.rarrar程序压缩的文件*.7z7zip程序压缩的文件*.tartar程序打包,未压缩的文件*.gzgzip程序(GNU zip)压缩的文件*.xzxz程序压缩的文件*.bz2bzip2程序压缩的文件*.tar.gztar打包,gzip程序压缩的文件*.tar.xztar打包,xz程序压缩的文件*tar.bz2tar打包,bzip2程序压缩的文件*.tar.7ztar打包,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:查看不解压文件

$ unrar x text.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的理解就需要到这里,所以就暂总结到这里吧。。。欢迎批评。


0 0