美文网首页
Linux私房菜笔记

Linux私房菜笔记

作者: fish_yijinc | 来源:发表于2020-09-24 17:23 被阅读0次

    认识 bash 这个shell

    command [-options] parameter1 parameter2 ...
    # 指令 选项 参数(1) 参数(2) 
    # [--options] 使用选项的完整全名,例如 --help;
    
    man
    # 显示 command 的 manual pages,通常从 /usr/share/man 读取
    man command
    
    # 搜寻特定指令/文件的man page说明文件
    man -f command # <==相当于 whatis command
    
    # 按关键字搜索man page说明文件
    man -k command # <==相当于 apropos command
    
    • 环境变量 $PATH 默认是放置在/usr/share/info/

    • [tab] 按键:命令与文件补全功能

    • ~/.bash_history 存放使用过的指令记录,按『上下键』可以找到前/后一个输入的指令。使用 history [-raw] histfiles 查看历史命令

    • set 可以观察目前 bash 环境下的所有变量

    • 命令别名设定: alias, unalias

    • 路径与指令搜寻顺序:1. 以相对/绝对路径执行指令;2. 由 alias 找到该指令来执行;3. 由 bash 内建的 (builtin) 指令来执行;4. 透过 $PATH 这个变量的顺序搜寻到的第一个指令来执行。

    • login shell 会读取两个配置文件:1. /etc/profile(系统设定),2. ~/.bash_profile 或 ~/.bash_login 或 ~/.profile(个人设定,其中一个),然后会通过这2个文件脚本载入其他文件配置。source (或小数点) 将配置文件的内容读进来目前的 shell 环境中(更改配置文件后不需要注销立即生效)

    • 数据流重导向:1. 标准输入 (stdin):代码为0,使用<或<<; 2. 标准输出 (stdout):代码为 1 ,使用 > 或 >> ; 3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> 。双向重导向tee 会同时将数据流分送到文件去与屏幕

    stdout > log.text 2> error.text   # 将 stdout 与 stderr 分别存到不同的文件去
    stdout > log.text 2>&1   # 将 stdout 与 stderr 都写入同一个文件
    ls -l / | tee -a ~/homefile | more  # 要注意! tee 后接的文件会被覆盖,若加上 -a (append) 这个选项则能将讯息累加
    
    • 管线命令| 仅会处理 standard output,在每个管线后面接的第一个数据必定是『指令』,而且这个指令必须要能够接受 standard input 的数据。常用管线处理命令 grep cut sort wc uniq split xargs

    文件的压缩打包

    压缩原理:文件里面有相当多的『空间』存在,并不是完全填满的, 而『压 缩』的技术就是将这些『空间』填满,以让整个文件占用的容量下降。计算机最小的计量单位 bit(1 byte = 8 bits),如果只记录一个数字 1,1 会在最右边占据 1 个 bit,其他的 7 个 bits 将会自动的被填上 0,这7个bits应该算是『空的』,压缩就是通过一些复杂的计算将这些没有使用到的空间提出来,以让文件占用的空间变小。另外一种压缩技术是将重复的数据进行统计记录。

    在 Linux 的环境中,常见的压缩文件的扩展名大多是:『*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2, *.xz』

    • *.Z compress 程序压缩的文件; (已经退流行)
    • *.zip zip 程序压缩的文件;
    • *.gz gzip 程序压缩的文件;(应用度最广,可解压.Z .zip .gz)
    • *.bz2 bzip2 程序压缩的文件;
    • *.xz xz 程序压缩的文件;
    • *.tar tar 程序打包的数据,并没有压缩过;
    • *.tar.gz tar 程序打包的文件,其中并且经过 gzip 的压缩 *.tar.bz2 tar 程序打包的文件,其中并且经过 bzip2 的压缩 *.tar.xz tar 程序打包的文件,其中并且经过 xz 的压缩

    下面是系统常见压缩命令:

    gzip [-cdtv#] 文件
    # gzip 选项与参数:
    # -c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理;
    # -d :解压缩的参数;
    # -t :可以用来检验一个压缩文件的一致性~看看文件有无错误;
    # -v :可以显示出原文件/压缩文件案的压缩比等信息;
    # -# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6
    # 如果压缩的源文件为文本文件,可以尝试使用 zcat/zmore/zless/zgrep 去读取
    
    bzip2 [-cdkzv#] 文件
    # -k :保留源文件,而不会删除原始的文件喔!
    # -z :压缩的参数 (默认值,可以不加)
    # 其他选项同 gzip 相同,可尝试使用 bzcat/bzmore/bzless/bzgrep 读取
    
    xz [-dtlkc#] 文件
    # -l :列出压缩文件的相关信息
    # -k :保留原本的文件不删除~
    # 其他选项同 gzip 相同,可尝试使用 xzcat/xzmore/xzless/xzgrep 读取
    

    若说 gzip 是为了取代 compress,那么 bzip2 则是为了取代 gzip,后来还推出了 xz 这个压缩比更高的软件,3者用法都一模一样

    tar [-z|-j|-J] [cv] [-f 待建立的新檔名] filename... # 打包与压缩
    tar [-z|-j|-J] [tv] [-f 既有的 tar 檔名] # 观看档名
    tar [-z|-j|-J] [xv] [-f 既有的 tar 檔名] [-C 目录] # 解压缩
    # 选项与参数:
    # -c :建立打包文件,可搭配 -v 来察看过程中被打包的档名(filename)
    # -t :察看打包文件的内容含有哪些档名,重点在察看『档名』就是了;
    # -x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开
    # 特别留意的是, -c, -t, -x 不可同时出现在一串指令列中。
    # -z :透过 gzip 的支持进行压缩/解压缩:此时档名最好为 *.tar.gz 
    # -j :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2 
    # -J :透过 xz 的支持进行压缩/解压缩:此时档名最好为 *.tar.xz
    
    # 特别留意, -z, -j, -J 不可以同时出现在一串指令列中
    # -v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!
    # -f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项啰!(比较不会忘记) 
    # -C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
    # 其他后续练习会使用到的选项介绍:
    # -p(小写) :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件 
    # -P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意; 
    # --exclude=FILE:在压缩的过程中,不要将 FILE 打包!
    

    最简单的使用 tar 只要记忆以下的方式即可:

    • 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
    • 查 询:tar -jtv -f filename.tar.bz2
    • 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

    相关文章

      网友评论

          本文标题:Linux私房菜笔记

          本文链接:https://www.haomeiwen.com/subject/sahtuktx.html