绝对路径:路径的写法必定由根目录/写起node
相对路径:路径的写法不是由\写起,指相对于目前工做目录的路径正则表达式
对于文件名的正确性来讲,绝对路径的正确度要好。若是是在写程序(shell scripts)来管理系统的条件下,务必使用绝对路径的写法。若是使用相对路径在程序中,则可能因为执行的工做环境不一样,致使一些问题的发生。shell
一些特殊目录符号以下:数据库
. 表明此层目录安全
.. 表明上一层目录bash
- 表明前一个工做目录数据结构
~ 表明“目前用户身份”所在的主文件夹less
~account 表明account这个用户的主文件夹socket
一些经常使用的目录处理命令以下:编辑器
cd 切换目录
pwd 显式当前目录
mkdir 新建一个新的目录
rmdir 删除一个空的目录
cd(切换目录)
cd [相对路径或绝对路径]
cd是Change Directory的缩写,是用来切换工做目录的命令。用户刚登陆时,会进入本身的主文件夹(~),若是仅输入cd时,表明的就是“cd ~”的意思。
Linux的默认命令行模式(bash shell)具备文件补齐功能,能够利用[Tab]按键快速完整地输入目录,能够避免按错键盘输入错字。
pwd(显示目前所在的目录)
pwd [-P]
-P:显示出当前的路径,而非使用链接(link)路径
pwd是Print Working Directory的缩写,也就是显示目前所在目录的命令。对于link文件,-P参数可让咱们取得正确的目录名称,而不是以链接文件的路径来显示的。
mkdir(新建新目录)
mkdir [-mp] 目录名称
-m:配置文件案权限,直接设置,不须要看默认权限(umask)
-p:帮助直接将所需的目录(包含上层目录)递归建立起来
rmdir(删除空的目录)
rmdir [-p] 目录名称
-p:连同上层空的目录一块儿删除
当咱们执行一个命令的时候,系统会依照PATH的设置去每一个PATH定义的目录下查询文件名为此命令的可执行文件,若是在PATH定义的目录中含有多个文件名为此命令的可执行文件,那么先查询到的同名命令先被执行。
PATH(必定是大写)这个变量的内容是由一堆目录所组成的,每一个目录中间用冒号(:)来隔开,每一个目录是有“顺序”之分的。能够经过“echo $PATH”来查看当前系统中包含的PATH列表。通常用户的PATH中,并不包含任何sbin目录存在。若是想让某个目录加入PATH环境变量,能够执行“$PATH=”$PATH”:/dir”。
① 不一样用户身份默认的PATH不一样,默认可以随意执行的命令也不相同;
② PATH是能够修改的,因此通常用户仍是能够经过修改PATH来执行某些位于/sbin或/usr/sbin下的命令来查询的;
③ 使用绝对路径或相对路径直接指定某个命令的文件名执行,会比查询PATH来得准确;
④ 命令应该要放置到正确的目录下,执行才会比较方便;
⑤ 本目录(.)最好不要放到PATH当中。
ls [-aAdfFhilnrRSt] 目录名称
ls [--color={never, auto, always}] 目录名称
ls [--full-time] 目录名称
参数:
-a:所有的文件,连同隐藏文件一块儿列出来
-A:列出全部的文件(连同隐藏文件,但不包括.与..这两个目录)
-d:仅列出目录自己,而不是列出目录内的数据文件
-f:直接列出结果,而不进行排序(ls默认会以文件名排序)
-F:根据文件、目录等信息给予附加数据结构,例如*表明可执行文件、/表明目录、=表明socket文件、|表明FIFO文件
-h:将文件容量以人类较易读的方式(例如GB,KB等)列出来
-i:列出inode号码
-l:列出长数据串,包含文件的属性与权限等数据
-n:列出UID与GID,而非用户与用户组的名称
-r:将排序结果反向输出,例如文件名有小到大,反向则为由大到小
-R:连同子目录内容一块儿列出来,等于该目录下的全部文件都会显示出来
-S:以文件容量大小排序,而不是用文件名排序
-t:依时间排序,而不是文件名
--color=never:不要根据文件特性给予颜色显示
--color=auto:让系统自行依据设置来判断是否给予颜色
--color=always:显示颜色
--full-time:以完整时间模式(年月日时分)输出
--time={atime, ctime}:输出访问时间或改变权限属性时间(ctime)而非内容更改时间
cp(复制文件或目录)
cp [-adfilprsu] source destination
cp [options] source1 source2 source3 … directory
参数:
-a:至关于-pdr的意思
-d:若源文件为链接文件的属性(link file),则复制链接文件属性而非文件自己
-f:为强制(force)的意思,若目标文件已经存在且没法开启,则删除后再尝试一次
-i:若目标文件(destination)已经存在时,在覆盖时会先询问操做的进行
-l:进行硬链接(hard link)的链接文件建立,而非复制文件自己
-p:连同文件的属性一块儿复制过去,而非使用默认属性
-r:递归持续复制,用于目录的复制行为;
-s:复制成为符号连接文件(symbolic link),即“快捷方式”文件
-u:若destination比source旧才更新destination
若是源文件有两个以上,则最后一个目的文件必定要是目录才行。
在默认的条件中,cp的源文件与目的文件的权限是不一样的,目的文件的全部者一般会是命令操做者自己。所以当咱们在进行备份的时候,某些须要特别注意的特殊权限文件,例如密码文件以及一些配置文件,就不能直接以cp来复制,而必需要加上-a或者是-p等能够完整复制文件权限的参数才行。
对于无修改文件全部者与用户组的普通用户来讲,虽然可以复制源文件的相关权限与时间等属性,可是与全部者、用户组相关的,本来普通用户没法进行的操做,即便加上-a参数,也是没法达成完整复制权限的。
rm(移除文件或目录)
rm [-fir] 文件或目录
参数:
-f:force,忽略不存在的文件,不会出现警告信息
-i:互动模式,在删除前会询问用户是否操做
-r:递归删除(很是危险的参数!!!)
mv(移动文件与目录,或改名)
mv [-fiu] source destination
mv [options] source1 source2 source3 … directory
若是有多个源文件或目录,则最后一个目标文件必定要是目录
basename /etc/sysconfig/network ==> network 取得文件名
dirname /etc/sysconfig/network ==> /etc/sysconfig 取得目录名
若是要查阅一个文件的内容时,能够用到如下命令:
cat:由第一行开始显示文件内容
tac:从最后一行开始显示
nl:显示的时候,顺便输出行号
more:一页一页地显示文件内容
less:与more相似,可是比more更好的是,它能够往前翻页
head:只看头几行
tail:只看结尾几行
od:以二进制的方式读取文件内容
直接查看文件内容能够用cat、tac、nl这几个命令。
cat(concatenate)
格式:cat [-AbEnTv] 文件
参数:
-A:至关于-vET的整合参数,可列出如下特殊字符,而不是空白而已;
-b:列出行号,仅针对非空白作行号显示,空白行不标行号;
-E:将结尾的断行字符$显示出来(断行字符在Windows、Linux中不太相同,Windows中的断行字符是^MS);
-n:打印出行号,连同空白行也会有行号,与-b的参数不一样;
-T:将[Tab]按键以^I显示出来;
-v:列出一些看不出来的特殊字符。
tac(反向列示)
格式:tac 文件
tac恰好是将cat反写过来,因此它的功效就跟cat相反。
nl(添加行号打印)
格式:nl [-bnw] 文件
参数:
-b:指定行号指定的方式,主要有两种:
-b a:表示不管是否为空行,也一样列出行号(相似cat -n);
-b t:若是有空行,空的那一行不要列出行号(默认值);
-n:列出行号表示的方法,主要有三种:
-n nl:行号在屏幕的最左方显示;
-n rn:行号在本身字段的最右方显示,且不加0;
-n rz:行号在本身字段的最右方显示,且加0;
-w:行号字段占用的位数。
nl能够将输出的文件内容自动加上行号,其默认的结果与cat –n有点不太同样,nl能够将行号作比较多的显示设计,包括位数与是否自动补0等的功能。
more(一页一页翻动)
在more这个程序运行的过程中,有以下按键能够选择:
空格键(Space):表明向下翻一页;
Enter:表明向下滚动一行;
/字符串:表明在这个显示的内容当中,向下查询“字符串”这个关键字;
:f:马上显示出文件名以及目前显示的行数;
q:表明马上离开more,再也不显示该文件内容;
b或[ctrl]-b:表明往回翻页,不过这操做只对文件有用,对管道无用。
less(一页一页翻动)
less的用法比起more又更有弹性,在使用more的时候,咱们并无办法向前面翻,只能日后面看,但若使用了less时,就可使用上下等按键的功能来往前日后翻看文件。能够输入的命令有:
空格键(Space):向下翻动一页;
[PageDown]:向下翻动一页;
[PageUp]:向上翻动一页;
/字符串:向下查询“字符串”的功能;
?字符串:向上查询“字符串”的功能;
n:重复前一个查询(与/或?有关);
N:反向重复前一个查询(与/或?有关);
q:离开less这个程序。
head与tail都是以“行”为单位进行数据选取的。
head(取出前面几行)
格式:head [-n number] 文件
参数:
-n:后面接数字,表明显示几行的意思
若number为-a,表明列出前面的全部行数,但不包括后面的a行。
tail(取出后面几行)
格式:tail [-n number] 文件
参数:
-n:后面接数字,表明显示几行的意思
-f:表示持续检测后面所接的文件名,要等到按下[ctrl]-c才会结束tail的检测
若number为+a,表明该文件从a行之后都会被列出来,包括第a行。
格式:od [-t TYPE] 文件
参数:
-t:后面能够接各类“类型”的输出,例如:
a:利用默认的字符来输出;
c:使用ASCII字符来输出;
d[size]:利用十进制(decimal)来输出数据,每一个整数占用size bytes;
f[size]:利用浮点数(floating)来输出数据,每一个数占用size bytes;
o[size]:利用八进制(octal)来输出数据,每一个整数占用size bytes;
o[size]:利用十六进制(hexadecimal)来输出数据,每一个整数占用size bytes。
每一个文件在Linux下面都会记录许多的时间参数,有三个主要的变更时间,其意义分别为:
modification time(mtime):当该文件的“内容数据”更改时,就会更新这个时间。
status time(ctime):当该文件的“状态”改变时,就会更新这个时间。
access time(atime):当“该文件的内容被取用”时,就会更新这个读取时间。
在默认的状况下,ls显示出来的是该文件的mtime,也就是这个文件的内容上次被更改的时间。
有时系统时间会出现错误的状况,若是要修改错误时间,可使用touch命令。
格式:touch [-acdmt] 文件
参数:
-a:仅修改访问时间;
-c:仅修改文件的时间,若该文件不存在则不建立新文件;
-d:后面能够接欲修改的日期而不用目前的时间,也可使用--date=”日期或时间”;
-m:仅修改mtime;
-t:后面能够接欲修改的日期而不用目前的时间,格式为[YYMMDDhhmm]。
touch命令最经常使用的状况是建立一个空的文件、将某个文件日期改成目前时间(mtime与atime)。
umask就是指定目前用户在新建文件或目录时候的权限默认值。
查看的方式有两种,一种能够直接输入umask,就能够看到数字形态的权限设置分数,一种是加入-S(Symbolic)这个参数,就会以符号类型的方式显示出权限了。umask第一组是特殊权限用的。
默认状况下,若用户建立“文件”,则默认没有可执行(x)权限,即只有rw这两个选项,即为-rw-rw-rw-(666);若用户建立“目录”,则因为x与是否能够进入此目录有关,所以默认为全部权限均开放,即为drwxrwxrwx(777)。
umask的分数指的是“该默认值须要减掉的权限”。例如0022,表示user没有拿掉任何权限,group与others的权限被拿掉了2(也就是w这个权限)。那么当用户新建文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--;新建目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x。
在默认的状况中,root的umask会拿掉比较多的属性,root的umask默认是022,这是基于安全的考虑,至于通常身份用户,一般他们的umask默认是002,即保留同用户组的写入权利。
chattr(设置文件的隐藏属性)
格式:chattr [+-=] [ASacdistu] 文件或目录名称
参数:
+:增长一个特殊参数,其余本来存在参数则不动。
-:删除一个特殊参数,其余本来存在参数则不动。
=:仅有后面接的参数。
A:当设置了A属性时,若访问文件/目录时,访问时间atime将不会被修改,可避免I/O较慢的机器过分访问磁盘。
S:加上S属性时,当进行任何文件的修改,该改动会“同步”写入磁盘中。
a:当设置a以后,文件只能增长数据,而不能删除也不能修改数据,只有root才能设置这个属性。
c:设置c属性后,将会自动将此文件压缩,在读取的时候将会自动解压缩,可是在存储的时候,将会先进行压缩后再存储。
d:当dump程序被执行时,设置d属性将可以使该文件/目录不会被备份。
i:可让文件“不能被删除、更名,设置链接也没法写入或添加数据”。对于系统安全性有很大帮助,只有root能设置此属性。
s:当文件设置了s属性时,若是这个文件被删除,它将会被彻底从这个磁盘空间中删除。
u:与s相反,当使用u来配置文件时,若是这个文件被删除,则数据内容还存在磁盘中,可使用来找回该文件。
lsattr(显示文件隐藏属性)
lsattr [-adR] 文件或目录
参数:
-a:将隐藏文件的属性也显示出来;
-d:若是是目录,仅列出目录自己的属性而非目录内的文件名;
-R:连同子目录的数据也一并列出来。
l Set UID
当s这个标志出如今文件全部者的x权限上时,此时就被称为Set UID,简称为SUID的特殊权限。SUID有这样的限制与功能:
1) SUID权限仅对二进制程序(binary program)有效;
2) 执行者对于该程序须要具备x的可执行权限;
3) 本权限仅在执行该程序的过程当中(run-time)有效;
4) 执行者将具备改程序全部者(owner)的权限。
SUID仅可用在二进制程序上,不可以用在shell script上面。这是由于shell script只是将不少的二进制执行文件调度来执行而已。因此SUID的权限部分,仍是要看shell script调用进来的程序的设置,而不是shell script自己。SUID对于目录也是无效的。
l Set GID
s在用户组的x时则称为Set GID,SGID。
与SUID不一样的是,SGID能够针对文件或目录来设置。若是是对文件来讲,SGID有以下功能:
1) SGID对二进制程序有用;
2) 程序执行者对于该程序来讲,需具有x的权限;
3) 执行者在执行的过程当中将会得到该程序用户组的支持。
当一个目录设置了SGID的权限后,它将具备以下的功能:
1) 用户若对于此目录具备r与x的权限时,该用户可以进入此目录;
2) 用户在此目录下的有效用户组(effective group)将会变成该目录的用户组;
3) 若用户在此目录下具备w的权限(能够新建文件),则用户所建立的新文件的用户组与此目录的用户组相同。
l Sticky Bit
Sticky Bit(SBIT)目前只针对目录有效。SBIT对于目录的做用是:
1) 当用户对于此目录具备w、x权限,即具备写入的权限时;
2) 当用户在该目录下建立文件或目录时,仅有本身与root才有权利删除该文件。
例如,当甲这个用户于A目录是具备用户组或其余人的身份,而且拥有该目录w的权限,这表示甲用户对该目录内任何人新建的目录或文件都可进行删除、重命名、移动等操做。不过,若是将A目录加上了SBIT的权限项目时,则甲只可以针对本身建立的文件或目录进行删除、重命名、移动等操做,而没法删除他人的文件。
l SUID/SGID/SBIT权限设置
数字形态更改权限的方式为三个数字的组合,若是在这三个数字以前再加上一个数字的话,最前面的那个数字就表明这几个权限了:4为SUID,2为SGID,1为SBIT。
若是user、group以及others都没有x这个可执行的标志,当分配相对应权限时,会显示S、T,表示权限为空。
除了数字法以外,也能够经过符号法来处理。其中SUID为u+s,而SGID为g+s,SBIT为o+t。
能够经过file命令查看某个文件的基本数据,且其中有没有使用到动态函数库(share library)。
which(寻找“执行文件”)
格式:which [-a] command
参数:
-a:将全部由PATH目录中能够找到的命令均列出,而不仅第一个被找到的命令名称
这个命令是根据PATH这个环境变量所规范的路径去查询“执行文件”的文件名。因此,重点是找出执行文件而已,且which后面接的是完整文件名。若加上-a参数,则能够列出全部的能够找到的同名执行文件,而非仅显示第一个而已。
一般find不很经常使用的,由于速度慢!一般咱们咱们都是先使用whereis或者是locate来检查,若是真的找不到了,才以find来查找。由于whereis和locate是利用数据库来查找数据,因此至关快,并且没有实际查询硬盘,比较节省时间。
whereis(寻找特定文件)
格式:whereis [-bmus] 文件或目录名
参数:
-b:只找二进制格式的文件
-m:只找在说明文件manual路径下的文件
-s:只找source源文件
-u:查找不在上述三个选项当中的其余特殊文件
Linux系统会将系统内的全部文件都记录在一个数据库文件里面,而当使用whereis或者是下面要说的locate时,会找到已经被删除掉的文件!并且也找不到最新的刚才建立的文件。
locate
格式:locate [-ir] keyword
参数:
-i:忽略大小写的差别;
-r:后面可接正则表达式的显示方式。
locate寻找的数据是由已建立的数据库/var/lib/mlocate/里面的数据所查找到的,因此不用直接再去硬盘当中访问数据。数据库的建立默认是天天执行一次(每一个distribution都不一样),因此当你新建文件后查找该文件,那么locate会告诉你“找不到”,由于必需要更新数据库。
updated命令会去读取/etc/updated.conf这个配置文件的设置,而后再去硬盘里进行查找文件名的操做,最后就更新整个数据库文件了。
find
格式:find [PATH] [option] [action]
参数:
1)、与时间有关的参数:共有-atime、-ctime与-mtime,下面以-mtime说明。
-mtime n:n为数字,意义为在n天以前的“一天以内”被更改过的文件;
-mtime +n:列出在n天以前(不含n天自己)被更改过的文件名;
-mtime -n:列出在n天以内(含n天自己)被更改过的文件名;
-newer file:file为一个存在的文件,列出比file还要新的文件名。
2)、与用户或用户组有关的参数:
-uid n:n为UID,是记录在/etc/passwd里面与帐号名称对应的数字;
-gid n:n为GID,记录在/etc/group中;
-user name:name为用户帐号名称;
-group name:name为用户组名;
-nouser:寻找文件的全部者不存在/etc/passwd中的文件;
-nogroup:寻找文件的全部用户组不存在/etc/group中的文件。
3)、与文件权限及名称有关的参数:
-name filename:查找文件名为filename的文件;
-size [+-] SIZE:查找比SIZE还好大(+)或小(-)的文件;
-type TYPE:查找文件的类型为TYPE的;
-perm mode:查找文件权限“恰好等于”mode的文件;
-perm -mode:查找文件权限“必需要所有包括mode的权限”的文件;
-perm +mode:查找文件权限“包含任一mode的权限”的文件。
4)、其余可进行的操做:
-exec command:command为其余命令,-exec后面可再接其余的命令来处理查找到的结果;
-print:将结果打印到屏幕上,这个操做是默认操做。
例如:find / -perm +7000 -exec ls -l {} \;
1) {}表明的是“由find找到的内容,find的结果会被放置在{}位置中”;
2) -exec一直到“\;”是关键字,表明find额外命令的开始(-exec)到结束(\;),在这中间的就是find命令内的额外命令,在本例中就是“ls -l {}”;
3) 由于“;”在bash环境下是有特殊意义的,所以利用反斜杠来转义。
1) 让用户能进入某目录成为“可工做目录”的基本权限是什么
可以使用的命令:例如cd等切换工做目录的命令
目录所需权限:用户对这个目录至少须要具备x的权限
额外需求:若是用户想要在这个目录内利用ls查阅文件名,则用户对此目录还须要r的权限
2) 用户在某个目录内读取一个文件的基本权限是什么
可以使用的命令:例如cat、more、less等
目录所需权限:用户对这个目录至少须要具备x权限
文件所需权限:用户对文件至少须要具备r的权限
3) 让用户能够修改一个文件的基本权限是什么
可以使用的命令:例如nano或vi编辑器等
目录所需权限:用户在该文件所在的目录至少要有x权限
文件所需权限:用户对该文件至少要有r,w权限
4) 让一个用户能够建立一个文件的基本权限是什么
目录所需权限:用户在该目录要具备w,x的权限,重点在w
5) 让用户进入某目录并执行该目录下的某个命令的基本权限是什么
目录所需权限:用户在该目录至少要有x的权限
文件所需权限:用户在该文件至少须要有x的权限