linux系统学习笔记

linux系统学习笔记

大部分内容来自鸟叔的私房菜的自我整理

文章目录

  • linux系统学习笔记
    • 为什么使用linux
    • linux的基础组成
    • linux系统安装
    • linux权限和文档
    • linux目录
    • linux文件和目录
    • 磁碟和挂载
    • 压缩、打包、备份
    • vim编辑器
    • BASH
    • 环境变量
    • 账号管理
    • 系统设备接入虚拟化
    • 集群和分布式区
    • 账号管理
    • 系统设备接入虚拟化
    • 集群和分布式区

为什么使用linux

  1. 免费
  2. 很多软件原生是在Linux下运行的,庞大的社区支持,生态环境好
  3. 开源,可被定制,开放,多用户的网络操作系统
  4. 相对安全稳定

linux的基础组成

  1. linux内核(linus 团队管理)
  2. shell:用户与内核交互的接口
  3. 文件系统:ext3、ext4等。windows 有 fat32 、ntfs
  4. 第三方应用软件

linux系统安装

鸟叔的私房菜

linux权限和文档

例:ls -a(-a查看隐藏文件)

档案属性的示意图

文档类型权限

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Iz2tnuc-1590720841790)(http://linux.vbird.org/linux_basic/0210filepermission//0210filepermission_3.gif)]

第一个字元代表这个档案是『目录、档案或连结档等等』:

  • 当为[ d ]则是目录
  • 当为[ - ]则是档案
  • 若是[ l ]则表示为连结档(link file);
  • 若是[ b ]则表示为装置档里面的可供储存的周边设备(可随机存取装置);
  • 若是[ c ]则表示为装置档里面的序列埠设备,例如键盘、滑鼠(一次性读取装置)。

第二栏表示有多少档名连结到此节点(i-node):

​ 每个档案都会将他的权限与属性记录到档案系统的i-node中,不过,我们使用的目录树却是使用档名来记录,因此每个档名就会连结到一个i-node啰!这个属性记录的,就是有多少不同的档名连结到相同的一个i-node号码去就是了。关于i-node的相关资料我们会在第七章谈到档案系统时再加强介绍的。

  • chgrp :改变档案所属群组
  • chown :改变档案拥有者
  • chmod :改变档案的权限 r:4 w:2 x:1

例:chmod 741 xx 同chmod u=rwx,go=r,o=x xx

​ chmod 777 xx同chmod a=rwx xx

lsattr:查看文件的属性,比如锁定

chattr :+<属性> 文件或目录的该项属性。

​ -<属性> 关闭文件或目录的该项属性。

a: append only; 系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
c: compressed; 系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。
d: no dump; 在进行文件系统备份时,dump程序将忽略这个文件。
i: immutable; 系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
j: data journalling; 如果一个文件设置了该属性,那么它所有的数据在写入文件本身之前,写入到ext3文件系统日志中,如果该文件系统挂载的时候使用了”data=ordered” 或”data=writeback”选项。当文件系统采用”data=journal”选项挂载时,所有文件数据已经记录日志,因此这个属性不起作用。仅仅超级用户或者拥有CAP_SYS_RESOURCE能力的进程可以设置和删除该属性。
s: secure deletion; 让系统在删除这个文件时,使用0填充文件所在的区域。
t: no tail-merging; 和其他文件合并时,该文件的末尾不会有部分块碎片(为支持尾部合并的文件系统使用)。
u: undeletable; 当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。
A: no atime updates; 告诉系统不要修改对这个文件的最后访问时间
D: synchronous directory updates; 任何改变将同步到磁盘;这等价于mount命令中的dirsync选项:
S: synchronous updates; 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
T: top of directory hierarchy; 如果一个目录设置了该属性,它将被视为目录结构的顶极目录

linux目录

目录 应放置档案内容
第一部份:FHS 要求必须要存在的目录
/bin 系统有很多放置执行档的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。 在/bin底下的指令可以被root与一般帐号所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。
/boot 这个目录主要在放置开机会使用到的档案,包括Linux核心档案以及开机选单与开机所需设定档等等。 Linux kernel常用的档名为:vmlinuz,如果使用的是grub2这个开机管理程式,则还会存在/boot/grub2/这个目录喔!
/dev 在Linux系统上,任何装置与周边设备都是以档案的型态存在于这个目录当中的。你只要透过存取这个目录底下的某个档案,就等于存取某个装置啰~比要重要的档案有/dev/null, /dev/zero, /dev/tty , /dev/loop*, / dev/sd*等等
/etc 系统主要的设定档几乎都放置在这个目录内,例如人员的帐号密码档、各种服务的启始档等等。一般来说,这个目录下的各档案属性是可以让一般使用者查阅的,但是只有root有权力修改。FHS建议不要放置可执行档(binary)在这个目录中喔。比较重要的档案有: /etc/modprobe.d/, /etc/passwd, /etc/fstab, /etc/issue等等。另外FHS还规范几个重要的目录最好要存在/etc/目录下喔:/etc/opt(必要):这个目录在放置第三方协力软体/opt的相关设定档/etc/X11/(建议):与X Window有关的各种设定档都在这里,尤其是xorg.conf这个X Server的设定档。/etc/sgml/(建议):与SGML格式有关的各项设定档/etc/xml/(建议):与XML格式有关的各项设定档
/lib 系统的函式库非常的多,而/lib放置的则是在开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库而已。什么是函式库呢?妳可以将他想成是『外挂』,某些指令必须要有这些『外挂』才能够顺利完成程式的执行之意。另外FHS还要求底下的目录必须要存在:/lib/modules/:这个目录主要放置可抽换式的核心相关模组(驱动程式)喔!
/media media是『媒体』的英文,顾名思义,这个/media底下放置的就是可移除的装置啦! 包括软碟、光碟、DVD等等装置都暂时挂载于此。常见的档名有:/media/floppy, /media/cdrom等等。
/mnt 如果妳想要暂时挂载某些额外的装置,一般建议妳可以放置到这个目录中。在古早时候,这个目录的用途与/media相同啦!只是有了/media之后,这个目录就用来暂时挂载用了。
/opt 这个是给第三方协力软体放置的目录。什么是第三方协力软体啊?举例来说,KDE这个桌面管理系统是一个独立的计画,不过他可以安装到Linux系统中,因此KDE的软体就建议放置到此目录下了。另外,如果妳想要自行安装额外的软体(非原本的distribution提供的),那么也能够将你的软体安装到这里来。不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下呢!
/run 早期的FHS 规定系统开机后所产生的各项资讯应该要放置到/var/run 目录下,新版的FHS 则规范到/run 底下。由于/run 可以使用记忆体来模拟,因此效能上会好很多!
/sbin Linux有非常多指令是用来设定系统环境的,这些指令只有root才能够利用来『设定』系统,其他使用者最多只能用来『查询』而已。 放在/sbin底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。 至于某些伺服器软体程式,一般则放置到/usr/sbin/当中。至于本机自行安装的软体所产生的系统执行档(system binary),则放置到/usr/local/sbin/当中了。常见的指令包括:fdisk, fsck, ifconfig, mkfs等等。
/srv srv可以视为『service』的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录。常见的服务例如WWW, FTP等等。举例来说,WWW伺服器需要的网页资料就可以放置在/srv/www/里面。不过,系统的服务资料如果尚未要提供给网际网路任何人浏览的话,预设还是建议放置到/var/lib 底下即可。
/tmp 这是让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要资料不可放置在此目录啊!因为FHS甚至建议在开机时,应该要将/tmp下的资料都删除唷!
/usr 第二层FHS 设定,后续介绍
/var 第二层FHS 设定,主要为放置变动性的资料,后续介绍
第二部份:FHS 建议可以存在的目录
/home 这是系统预设的使用者家目录(home directory)。在你新增一个一般使用者帐号时, 预设的使用者家目录都会规范到这里来。比较重要的是,家目录有两种代号喔::代表目前这个使用者的家目录dmtsai:则代表dmtsai的家目录!
/lib 用来存放与/lib 不同的格式的二进位函式库,例如支援64 位元的/lib64 函式库等
/root 系统管理员(root)的家目录。之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时, 该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分割槽中。
  • usr 的意义与内容:

依据FHS的基本定义,/usr里面放置的资料属于可分享的与不可变动的(shareable, static),如果你知道如何透过网路进行分割槽的挂载(例如在伺服器篇会谈到的NFS伺服器 ),那么/usr确实可以分享给区域网路内的其他主机来使用喔!

很多读者都会误会/usr为user的缩写,其实usr是Unix Software Resource的缩写,也就是『Unix作业系统软体资源』所放置的目录,而不是使用者的资料啦!这点要注意。FHS建议所有软体开发者,应该将他们的资料合理的分别放置到这个目录下的次目录,而不要自行建立该软体自己独立的目录。

因为是所有系统预设的软体(distribution发布者提供的软体)都会放置到/usr底下,因此这个目录有点类似Windows 系统的『C:\Windows\ (当中的一部份) + C:\Program files \』这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬碟容量。一般来说,/usr的次目录建议有底下这些:

目录 应放置档案内容
第一部份:FHS 要求必须要存在的目录
/usr/bin/ 所有一般用户能够使用的指令都放在这里!目前新的CentOS 7 已经将全部的使用者指令放置于此,而使用连结档的方式将/bin 连结至此!也就是说, /usr/bin 与/bin 是一模一样了!另外,FHS 要求在此目录下不应该有子目录!
/usr/lib/ 基本上,与/lib 功能相同,所以/lib 就是连结到此目录中的!
/usr/local/ 系统管理员在本机自行安装自己下载的软体(非distribution预设提供者),建议安装到此目录, 这样会比较便于管理。举例来说,你的distribution提供的软体较旧,你想安装较新的软体但又不想移除旧版, 此时你可以将新版软体安装于/usr/local/目录下,可与原先的旧版软体有分别啦!你可以自行到/usr/local去看看,该目录下也是具有bin, etc, include, lib…的次目录喔!
/usr/sbin/ 非系统正常运作所需要的系统指令。最常见的就是某些网路伺服器软体的服务指令(daemon)啰!不过基本功能与/sbin 也差不多, 因此目前/sbin 就是连结到此目录中的。
/usr/share/ 主要放置唯读架构的资料档案,当然也包括共享文件。在这个目录下放置的资料几乎是不分硬体架构均可读取的资料, 因为几乎都是文字档案嘛!在此目录下常见的还有这些次目录:/usr/share/man:线上说明文件/usr/share/doc:软体杂项的文件说明/usr/share/zoneinfo:与时区有关的时区档案
第二部份:FHS 建议可以存在的目录
/usr/games/ 与游戏比较相关的资料放置处
/usr/include/ c/c++等程式语言的档头(header)与包含档(include)放置处,当我们以tarball方式(*.tar.gz 的方式安装软体)安装某些资料时,会使用到里头的许多包含档喔!
/usr/libexec/ 某些不被一般使用者惯用的执行档或脚本(script)等等,都会放置在此目录中。例如大部分的X视窗底下的操作指令,很多都是放在此目录下的。
/usr/lib/ 与/lib/功能相同,因此目前/lib 就是连结到此目录中
/usr/src/ 一般原始码建议放置到这里,src有source的意思。至于核心原始码则建议放置到/usr/src/linux/目录下。
  • /var 的意义与内容:

如果/usr是安装时会占用较大硬碟容量的目录,那么/var就是在系统运作后才会渐渐占用硬碟容量的目录。因为/var目录主要针对常态性变动的档案,包括快取(cache)、登录档(log file)以及某些软体运作所产生的档案, 包括程序档案(lock file, run file),或者例如MySQL资料库的档案等等。常见的次目录有:

目录 应放置档案内容
第一部份:FHS 要求必须要存在的目录
/var/cache/ 应用程式本身运作过程中会产生的一些暂存档;
/var/lib/ 程式本身执行的过程中,需要使用到的资料档案放置的目录。在此目录下各自的软体应该要有各自的目录。举例来说,MySQL的资料库放置到/var/lib/mysql/而rpm的资料库则放到/var/lib/rpm去!
/var/lock/ 某些装置或者是档案资源一次只能被一个应用程式所使用,如果同时有两个程式使用该装置时, 就可能产生一些错误的状况,因此就得要将该装置上锁(lock),以确保该装置只会给单一软体所使用。举例来说,烧录机正在烧录一块光碟,你想一下,会不会有两个人同时在使用一个烧录机烧片?如果两个人同时烧录,那片子写入的是谁的资料?所以当第一个人在烧录时该烧录机就会被上锁, 第二个人就得要该装置被解除锁定(就是前一个人用完了)才能够继续使用啰。目前此目录也已经挪到/run/lock 中!
/var/log/ 重要到不行!这是登录档放置的目录!里面比较重要的档案如/var/log/messages, /var/log/wtmp(记录登入者的资讯)等。
/var/mail/ 放置个人电子邮件信箱的目录,不过这个目录也被放置到/var/spool/mail/目录中!通常这两个目录是互为连结档啦!
/var/run/ 某些程式或者是服务启动后,会将他们的PID放置在这个目录下喔!至于PID的意义我们会在后续章节提到的。与/run 相同,这个目录连结到/run 去了!
/var/spool/ 这个目录通常放置一些伫列资料,所谓的『伫列』就是排队等待其他程式使用的资料啦! 这些资料被使用后通常都会被删除。举例来说,系统收到新信会放置到/var/spool/mail/中,但使用者收下该信件后该封信原则上就会被删除。信件如果暂时寄不出去会被放到/var/spool/mqueue/中,等到被送出后就被删除。如果是工作排程资料(crontab),就会被放置到/var/spool/cron/目录中!

建议在你读完整个基础篇之后,可以挑战FHS官方英文文件(参考本章参考资料 ),相信会让你对于Linux作业系统的目录有更深入的了解喔!

此外,CentOS 7 在目录的编排上与过去的版本不同喔!本节稍早之前已经有介绍过,这里做个汇整。比较大的差异在于将许多原本应该要在根目录(/) 里面的目录,将他内部资料全部挪到/usr 里面去,然后进行连结设定!包括底下这些:

  • /bin --> /usr/bin
  • /sbin --> /usr/sbin
  • /lib --> /usr/lib
  • /lib64 --> /usr/lib64
  • /var/lock --> /run/lock
  • /var/run --> /run

linux文件和目录

查看文件:cat tac nl more less head tail

新建目录:mkdir 新建文件:touch

  • superblock:记录此filesystem 的整体资讯,包括inode/block的总量、使用量、剩余量, 以及档案系统的格式与相关资讯等;
  • inode:记录档案的属性,一个档案占用一个inode,同时记录此档案的资料所在的block 号码;
  • block:实际记录档案的内容,若档案太大时,会占用多个block 。

其实档名只与目录有关,但是档案内容则与inode有关

df、du:查询整体档案系统的总容量与每个目录所占用的容量

cp、mv、rm:

-b :若需覆盖文件,则覆盖前先行备份。

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u :若目标文件已经存在,且 source 比较新,才会更新(update)

磁碟和挂载

待续(实际工作中未接触过,也就不花时间去深入了解,浅看一遍)

需要再学习

http://linux.vbird.org/linux_basic/0230filesystem.php

压缩、打包、备份

gzip

-c :将压缩的资料输出到萤幕上,可透过资料流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩档的一致性~看看档案有无错误;
-v :可以显示出原档案/压缩档案的压缩比等资讯;
-# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是-6

tar

-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 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

常用打包 -zcvf 常用解压:-zxvf

xfsdump

cpio

vim编辑器

记是记不住的,抄一抄混混日子

  • 第一部份:一般指令模式可用的按钮说明,游标移动、复制贴上、搜寻取代等
移动游标的方法
h 或向左方向键(←) 游标向左移动一个字元
j 或向下方向键(↓) 游标向下移动一个字元
k 或向上方向键(↑) 游标向上移动一个字元
l 或向右方向键(→) 游标向右移动一个字元
如果你将右手放在键盘上的话,你会发现hjkl 是排列在一起的,因此可以使用这四个按钮来移动游标。如果想要进行多次移动的话,例如向下移动30 列,可以使用"30j" 或"30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
[Ctrl] + [f] 萤幕『向下』移动一页,相当于[Page Down]按键( 常用 )
[Ctrl] + [b] 萤幕『向上』移动一页,相当于[Page Up]按键( 常用 )
[Ctrl] + [d] 萤幕『向下』移动半页
[Ctrl] + [u] 萤幕『向上』移动半页
+ 游标移动到非空白字元的下一列
- 游标移动到非空白字元的上一列
n 那个n 表示『数字』,例如20 。按下数字后再按空白键,游标会向右移动这一列的n 个字元。例如20 则游标会向后面移动20 个字元距离。
0 或功能键[Home] 这是数字『 0 』:移动到这一列的最前面字元处( 常用 )
$ 或功能键[End] 移动到这一列的最后面字元处( 常用 )
H 游标移动到这个萤幕的最上方那一列的第一个字元
M 游标移动到这个萤幕的中央那一列的第一个字元
L 游标移动到这个萤幕的最下方那一列的第一个字元
G 移动到这个档案的最后一列( 常用 )
nG n 为数字。移动到这个档案的第n 列。例如20G 则会移动到这个档案的第20 列(可配合:set nu)
gg 移动到这个档案的第一列,相当于1G啊!( 常用 )
n n为数字。游标向下移动n列( 常用 )
搜寻与取代
/word 向游标之下寻找一个名称为word的字串。例如要在档案内搜寻vbird这个字串,就输入/vbird即可!( 常用 )
?word 向游标之上寻找一个字串名称为word 的字串。
n 这个n是英文按键。代表『重复前一个搜寻的动作』。举例来说,如果刚刚我们执行/vbird去向下搜寻vbird这个字串,则按下n后,会向下继续搜寻下一个名称为vbird的字串。如果是执行?vbird的话,那么按下n则会向上继续搜寻名称为vbird的字串!
N 这个N 是英文按键。与n 刚好相反,为『反向』进行前一个搜寻动作。例如/vbird 后,按下N 则表示『向上』搜寻vbird 。
使用/word 配合n 及N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键字!
:n1,n2s/word1/word2/g n1与n2为数字。在第n1与n2列之间寻找word1这个字串,并将该字串取代为word2 !举例来说,在100到200列之间搜寻vbird并取代为VBIRD则: 『:100,200s/vbird/VBIRD/g』。( 常用 )
:1,$s/word1/word2/g 从第一列到最后一列寻找word1字串,并将该字串取代为word2 !( 常用 )
:1,$s/word1/word2/gc 从第一列到最后一列寻找word1字串,并将该字串取代为word2 !且在取代前显示提示字元给使用者确认(confirm)是否需要取代!( 常用 )
删除、复制与贴上
x, X 在一列字当中,x为向后删除一个字元(相当于[del]按键), X为向前删除一个字元(相当于[backspace]亦即是倒退键) ( 常用 )
nx n 为数字,连续向后删除n 个字元。举例来说,我要连续删除10 个字元, 『10x』。
dd 删除游标所在的那一整列( 常用 )
ndd n为数字。删除游标所在的向下n列,例如20dd则是删除20列( 常用 )
d1G 删除游标所在到第一列的所有资料
dG 删除游标所在到最后一列的所有资料
d$ 删除游标所在处,到该列的最后一个字元
d0 那个是数字的0 ,删除游标所在处,到该列的最前面一个字元
yy 复制游标所在的那一列( 常用 )
nyy n为数字。复制游标所在的向下n列,例如20yy则是复制20列( 常用 )
y1G 复制游标所在列到第一列的所有资料
yG 复制游标所在列到最后一列的所有资料
y0 复制游标所在的那个字元到该列行首的所有资料
y$ 复制游标所在的那个字元到该列行尾的所有资料
p, P p为将已复制的资料在游标下一列贴上,P则为贴在游标上一列!举例来说,我目前游标在第20列,且已经复制了10列资料。则按下p后,那10列资料会贴在原本的20列之后,亦即由21列开始贴。但如果是按下P呢?那么原本的第20列会被推到变成30列。( 常用 )
J 将游标所在列与下一列的资料结合成同一列
c 重复删除多个资料,例如向下删除10 列,[ 10cj ]
u 复原前一个动作。( 常用 )
[Ctrl]+r 重做上一个动作。( 常用 )
这个u 与[Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦!
. 不要怀疑!这就是小数点!意思是重复前一个动作的意思。如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了!( 常用 )
  • 第二部份:一般指令模式切换到编辑模式的可用的按钮说明
进入插入或取代的编辑模式
i, I 进入插入模式(Insert mode): i为『从目前游标所在处插入』, I为『在目前所在列的第一个非空白字元处开始插入』。( 常用 )
a, A 进入插入模式(Insert mode): a为『从目前游标所在的下一个字元处开始插入』, A为『从游标所在列的最后一个字元处开始插入』。( 常用 )
o, O 进入插入模式(Insert mode): 这是英文字母o的大小写。o为『在目前游标所在的下一列处插入新的一列』; O为在目前游标所在处的上一列插入新的一列!( 常用 )
r, R 进入取代模式(Replace mode): r只会取代游标所在的那一个字元一次;R会一直取代游标所在的文字,直到按下ESC为止;( 常用 )
上面这些按键中,在vi 画面的左下角处会出现『–INSERT–』或『–REPLACE–』的字样。由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字元时, 一定要在左下角处看到INSERT 或REPLACE 才能输入喔!
[Esc] 退出编辑模式,回到一般指令模式中( 常用 )
  • 第三部份:一般指令模式切换到指令列模式的可用按钮说明
指令列模式的储存、离开等指令
:w 将编辑的资料写入硬碟档案中( 常用 )
:w! 若档案属性为『唯读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
:q 离开vi ( 常用 )
:q! 若曾修改过档案,又不想储存,使用! 为强制离开不储存档案。
注意一下啊,那个惊叹号(!) 在vi 当中,常常具有『强制』的意思~
:wq 储存后离开,若为:wq!则为强制储存后离开( 常用 )
ZZ 这是大写的Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!
:w [filename] 将编辑的资料储存成另一个档案(类似另存新档)
:r [filename] 在编辑的资料中,读入另一个档案的资料。亦即将『filename』 这个档案内容加到游标所在列后面
:n1,n2 w [filename] 将n1 到n2 的内容储存成filename 这个档案。
:! command 暂时离开vi到指令列模式下执行command的显示结果!例如 『:! ls /home』即可在vi当中察看/home底下以ls输出的档案资讯!
vim 环境的变更
:set nu 显示行号,设定之后,会在每一列的字首显示该列的行号
:set nonu 与set nu 相反,为取消行号!

暂存档

当有其他人或程式同时在编辑这个档案或者在前一个vim的环境中,可能因为某些不知名原因导致vim中断(crashed)时会出现xx.swp。当你打开文件的时候:

  • [O]pen Read-Only:打开此档案成为唯读档,可以用在你只是想要查阅该档案内容并不想要进行编辑行为时。一般来说,在上课时,如果你是登入到同学的电脑去看他的设定档,结果发现其实同学他自己也在编辑时,可以使用这个模式;
  • (E)dit anyway:还是用正常的方式打开你要编辑的那个档案,并不会载入暂存档的内容。不过很容易出现两个使用者互相改变对方的档案等问题!不好不好!
  • ®ecover:就是载入暂存档的内容,用在你要救回之前未储存的工作。不过当你救回来并且储存离开vim后,还是要手动自行删除那个暂存档喔!
  • (D)elete it:你确定那个暂存档是无用的!那么开启档案前会先将这个暂存档删除!这个动作其实是比较常做的!因为你可能不确定这个暂存档是怎么来的,所以就删除掉他吧!哈哈!
  • (Q)uit:按下q就离开vim ,不会进行任何动作回到命令提示字元。
  • (A)bort:忽略这个编辑行为,感觉上与quit非常类似!也会送你回到命令提示字元就是啰!

BASH

Bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。

Bash是Bourne shell的后继兼容版本与开放源代码版本,它的名称来自Bourne shell(sh)的一个双关语(Bourne again / born again):Bourne-Again SHell。

Bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本。

bash优点:

  • history的使用
  • 命令与档案补全功能: ([tab] 按键的好处)
  • 命令别名设定功能: (alias) 例如 alias lm=‘ls -al’
  • 工作控制、前景背景控制: (job control, foreground, background)(暂不知道什么意思,后续学习)
  • 程式化脚本: (shell scripts)
  • 万用字元: (Wildcard)(就是*的模糊匹配)

type可查询命令

|:假设我们想要知道/etc/ 底下有多少档案,那么可以利用ls /etc 来查阅,不过, 因为/etc 底下的档案太多,导致一口气就将萤幕塞满了~不知道前面输出的内容是啥?此时,我们可以透过 less 指令的协助,利用:

ls -al /etc | less
常用:ps -ef|grep xx

撷取命令: cut, grep

排序命令: sort, wc, uniq

cat /etc/man_db.conf | wc 
    131 723 5171 #输出的三个数字中,分别代表: 『行、字数、字元数

字元转换命令: tr, col, join, paste, expand

对比:diff

test:测试功能,监测文档或者是系统的属性。例:文档是否存在

[dmtsai@study ~]$ test -e /dmtsai 

执行结果并不会显示任何讯息,但最后我们可以透过$? 或&& 及|| 来展现整个结果呢!例如我们在将上面的例子改写成这样:

[dmtsai@study ~]$ test -e /dmtsai && echo "exist" || echo "Not exist"  Not exist   <==结果显示不存在!

环境变量

永久添加环境变量:/etc/profile

临时添加:export name=xx

注意:双引号仍然可以保有变量的内容,但单引号内仅能是一般字元,而不会有特殊符号

  • env:观察环境变量与常见环境变量说明
  • set:观察所有变数(含环境变量与自订变量)
  • export: 自订变数转成环境变数

变量键盘读取、队列与宣告: read, array, declare

ulimit:与档案系统及程序的限制关系

 ulimit [-SHacdfltu] [配额] 
选项与参数:
-H :hard limit ,严格的设定,必定不能超过这个设定的数值;
-S :soft limit ,警告的设定,可以超过这个设定值,但是若超过则有警告讯息。
      在设定上,通常soft会比hard小,举例来说,soft可设定为80而hard 
      设定为100,那么你可以使用到90 (因为没有超过100),但介于80~100之间时,
      系统会有警告讯息通知你!
-a :后面不接任何选项与参数,可列出所有的限制额度;
-c :当某些程式发生错误时,系统可能会将该程式在记忆体中的资讯写成档案(除错用),
      这种档案就被称为核心档案(core file)。此为限制每个核心档案的最大容量。
-f :此shell可以建立的最大档案容量(一般可能设定为2GB)单位为Kbytes 
-d :程序可使用的最大断裂记忆体(segment)容量;
-l :可用于锁定(lock)的记忆体量
-t :可使用的最大CPU时间(单位为秒) 
-u :单一使用者可以使用的最大程序(process)数量。

正则:略过专门写笔记

shell script:略

账号管理

id:查询某个账号信息

/etc/passwd  记录所有账号,没有密码
/etc/shadow  记录账号、密码、密码管理(到期等)
/etc/group    记录所有组   一般不需要密码,也没有密码,密码在/etc/gshadow

新建账号:useradd

不加任何参数会建一个默认的账号,默认会建立使用者home目录,且權限為 700 ,同时会建一个与账号名一模一样的组

修改密码 :passwd

新建账号,必须要给密码

sudo :可以在/etc/sudoers设定,不输入管理员密码直接登录

pam模块

系统设备接入虚拟化

  1. 买机器/华为/惠普/联想,并上架,插线配网络
  2. 登录ilo,打开con装系统,配网关。
  3. 登录VC进行管理配置

集群和分布式区

正则:略过专门写笔记

shell script:略

账号管理

id:查询某个账号信息

/etc/passwd  记录所有账号,没有密码
/etc/shadow  记录账号、密码、密码管理(到期等)
/etc/group    记录所有组   一般不需要密码,也没有密码,密码在/etc/gshadow

新建账号:useradd

不加任何参数会建一个默认的账号,默认会建立使用者home目录,且權限為 700 ,同时会建一个与账号名一模一样的组

修改密码 :passwd

新建账号,必须要给密码

sudo :可以在/etc/sudoers设定,不输入管理员密码直接登录

pam模块

系统设备接入虚拟化

  1. 买机器/华为/惠普/联想,并上架,插线配网络
  2. 登录ilo,打开con装系统,配网关。
  3. 登录VC进行管理配置

集群和分布式区

集群物理分割、分布式区用防火墙分割。

你可能感兴趣的:(linux系统学习笔记)