Linux学习之路

Linux学习之路

> 使用环境:VM虚拟机
> 系统版本:Description: CentOS Linux release 7.3.1611 (Core)
> 参考资料:《鸟哥的Linux私房菜》、《Linux命令行与shell脚本编程大全》

怎么学习Linux

  • 计算基础
  • Linux安装与指令
  • vi/vim
  • shell与shell脚本
  • rpm/dpkg/torball
  • ip,路由
  • 多实操

怎么用Linux

  • 多查How-To或FAQ
  • 有系统地设计文档目录,注意记录,以免再次碰到这个文件时问:我是谁?我在哪?我在干吗?
  • 记笔记,写使用心得,如果可以,分享它

Linux装机

  • 发行版两大阵营:Debian(dpkg)和Red Hat(rpm)
  • 注意硬件支持

硬件装置在 Linux 中的文件名

设备名 中文名
/dev/hd[a-d] IDE硬盘
/dev/sd[a-p] SCSI/SATA/USB 硬盘
/dev/sd[a-p] USB优盘(与 SATA 相同)
/dev/fd[0-1] 软盘驱动器
/dev/lp[0-2](25针)|/dev/usb/lp[0-15](useb) 打印机
/dev/usb/mouse[0-15](usb) | /dev/psaux(PS2) 鼠标
/dev/cdrom 当前 CDROM/DVDROM

磁盘分区

  • IDE已被淘汰
  • SATA也在淘汰的边缘

基础操作

  • 开机
  • 登陆
  • 登出
  • 关机

shell命令

command [-options] parameter1 [parameter2] [parameter3] ……

说明:

  1. 一行指令中第一个输入的部分只能是『指令(command)』或『可执行文件名』
  2. command 为指令(或程序)的名称,例如变换路经的指令为 cd 等;
  3. 指令后面跟的中括号是执行时添加的参数(一般称为选项),即告知程序如何执行指令,
    而加入选项讴定时,通常选项前会加 - 号,例如 -h;而使用选项的完整全名,则
    选项前需要加 – 符号,例如 –help;
  4. -后面接的一般称为短选项,多个短选项可以合并写在一起:-ral;
  5. parameter1 parameter2.. 为依附在选项后面的参数,或者是 command 的参数,
    一般为执行对象、执行范围限定、执行结果筛选等;
  6. 这些, 选项, 参数等这几个咚咚以空格来隔开,无论有空几格 shell 都视为一个空格
  7. 按下[Enter]键后,该指令就立即执行,开始启指令。
  8. 有时候指令加选项参数太长了,可以使用反斜杠 () 来转义[Enter]符号,使得可以
    在下一行继续输入指令。(注意!反斜杠后就立刻接[Enter],才能转义!)
  9. Linux 系统区分大小写,谨记这一点!!
  10. 道在挃令列模式里面下达挃令时,会有两种主要的情况:
    一种是该挃令会直接显示结果然后回到命令提示字符等徃下一个挃令的输入;
    一种是进入到该挃令的环境,直到结束该挃令才回到命令提示字符的环境。

基础指令操作

  • ls [-l | -a | -h |…..] dirname

    ls –help

    ls -al /root (等同=>ls -a -l /root)

    显示/root目录详细信息

  • date [] [format]…..

    [root@bogon /]# date
    2017年 09月 13日 星期三 09:20:39 CST

    [root@bogon /]# date +%Y-%m-%d
    2017-09-13

    [root@bogon /]# date +%H:%M:%S
    09:48:15

    [root@bogon /]# date +%H时%M分%S秒
    09时49分22秒
  • cal (显示日历): cal [month] [year]

    cal 直接显示当月日历

    cal 12 显示公元12年日历

    cal 11 2017 显示制定的2017年11月日历

  • 『echo $LANG』或『locale』

重要的几个热键[Tab], [Ctrl]+C, [Ctrl]+D

  • [Tab]键

    命令补全/文件名不全,这是bash最出彩的地方,[Tab]一下不全命令
    如果一下没出来,连续两侧[Tab]则会显示当前系统所有匹配已输入的
    命令(或当前目录所有匹配的文件名)
    现在的win10命令提示符(cmd)也支持此功能了

  • [Ctrl]+C

    强制中止正在执行的命令,如指令有误,或结果等待时间过长,或其他等
    都可以[Ctrl]+C结束,如ping baidu.com 没给定时间/次数时

  • [Ctrl]+D

    代表退出或者文件尾(EOF),比如退出当前shell

常见错误和帮助

  • command not found 命令没找到(或不存在),原因及解决方式

    • 这个指令不存在,因为该软件没有安装,解决方法就是安装该软件
    • 这个指令所在的目录目前的用户并没有将他加入指令搜寻路徂中,如:bin,sbin,lib,lib64等等;
    • 很简单!你打错字!注意大小写,注意指令拼写(孩子好好学英语吧)
  • illegal [parameter] value: 非法参数值,原因及解决方式

    • 给定参数不合法,检查参数拼写,值的范围。。。
  • Linux 系统的在线求助 man page 和 info page (英语没学好前看看就行没用)

    • man command 同–help很像,但文档更为详细

    • info command 网页版man,信息从网上来

    只记重要指令,学会看相关说明(英语是永远的痛)

  • /usr/share/doc 指令,程序说明文档所在地

关机

  • shutdown

    • sync 将内存数据更新到硬盘

    • shutdown 一定等加时间参数,否则指令无效

      • shutdown [-t] [-arkhncfF]
      • -t sec: -t 后面加秒数,不加-t的时间会被认为是分钟数
      • -h : 将系统的服务停掉后,立即关机(常用)
      • -r : 将系统的服务停掉后,立即重启(常用)
      • -k : 不真的关机,只是发送警告讯息出去!
      • -n : 不经过 init 程序,直接以 shutdown 的功能来关机
      • -f : 关机并且过后开机时,强制略过 fsck 的磁盘检查
      • -F : 关机并且过后开机时,强制进行 fsck 的磁盘检查
      • -c : 取消已经在进行的 shutdown 指令内容。
    • reboot 重启

    • halt 关机

    • poweroff -f 关机

  • init

    • init 0 : 关机
    • init 1 :
    • init 2 :
    • init 3 : 纯文本模式
    • init 4 :
    • init 5 : 图形接口模式
    • init 6 :重启
    • init 7 :

Linux 文件权限

拥有者,使用之,群组

  • 文件拥有者(User)
  • 群组(Group)
  • 其他(Others)
  • /etc/passwd /etc/shadow /etc/group
  • Linux中任何一个文件都具有『User, Group 及 Others』属性

什么是文件权限

  • 文件属性 (ls -al filename实例)
    [root@bogon ~]# ls -al /etc/yum
    总用量 16
    drwxr-xr-x.  6 root root  100 9月   5 01:38 .
    drwxr-xr-x. 81 root root 8192 9月  13 09:07 ..
    drwxr-xr-x.  2 root root    6 11月 15 2016 fssnap.d
    drwxr-xr-x.  2 root root   54 9月   5 01:41 pluginconf.d
    drwxr-xr-x.  2 root root   26 9月   5 01:38 protected.d
    drwxr-xr-x.  2 root root   19 11月 15 2016 vars
    -rw-r--r--.  1 root root  444 11月 15 2016 version-groups.conf
drwxr-xr-x. | 2      | root  | root    |  54  | 9月   5 01:41 | pluginconf.d
类型及权限   | 链接数 | 所有者 | 所属群组 | 大小 | 最新修改日期   | 文档名称
  • 类型及权限: drwxr-xr-x.
    • 这11个字符中第一个为文档类型,2~10为文档权限,最后一个. 代表此为隐藏文档,一般的文档没有这个
  • 文档类型
    • d: 目录,例如上表档名为『.gconf』的那一行;
    • -: 文档,例如上表档名为『install.log』那一行;
    • l: 连结档(link file);
    • b: 装置文件里面的可供储存的接口讴备(可随机存取装置);
    • c: 装置文件里面的串行端口讴备,例如键盘、鼠标(一次怅读取装置)。
  • 文档权限
    • r: 可读
    • w:可写
    • x: 可执行
    • -: 无此权限——占位用
    • 2~3(rwx): 文档拥有者的权限(可读,可写,可执行)
    • 4~6(r-x): 同群组的权限(可读,不可写,可执行)
    • 7~9(r-x): 其他非本群组的权限(可读,不可写,可执行)

改变文档属性和权限

  • chgrp :改变文档所属群组 (对应上例的第一个root)
    • chgrp [-R] groupname dirname/filename …
    • -R : 进行递归(recursive)的持续变更,即同次目录下的所有文件、目录都更新属于成为这个群组。
    • chrgp -R huwhois pluginconf.d //改属组为huwhois
  • chown :改变文档所有者 (对应上例的第一个root)
    • chown [-R] 组名 dirname/filename …
    • -R : 进行递归(recursive)的持续变更,即同次目录下所有文件、目录的所有者都给位为这个用户。
    • chown -R huwhois pluginconf.d //改属主为huwhois
    • chown -R root:root pluginconf.d //改属主属组均改为root
  • chmod :改变文档的权限, SUID, SGID, SBIT 等等的权限(对应上例的 rwxr-xr-x)
    • 数字改权限法 : chmod [-R] xyz dirname/filename …
      • linux给权限附不同的分数来方便权限的更改,r=>4,w=>2,x=>1,-=>0
      • 每种权限组合都可以用0~7这8种数值来代表:
      • rwx=>7,rw-=>6,r-x=>5,r–=>4,-wx=>3,-w-=>2,–x=>1,—=>0
      • chmod -R 742 pluginconf.d
    • 字母改权限法 :直接使用rwx来确定权限(有时候不好用)
      • u,g,o,a代表三种身份 u=>user, g=>group, o=>other, a=>all
      • 使用+-=来改变,+ =>加入, - =>去掉, = =>设定
      • chmod -R u=rwx,g=r-x,o=r– pluginconf.d
      • chmod -R u-x,go+w pluginconf.d
      • chmod -R a-w pluginconf

文件和目录权限的意义

  • 权限对文件的意义

    • 文件是实际存储数据的地方,包括但不限于文本文件、数据库内容文件、
      二进制可执行文件(binary program)…二进制图片文件等
    • r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
    • w (write):可以编辑、新增戒者是修改该文件的内容(但不包含删除该文件);
    • x (eXecute):该文件具有可以被系统执行的权限。

    文件具有w权限却为什么不能删除咧?
    因为文件的w(包括rx也是),是针对文件内容而言的,它自身的权限是对其里面的内容负责,而删除文件涉及到文件名,Linux中文件的内容包括是否可执行跟文件名没有关系,在Linux文件名的更改(删除)的权限属于目录

  • 权限对目录的意义

    • 目录主要的内容在记录文件名列表,文件名与目录有强烈的关联
    • r (read contents in directory):表示具有读取目录结构列表的权限,
      所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。
    • w (modify contents of directory):表示具有异动该目录结构列表(文档名)的权限,即
      • 建立新的文件或目录;
      • 删除已经存在的文件或目录(不管该文档的权限为何);
      • 已存在的文件或目录更名;
      • 移动该目录内的文件、目录。
    • x (access directory):目录不可以被执行,目录的 x 代表的是用户能
      否进入该目录成为工作目录的权限。
  • 要开放目录给任何人浏览时,应该给予 r 及 x 的权限,但 w 权限不可随意给;
  • Linux 文件和目录管理

    Linux 目录放置标准FHS(Filesystem Hierarchy Standard)

    • FHS针对目彔树架构定义的三层目录

      • / (root, 根目彔):与开机系统有关;
      • /usr (unix software resource):与软件安装/执行有关;
      • /var (variable):与系统运作过程有关。
    • Linux文件目录(CentOS7.3.1611Core)

    /----
    |--- bin
    |--- boot
    |--- dev
    |--- etc
    |--- home
    |--- lib
    |--- lib64
    |--- media
    |--- mnt
    |--- opt
    |--- proc
    |--- root
    |--- run
    |--- sbin
    |--- srv
    |--- sys
    |--- tmp
    |--- usr
    |--- var
    
    • 有五个目录必须和根目录(/)放在不同的 partition(硬盘分区),分别为/etc, /bin, /lib, /dev, /sbin
    • FHS根据交互作用定义的目录四种形态:
    可分享的(shareable) 不可分享的(unshareable)
    静态的(static) /usr (软件放置处) etc (配置文件)
    /opt (第三方协力软件) /boot (开机及核心档)
    可变动的(variable) /var/mail (使用者邮件信箱) /var/run (程序相关)
    /var/spool/news (新闻组) /var/run (程序相关)
    以上为代表性目录

    绝对路径不相对路径

    • 绝对路径(absolute):由根目录(/)开始写起的文件名戒目彔名称, 例如 /home/dmtsai/.bashrc;
    • 相对路径(relative):相对二目前路径的文件名写法。 例如 ./home/dmtsai 戒 ../../home/dmtsai/ 等等,反正开头不是/都是相对路径写法

    目录相关操作

    • Liunx特殊目录

      • . 当前目录
      • .. 上一级目录
      • - 前一个工作目录
      • ~ 当前用户家目录,root用户为/root,其他用户为/home/account
      • ~[account] account的家目录
    • 处理目目录的常见指令

      • cd 改写当前工作目录(Change Directory)
        • cd .
        • cd ..
        • cd /mnt/www
        • cd -
        • cd 等同与 cd ~
        • cd ../../root
      • pwd 显示当前目录(Print Working Directory)
        • pwd
        • pwd -P 显示出真正的路径,而非链接路径
      • mkdir 创建新的空目录
        • mkdir [-mp] dirname
        • -m :配置文件的权限,直接在创建是制定权限
        • -p :递归建立目录,可以用/而不用一层一层的往下自己建
        • mkdir test
        • mkdir test/test1
        • mkdir -p test/test1/test2/test3
      • rmdir 删除空目录(注意是空的)
        • rmdir -r test 报错,可使用 rm -r test (rm功能更强劲,也更危险)
        • rmdir test 报错,但目录没了,不知道为为啥。。。(所以下面的都报错)
        • rmdir test/test1
        • rmdir -p test/test1/test2/test3
    • PATH,(),,使shell使,, PATH保存路径从前往后一次查找可执行路径,这些路径可修改添加,多个路径间用冒号(隔开)
      • [root@bogon ~]# echo $PATH
      • /usr/lib64/qt-3./bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
      • 系统把各处bin和sbin都加进来了,当然也可以自行添加:
      • PATH=”$PATH”:/root 这样整个/root目录的文件都可以直接调用了
      • 不要将 . 这个特殊目录加入 $PATH ,很不安全

    文件和目录相关操作

    • ls (显示文档属性)详解
    man ls
    NAME          ls - list directory contents
    SYNOPSIS      ls [OPTION]... [FILE]...
    DESCRIPTION
           List  information  about the FILEs (the current directory by default).  Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
           Mandatory arguments to long options are mandatory for short options too.
           -a, --all     //前为短选项,后为完整选项(下同)
                  do not ignore entries starting with .
                  //显示隐藏项包括.和..
           -A, --almost-all  
                  do not list implied . and ..  
                  //同上但不包括.和..
           --author
                  with -l, print the author of each file
                  //和-l连用,会加一栏显示author
           -b, --escape
                  print C-style escapes for nongraphic characters
                  //??以C样式来显示字符???????
           --block-size=SIZE
                  scale sizes by SIZE before printing them; e.g., '--block-size=M' prints sizes  in  units of 1,048,576 bytes; see SIZE format below
                  //同SIZE,设定显示容量的单位
           -B, --ignore-backups
                  do not list implied entries ending with ~
                  //不列出以~结尾的条目
           -c     with  -lt:  sort  by, and show, ctime (time of last modification of file status information); with -l: show ctime and sort by name; otherwise: sort by ctime, newest first
                  ??
           -C     list entries by columns
                  ??
           --color[=WHEN]
                  colorize the output; WHEN can be 'never', 'auto', or 'always' (the default);  
                  //是否显示颜色,never--从不,auto--自动,always--总是(默认);
           -d, --directory
                  list directories themselves, not their contents
                  //列出目录本身,不包含其他内容
           -D, --dired
                  generate output designed for Emacs' dired mode
                  //输出生成用于Emacs的模式
           -f     do not sort, enable -aU, disable -ls --color
                  //不排序,直接列出结果,可配合-aU,不可接-ls --color
           -F, --classify
                  append indicator (one of */=>@|) to entries
                  //根据文件功能不同加上各种表示如:*/=>@|
           --file-type
                  likewise, except do not append '*'
    
           --format=WORD
                  across -x, commas -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C
    
           --full-time
                  like -l --time-style=full-iso
    
           -g     like -l, but do not list owner
    
           --group-directories-first
                  group directories before files;
    
                  can be augmented with a --sort option, but any use of --sort=none (-U) disables grouping
    
           -G, --no-group
                  in a long listing, don't print group names
    
           -h, --human-readable
                  with -l, print sizes in human readable format (e.g., 1K 234M 2G)
    
           --si   likewise, but use powers of 1000 not 1024
    -H, --dereference-command-line
                  follow symbolic links listed on the command line
    
           --dereference-command-line-symlink-to-dir
                  follow each command line symbolic link
    
                  that points to a directory
    
           --hide=PATTERN
                  do not list implied entries matching shell PATTERN (overridden by -a or -A)
    
           --indicator-style=WORD
                  append  indicator  with style WORD to entry names: none (default), slash (-p), file-type
                  (--file-type), classify (-F)
    
           -i, --inode
                  print the index number of each file
    
           -I, --ignore=PATTERN
                  do not list implied entries matching shell PATTERN
    
           -k, --kibibytes
                  default to 1024-byte blocks for disk usage
    
           -l     use a long listing format
    
           -L, --dereference
                  when showing file information for a symbolic link, show information  for  the  file  the
                  link references rather than for the link itself
    
           -m     fill width with a comma separated list of entries
    
           -n, --numeric-uid-gid
                  like -l, but list numeric user and group IDs
    
           -N, --literal
                  print raw entry names (don't treat e.g. control characters specially)
    -o     like -l, but do not list group information
    ... ...
    ... ...
    ... ...
    
    • man 一个很厉害的武器,可惜英语差,好多都看不懂(上面省略号里还有一堆东西)
    • ls -l太常用了,很多Linux发行厂商在bash中都将其简化为”ll”(两个L小写),即ll=>ls -l

    • cp(copy:复制)

      • cp [options] source1 [source2] [source3] …. directory
      • 选项与参数:
      • -a :相当于-pdr 的意思,参考下面p,d,r的解释
      • -d :若来源文件为链接文件属性(link file),则复制链接文件属性而非文档本身;
      • -f :强制(force)的意思,若目标文档已经存在且无法开启,则移除后再尝试一次;
      • -i :若目标文件(destination)已经存在时,在覆盖时会先执行询问动作;
      • -l :进行硬式连结(hard link)的连结档建立,而非复制文档;
      • -p :将文档的所有属性一起复制过去,而非使用默认属性(常用于备份);
      • -r :递归持续复制,用于目录复制(一般目录复制都会用到)
      • -s :将文档复制成为符号链接文件(symbolic link),即『快捷方式』文档;
      • -u :若 destination存在且比 source 旧才更新 destination !
      • 注意:
        • 如果来源档有两个以上,则最后一个目的文件一定要是『目录』;
        • 有文档(文件和目录)r权限即可复制文档;
    • rm(remove:删除)

      • rm [-fir] destination
      • 选项不参数:
      • -f :强制( force )的意思,忽略不存在的文档,不会出现警告信息;
      • -i :询问模式,在删除前有询问使用者是否动作
      • -r :递归删除啊!常用于目录的删除(非常危险的选项,更危险的是 -rf连用)
    • mv(move:移动)

      • mv [options] source1 [source2] [source3] …. directory
      • 选项不参数:
      • -f :强制( force )的意思,忽略存在的文档,直接覆盖不会出现询问;
      • -i :询问模式,如果有存在的文档覆盖前,询问使用者是否执行
      • -u :若 destination存在且比 source 旧才更新 destination;
      • 如果来源档有两个以上,则最后一个目的文件一定要是『目录』
    • rename(重命名)

    • basename&dirname

      • basename为文件本身名,不包含路径
      • dirname为文件所处的路径名,不包含文件名
      • 两者合起来就是文件的完整名

    查看文件内容cat,more,less,tac,nl,head,tail,od

    • cat(concatenate)

      • cat [options] filename
      • 选项与参数:
      • -A :相当于-vET 的整合选项,可列出一些特殊字符;
      • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号;
      • -E :将结尾的断行字符 $ 显示出来;
      • -n :打印出行号,连同空白行也会有行号,与-b选项不同;
      • -T :将 [tab] 键以 ^I 显示出来;
      • -v :列出一些看不出来的特殊字符;
    • tac(cat的反向):从最后一行开始倒着显示

      • tac [options] filename
      • 选项与参数: 同上
    • nl: 添加行号输出,主要是添加行号的方式更多

      • nl [options] filename
      • 选项与参数
      • -b : 行号的制定方式,
        • -b a : 空行也列出行号,类似cat -n
        • -b t : 空行不列出行号,默认值
      • -n : 行号的表示方式,
        • -n ln : 行号在行号字段栏最左边显示
        • -n rn : 行号在行号字段栏最右边显示,且不加前导0(默认)
        • -n rz : 行号在行号字段栏最右边显示,加前导0
      • -w : 行号字段占用的位数,当位数过少时,后面自动往后排
    • 以上cat,tac,nl均为一次性将结果输出到缓冲区

    • more : 翻页查看文档

      • more filename
      • 空格[space]:向下翻一页
      • [Enter] :向下翻一行
      • /word :这个显示的内容中,向下搜寻”word”这个关键词;
      • :f :立刻显示出文件名以及目前显示的行数;
      • q :代表立刻离开 more ,
      • b 或[ctrl]+b :代表往回翻页,但这动作近对文档有用,对管道无用。
    • less :翻页查看文档 基本同more,多了以下几个功能

      • [pagedown]:向下翻一页;
      • [pageup] :向上翻一页;
      • ? / 字符串 :向上搜寻『字符串』癿功能;
      • n :重复前一个搜寻
      • N :反向的重复前一个搜寻
      • q :离开 less 这个程序
    • head,tail

      • head/tail [-n number] filename
    • od : 二进制查看文档

      • od [-t TYPE] 文档
      • 选项与参数:
      • -t :后面可以接各种『类型 (TYPE)』的输出,例如:
        • a :利用默认的字符来输出;
        • c :使用 ASCII 字符来输出
        • d[size] :利用十进制(decimal)来输出数据,每个整数占用 size bytes ;
        • f[size] :利用浮点数(floating)来输出数据,每个数占用 size bytes ;
        • o[size] :利用八进制(octal)来输出数据,每个整数占用 size bytes ;
        • x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size bytes ;
      • od -t oCc /etc/issue //8进制和ASCⅡ对照查看

    神奇的touch: 修改文档时间参数或新建空文档

    • touch [options] filename
      • 选项与参数
      • -a : 仅修订 access time;
      • -c : 仅修改文档时间,即使不存在也不去新建文档
      • -d : 接指定的日期,等同于 –date=”yourtime”
      • -m : 仅修改mtime
      • -t : 接指定时间,格式为[YYMMDDhhmm]
      • : 直接建立新空文档
    • 文档的三种时间:
      • atime (access time) : 最近访问时间
      • ctime (status time) : 权限(属性)改变时间
      • mtime (modification time) : 内容更新时间

    文档的默认权限和隐藏权限

    • 默认权限: umask
    • 隐藏权限
      • chattr
      • lsattr
    • 特殊权限:SUID, SGID, SBIT

    文件其他操作

    • file: 查看文件类型
    • 命令与文件的搜寻

      • which : 搜寻执行文件
        • which [-a] command
        • -a : 将所有由PATH目录中寻找到的指令都列出来,而不止是第一个被找到的
      • whereis : 根据文件名搜寻文件所在位置
        • whereis [options] 文件或目录名
        • 选项与参数
        • -b : 只搜寻 binary(可执行二进制)格式的文档
        • -m : 只找在说明文件 manual 路径下的文档
        • -s : 只找source 来源文档
        • -u : 搜寻不在上述三个项目当中的其他特殊文档
      • locate : 根据 /etc/updatedb.conf 的讴定去搜寻系统硬盘内的文件名,幵更新/var/lib/mlocate 内的数据库文档;
      • updatedb : 依据 /var/lib/mlocate 内的数据库记载,找出用户输入的关键词文件名。
      • CentOS7.3.1611 (Core)版中未默认安装locate和updatedb (DVD版有)

      功能强大的find

      • find [PATH] [option] [action]
      • 选项与参数
      • PATH : 限定查找的路径,如果有请加上,快速提高寻找速度,也减少硬盘损伤
      • 文件更新时间相关
        • mtime n : 在n天前(那一天内)被改动过的文档中搜
        • mtime +n : 在n天前(不含第n天)被改动过的文档中搜
        • mtime -n : 在n天内(含第n天)被改动过的文档中搜
        • newer file : 在比file之后的新文档中搜
      • 文件权拥有者/群组相关
        • -uid n : 在用户id为n的文件中搜
        • -gid n : 在组名id为n的文件中搜
        • -user name : 在用户名为name的文件中搜
        • -nouser : 在文件拥有者不在/etc/passwd的文档中搜
        • nogroup : 在文件所属群组不在/etc/passwd的文档中搜
      • 文件名称权限相关
        • -name filename : 搜寻name为filename的文档
        • -size [+-]SIZE : 搜寻比 SIZE 还要大(+)或小(-)的文档。这个SIZE的规格有:c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB还要大的文档,就是『-size +50k 』
        • -type TYPE : 搜寻文档的类型为 TYPE 的,类型主要有:一般正规文档 (f),设备文档 (b, c), 目录 (d), 链接文档 (l), socket (s),及 FIFO (p) 等属性
        • -perm mode :搜寻文档权限『刚好等亍』 mode 的文档,这个 mode 为类似 chmod的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
          -perm -mode :搜寻文档权限『必须要全部囊括 mode 的权限』的文档,举例来说,我们要搜寻 -rwxr–r– ,亦即 0744 的文档,使用 -perm -0744,弼一个文档的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwxr–r– 的属性了。
      • -perm +mode :搜寻文档权限『包吨任一 mode 的权限』的文档,举例来 说,我们搜寻-rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw——-也会被列出来,因为他有 -rw…. 的属性存在!
      • 其他动作
        • -exec command :command 为其他挃令,-exec 后面可再接额外的挃令来处理搜寻到的结果。
        • -print :将结果打印到屏幕上,这个动作是预讴动作!
      • find 支持通配符

    Linux 文件的压缩与打包

    压缩与解压缩compress,gzip,gunzip,zcat,bzip2,bunzip2,bzcat

    • compress 很久远前的指令了,弃用
      • compress compress [-rcv] 文件或目录名
      • uncompress [-rcv] 文档.Z
      • -r :可以连同目录下的文档也同时给予压缩
      • -c :保留原文件,将压缩数据输出成为 standard output (输出到屏幕)
      • -v :显示出压缩后的文档信息以及压缩过程中的一些档名变化
    • gzip,gunzip,zcat //扩展名为.gz
      • gzip [-cdtv#] 文档名
      • -c : 将压缩的数据输出到屏幕上,可通过数据流重导向来处理(可以用来保留原文档)
      • -d : 解压参数,对文档进行解压操作(等同于 gunzip fliename.gz)
      • -t : 检验压缩文件的一致性(查看文档是否有误)
      • -v : 显示原文档和压缩文档之间的压缩比等
      • -# : #是数字,1最快,9最慢,但压缩比最好,默认为6
      • gzip -9 -c man.config > man.config.gz
      • gunzip 文档名.gz1
      • zcat 文档名
      • 可以读出压缩文件中的文本内容,也就是z+cat(解压+读取)的操作
    • bzip2,bunzip2,bzcat //扩展名为.bz2,gzip的升级替代版
      • bzip2 [-cdkzv#] 文档名
      • -c : 将压缩的数据输出到屏幕上,可通过数据流重导向来处理(可以用来保留原文档)
      • -d : 解压参数,对文档进行解压操作
      • -k : 保留原文件
      • -v : 显示原文档和压缩文档之间的压缩比等
      • -# : 通gzip一样#是数字,1最快,9最慢,但压缩比最好,默认为6
      • bunzip2 文档名.bz2
      • bzcat 文档名.bz2

    以上只能对文件压缩,但不能压缩整个目录及其文档压缩成一个压缩文件,虽然 gzip 不 bzip2 也能够针对目录来进行压缩,不过,也是对目录的所有文档”分别”(单个)行压缩


    打包 tar

    • tar [-j|-z] cv -f filename.tar[.gz|.bz2] source
      <==将source打包[压缩]到filename.tar[.gz|.bz2]
    • tar [-j|-z] tv -f filename.tar <==查看压缩文档
    • tar [-j|-z] xv -f filename.tar [-C dirname] <==解压文档[到dirname]
      • 选项与参数:
      • -c :建立打包文档,可搭配-v 来查看过程中被打包的文档名(filename)
      • -t :查看打包文档的内容含有哪些文档,查看用
      • -x :解打包或解压缩的功能,搭配-C(大写)可在解压到指定目录
      • 特别留意的是, -c, -t, -x 不可同时出现在一串指令列中。
      • -j :透过 bzip2 的支持进行压缩/解压缩:此时文档名最好为 *.tar.bz2
      • -z :透过 gzip 的支持进行压缩/解压缩:此时文档名最好为 *.tar.gz
      • tar不会自动给文档加后缀名,一般打包后缀名最好为.tar
      • -v :在压缩/解压缩的过程中,将正在处理的文件名显示出来
      • -f filename:-f 后面要立刻接要被处理的档名,建议-f 单独列一个选项来写避免写成”-jfc”
      • -C dirname :若要在特定目录解压缩,可以使用这个选项。
      • -p :保留备份数据的原本权限不属性,常用亍备份(-c)重要的配置文件
      • -P :保留绝对路径,即文件名保存着根目录,但这么做很危险,解压时容易覆盖已经存在的文旦
      • –exclude=FILE:在压缩的过程中,不要将指定 FILE 打包进去
    • tar 用途

      • 打包文件便于传输
      • 归档备份,备份重要文件
      • 节省空间

      备份与恢复 dump,restore

  • dump 备份

    • dump [-Suvj] [-level] [-f 备份档] 待备份资料
    • dump -W 列出已本分文档,查看是否已备份
    • 选项与参数:
    • -S :仅列出后面的待备份数据需要多少磁盘空间才能够备份完毕;
    • -u :将这次 dump 的时间记录到 /etc/dumpdates 文档中;
    • -v :将 dump 的文档过程显示出来;
    • j :加入 bzip2 的支持!将数据进行压缩,默认 bzip2 压缩等级为 2
    • -level:就是我们谈到的等级,从 -0 ~ -9 共十个等级;
    • -f :有点类似 tar 啦!后面接产生的文档,亦可接例如 /dev/st0 装置文件名等
  • restore 恢复
    • restore -t [-C] [-i] [-r] [-h] [-D] [-f dumpfile]
    • 相关的各种模式,各种模式不可混用 如不能写 -tC
    • -t :此模式用在查看 dump 起来的备份文件中吨有什么重要数据!类似 tar -t功能;
    • -C :此模式可以将 dump 内的数据拿出来跟实际的文件系统做比较,最终会列出『在 dump 文档内有记录的,且目前文件系统不一样』的文档;
    • -i :进入互动模式,可以仅还原部分文档,用在 dump 目录时的还原!
    • -r :将整个 filesystem 还原的一种模式,用在还原针对文件系统的 dump 备份;
    • -h :查看完整备份数据中的 inode 不文件系统 label 等信息
    • -f :后面就接你要处理的那个 dump 文档
    • -D :不 -C 进行搭配,可以查出后面接的挂载点不 dump 内有不同的文档!
  • 光盘写入 mkisofs ==> cdrecord (现在也基本没人用了)

    • mkisofs 简历映像文档
      • mkisofs [-o 映像文档] [-rv] [-m file] 待备份文件.. [-V vol] -graft-point isodir=systemdir …
      • 选项与参数:
      • -o :接指定的那个映像文档名。
      • -r :通过 Rock Ridge 产生支持 Unix/Linux 的文档数据,可记录较多的信息;
      • -v :显示建置 ISO 文档的过程
      • -m file :-m 为排除文档 (exclude) 的意思,后面的文档不备份到映像档中
      • -V vol :建立 Volume,有点像 Windows 在文档总管内看到的 CD title 的东西
      • -graft-point:graft 有转嫁或移植的意思
    • cdrecord 光盘刻录工具
      • cdrecord -scanbus dev=ATA <==查询刻录机位置
      • cdrecord -v dev=ATA:x,y,z blank=[fast|all] <==抹除重复读写片
      • cdrecord -v dev=ATA:x,y,z -format <==格式化DVD+RW
      • cdrecord -v dev=ATA:x,y,z [可用选顷功能] file.iso
      • 选项与参数:
        • -scanbus :用在扫瞄磁盘总线并找出可用的刻录机,后续的装置为 ATA 接口
          • v :在 cdrecord 运作的过程中,显示过程而已。
        • dev=ATA:x,y,z :后续的 x, y, z 为你系统上刻录机所在的位置,非常重要!
        • blank=[fast|all]:blank 为抹除可重复写入的 CD/DVD-RW,使用 fast 较快,all 较完整
        • -format :仅针对 DVD+RW 这种格式的 DVD 而已;
      • [可用选顷功能] 主要是写入 CD/DVD 时可使用的选顷,常见的选顷包括有:
        *-data :挃定后面的文档以数据格式写入,不是以 CD 音轨(-audio)方式写入!
        • speed=X :挃定刻录速度,例如 CD 可用 speed=40 为 40 倍数,DVD 则可用 speed=4 乊类
        • -eject :挃定刻录完毕后自动退出光盘
          *fs=Ym :挃定多少缓冲存储器,可用在将映像档先暂存至缓冲存储器。预讴为 4m,一般建议可增加到 8m ,不过,还是得规你的刻录机而定。
      • 针对 DVD 的选顷功能:
        • driveropts=burnfree :打开 Buffer Underrun Free 模式的写入功能
        • -sao :支持 DVD-RW 的格式

    其他常见压缩与备份工具

    • dd
      • dd if=”input_file” of=”output_file” bs=”block_size” count=”number”
      • 选项与参数:
      • if :就是 input file 啰~也可以是装置喔!
      • of :就是 output file 喔~也可以是装置;
      • bs :觃划的一个 block 的大小,若未挃定则预讴是 512 bytes(一个 sector 的大小)
      • count:多少个 bs 的意思。
      • dd if=/dev/hdc of=/tmp/mbr.back bs=512 count=1 将磁盘的第一个扇区备份下来
    • cpio

    vim(vi)程序编辑器

    vi的三种模式

    • 默认模式 : 初始进去vi的状态
      • 可使用上下左右键移动光标
      • 使用 删除字符
      • 使用 删除整行
      • 使用 复制
      • 使用 粘贴
    • 编辑模式 : 按下『i, I, o, O, a, A, r, R』均可进入编辑模式
      • 界面左下角会出现”–插入–”字样,才可编辑
      • 按下Esc键才可即可退出编辑模式
    • 命令模式 :因为是在界面最下面输入指令,所以又称为指令模式或末行模式
      • 默认模式下按下 / ? : (后面两个即为shift+/或者shift+;)可进入命令模式
      • 编辑模式中先按Esc,退出,进入默认模式,再按以上操作才进入命令模式

    按键说明

    • 默认模式的按钮说明
    • 移动光标
      • h 或 ← : 光标左移一个字符
      • j 或 ↓ : 光标下移一个字符
      • k 或 ↑ : 光标上移一个字符
      • l 或 → : 光标右移一个字符
      • 如果想要进行多次移动的话,例如向下移动 30 行,可以使用”30j” 或 “30↓” 的组合按键,即加上想要移动的次数(数字)后,按下动作
      • [Ctrl] + [f] 或 [Page Down]: 屏幕向下翻一页
      • [Ctrl] + [b] 或 [Page Up]: 屏幕向上翻一页
      • [Ctrl] + [d] : 屏幕向下翻半页
      • [Ctrl] + [u] : 屏幕向上翻半页
      • + : 光标移动到非空格符的下一列
      • - : 光标移动到非空格符的上一列
      • n : n表示数字,按下数字后再按空格键,光标会向后移动n个字符
      • 0 或 [Home] : 光标移动行首
      • $ 或 [End] : 光标移动到行尾
      • H : 光标移动到本屏的最上方的那一行的第一个字符
      • M : 光标移动到本屏的最中央的那一行的第一个字符
      • L : 光标移动到本屏的最下方的那一行的第一个字符
      • G : 光标移动到本文档的最后一行
      • nG : 光标移动到本文档的第n行(n为数字)
      • gg : 光标移动到本文档的第1行(相当于1G)
      • n : 光标向下移动n行
    • 查找与替换
      • / : 向下查找,/后面接要查询的字符,如 : /word
      • ? : 向上查找,?后面接要查询的字符,如 : ?word
      • n : 按键n,重复上一个查找动作
      • N : 按键N,反方向重复上一个查找动作
      • :n1,n2s/word1/word2/g : 相当于进入末行模式操作
      • :1,$s/word1/word2/g
      • ::1,$s/word1/word2/gc
    • 复制,黏贴,删除
      • x : 光标处向后删除一个字符
      • X : 光标处向前删除一个字符
      • nx : 光标处向后删除n个字符
      • dd : 删除光标所在行
      • ndd : 删除光标所在及向下n行
      • d1G : 删除光标所在到第一行的所有数据
      • dG : 删除光标所在到最后一行的所有数据
      • d$ : 删除光标所在到该行最后一个字符的所有数据
      • d0 : 删除光标所在到该行第一个字符的所有数据
      • yy : 复制光标所在那一行
      • nyy : 复制光标所在及向下n行
      • y1G : 复制光标所在到第一行的所有数据
      • yG : 复制光标所在到最后一行的所有数据
      • y$ : 复制光标所在到该行最后一个字符的所有数据
      • y0 : 复制光标所在到该行第一个字符的所有数据
      • p : 在光标所在下一行黏贴已复制的内容
      • P : 在光标所在上一行黏贴已复制的内容
      • J : 将光标所在行和其下一行的数据结合成同一行
      • c : 重复删除多个数据,例如向下删除 10 行,’10cj’,(然后会进入编辑模式……)
      • u :撤销前一个动作
      • [Ctrl] + r : 重复上一个动作(CentOS7.3Core测试有问题)
      • . : 重复前一个动作
    • 默认模式转到编辑模式
      • i,I : 插入模式(Insert mode),i 光标所在处插入,I 在本行的第一个非空格(制表符等)符处开始插入
      • a,A : 插入模式(Insert mode),a 光标所在下一个字符处开始插入, A 光标所在行的最后一个字符处开始插入
      • o,O : 插入模式(Insert mode),o 光标所在的下一行处插入新的一行开始插入, O 光标所在处的上一行插入新的一行开始插入
      • r,R : 替换模式(Repalce mode),r只替换一次,就退出了编辑模式,R一直替换,知道[Esc]退出编辑模式
      • 当且仅当左下角出现[INSERT] 或 [REPLACE] 时才是编辑模式
      • [Esc] :推出编辑模式,回到一般模式(?中文输入法下有时会出问题)
    • 默认模式转到指令模式
      • :冒号(:),进入指令模式
      • : :w 保存
      • : :w! 强制保存(一般是root才用的起)
      • : :q 退出(未改动文档前可以)
      • : :q! 不保存,强制退出
      • : :wq 保存后退出
      • : ZZ 自动保存退出
      • : :w[other_filename] 将本文档另存为 other_filename
      • : :r[r_filename] 将 r_filename 文档内容读取到本文档
      • : :n1,n2 w[filename] 将n1行到n2行内容另存为filename文件
      • : :!command 暂时离开vi到指令列模式下执行指令 command 的显示结果,比如要另外保存副本是查看当前目录所有的文件名: !ls -al ./
      • : :set nu 显示行号
      • : :set none 取消行号显示

    vim的缓存文档,恢复的进行与开启

    • vim 编辑器在编辑文本是会在同目录下生成以.swp结尾的缓存文件
    • 在vim被异常终止后,此文件不删除,而在此编辑原文件是会提示存在.swp版并给几种选项让你来选择是删除,编辑,还是另存为等操作
    • [O]pen Read-Only, (E)dit anyway, (R)ecover, (D)delte it, (Quit), (A)bort

    vim 其他功能

    • 很多厂商在其发行版中将vi别名取为vim,通过alias命令可以查看设置指令别名(部分可以改man.comfig这个配置文件)

    • 右下角多了行和列号的提示

    • c shell 配置文件 等vim提供语法高亮,并有报错机制

    • 区块选择(客户操作)

      • v : 光标经过的字符反色选择
      • V :光标经过的行反色选择
      • [Ctrl]+v :区块选择,以当前光标有点,可矩形框选择内容
      • y :复制选中的内容
      • d :删除选中的内容
      • p : 可将刚才的内容区块黏贴
    • vim 配置文件: ~/.vimrc, ~/.viminfo

      • 使用vim 编辑器是,会自动在当前目录建立记录文件~/.viminfo
      • vim全局配置文件是 /etc/vimrc,一般不要修改,可以在当前目录建立 ~/.vimrc,即用户配置文件
    • vim常用指令示意图(略)

    Linux文档编辑其他注意事项

    • 中文编码 :建议使用utf-8

    • DOS 与 Linux 断行字符

      • cat -A file 可以查看文档断字符
      • DOS : ^M$ ,CR LF两个字符
      • Liunx :$ ,LF 一个字符
      • 转换:
        • dos2unix [-kn] file [newfile]
        • unix2dos [-kn] file [newfile]
        • -k :保留该文档原本的 mtime 时间格式 (不更新文档上次内容经过修订的时间)
        • -n :保留原本的旧档,将转换后的内容输出到新文档,如: dos2unix -n old new
    • 编码格式转换
      • iconv
      • iconv –list 列出系统支持的编码格式
      • iconv -f 原编码 -t 新编码 filename [-o newfilename]
      • -f :from ,即来源,接原本的编码格式
      • -t :to ,即需要转为的新编码格式
      • -o file:如果要保留原本的文档,那么使用 -o newfilename,可以建立新编码文档。
      • 繁简转换 (Liunx下中文只认utf8,组后都要转成utf8才能在Linux下查看)
        • big5 to gb2312 : iconv -f big5 -t gb2312 test01
        • gb2312 to utf8 : iconv -f gb2312 -t utf8 test01
        • 繁体utf8转为简体utf8 :
        • iconv -f utf8 -t big5 vi.utf8 | iconv -f big5 -t gb2312 | iconv -f gb2312 -t utf8 -o vi.gb.utf8

    你可能感兴趣的:(学习笔记,Linux)