大部分内容来自鸟叔的私房菜的自我整理
鸟叔的私房菜
例:ls -a(-a查看隐藏文件)
文档类型权限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Iz2tnuc-1590720841790)(http://linux.vbird.org/linux_basic/0210filepermission//0210filepermission_3.gif)]
第一个字元代表这个档案是『目录、档案或连结档等等』:
第二栏表示有多少档名连结到此节点(i-node):
每个档案都会将他的权限与属性记录到档案系统的i-node中,不过,我们使用的目录树却是使用档名来记录,因此每个档名就会连结到一个i-node啰!这个属性记录的,就是有多少不同的档名连结到相同的一个i-node号码去就是了。关于i-node的相关资料我们会在第七章谈到档案系统时再加强介绍的。
例: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; 如果一个目录设置了该属性,它将被视为目录结构的顶极目录
目录 | 应放置档案内容 |
---|---|
第一部份: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的家目录与根目录放置在同一个分割槽中。 |
依据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/目录下。 |
如果/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 里面去,然后进行连结设定!包括底下这些:
查看文件:cat tac nl more less head tail
新建目录:mkdir 新建文件:touch
其实档名只与目录有关,但是档案内容则与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
记是记不住的,抄一抄混混日子
移动游标的方法 | |
---|---|
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。当你打开文件的时候:
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优点:
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
注意:双引号仍然可以保有变量的内容,但单引号内仅能是一般字元,而不会有特殊符号
变量键盘读取、队列与宣告: 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模块
正则:略过专门写笔记
shell script:略
id:查询某个账号信息
/etc/passwd 记录所有账号,没有密码
/etc/shadow 记录账号、密码、密码管理(到期等)
/etc/group 记录所有组 一般不需要密码,也没有密码,密码在/etc/gshadow
新建账号:useradd
不加任何参数会建一个默认的账号,默认会建立使用者home目录,且權限為 700 ,同时会建一个与账号名一模一样的组
修改密码 :passwd
新建账号,必须要给密码
sudo :可以在/etc/sudoers设定,不输入管理员密码直接登录
pam模块
集群物理分割、分布式区用防火墙分割。