鸟哥私房菜 学习笔记 第七章

1.    特殊的目录:

.   代表此层目录

..  代表上一层目录

-       代表前一个工作目录

~   代表目前用户身份所在的主文件夹

~account   代表account这个用户的主文件夹

根目录的上一层(..)与根目录自己(.)是同一个目录。

2.处理目录的命令:

cd :切换目录  如:

cd  ~apple   去到apple这个用户的主文件夹

cd  ~          回到自己的主文件夹

cd              回到自己的主文件夹

cd  ..          去到上层目录

cd  -           回到刚才的目录

cd  /var/spool/mail   直接指定要去的完整路径名称

cd  ../mqueue          相对路径的写法

 

 

pwd:显示当前目录  如:

pwd  [-P]  参数-P:显示出当前的路径,而非使用连接(link)路径

 

 

mkdir:新建一个新的目录 :

mkdir [-mp] 目录名称

-m 配置文件案的权限,直接设置,不看默认权限。

-p 帮助你直接将所需要目录递归创建起来。

mkdir  –p   test1/test2/test3/test4

mkdir  –m   711   test2

 

 

rmdir:删除一个空的目录 如:

rmdir [-p] 目录名称 

-p :连同上层“空的”目录也一起删除

rmdir   -p   test1/test2/test3/test4

 

2.    环境变量PATH:

 

echo $PATH  显示出当前用户包含的目录

如果需要执行的命令不在环境变量PATH的目录内,则必须使用绝对路径来执行命令。

加入目录:

PATH=”$PATH”:/root   /root目录加入环境变量

不建议将本目录“.”加入PATH的查询目录中。

不同身份用户 PATH不同,默认能够随意执行的命令不同。

使用绝对路径或相对路径直接指定某个命令的文件名来执行,比查询PATH正确。

命令应该放在正确的目录下,执行才比较方便。

 

4.查看文件与目录:ls

ls [-option] 目录名称

-a 全部文件连同隐藏文件一起列出来

-d 仅列出目录本身,而不是列出目录内的文件数据

-l  列出长数据串,包含文件的属性与权限等数据

--color=never 不要依据文件特性给予颜色显示

--color=always 显示颜色

--full-time  以完整时间模式输出

 

当执行ls 时,默认显示的只有非隐藏文件的文件名,以文件名进行排序及文件名代表的颜色显示。

 

很多distribution默认将ll(L的小写)设置为等同于ls  -l 

 

5.复制、删除与移动:cprmmv

cp:

cp[-abfilprsu] 源文件  目标文件

-a  相当于-pdr的意思( cp -d -R --preserve=all

-d  若源文件为连接文件的属性,则复制连接文件属性而非文件本身

-i   若目标文件已经存在时,覆盖时会先询问操作的进行

-l    进行硬连接的连接文件创建,而非复制文件本身

-p  连同文件的属性一起复制过去,而非使用默认属性(等于 cp --preserve=mode,ownership,timestamps

-r  递归持续复制,用于目录的复制行为(-R, -r, --recursive          copy directories recursively ,三者等同)

-s   复制成为符号连接文件,即快捷方式文件

-u  若目标文件比源文件旧才更新

默认条件中,cp的源文件与目的文件的权限是不同的,目的文件的所有者通常是命令操作者本身。

如果没有加上任何参数,cp复制的是源文件,而非连接文件的属性。

将主文件夹的.bashrc.bash_history复制到/tmp下面:

cp   ~/.bashrc  ~/.bash_history   /tmp

//可以将多个数据一次复制到同一个目录去,最后面一定是目录

 

rm:移除文件或目录

rm  [-fir] 文件或目录

-f  force,忽略不存在文件,不会出现警告

-i   删除前会询问用户是否操作

-r   递归删除,最常用在目录的删除

rm  -i   bashrc*

//星号代表0到无穷多个任意字符

rmdir只能删除空目录

应该使用rm:

rm  -r /tmp/etc

如果身份是root,则默认已经加入了 –i  参数,如果不想在删除的时候按y (确认),可以这样做:

/rm  -r  /tmp/etc

 

删除一个带有 - 开头的文件:

rm  -aaa-

//因为“-”是参数,所以系统误判了

可以这样解决:

rm   ./-aaa-

或者

rm   --  -aaa-

 

mv:移动文件与目录,或更名

mv [-fiu]  source   destination

mv [-options]  source1  source2  source3  source4  …directory

-f  强制,如果文件已存在,不会询问而直接覆盖

-i  若目标文件已存在,询问是否覆盖

-u  若目标文件已存在,且source比较新,才会更新

mv   文件名   目录    (将文件移到到某个目录中)

mv   文件名1  文件名2  (将文件名1改名为文件名2

mv    文件名1  文件名2  文件名3 …    目录  (将多个文件移动到目录中去)

 

6.取得路径的文件名和目录名

basename  /etc/sysconfig/network   取得最后的文件名

 dirname  /etc/sysconfig/network     取得目录名

 

7.文件内容查阅

1)直接查看文件内容

cat:

cat [-AbEnTv]

-A  相当于vET,可以列出一些特殊字符,而不是空白而已

-b  列出行号,仅针对非空白行做行号显示,空白行不标行号

-E  将结尾的断行字符$显示出来

-n  打印出行号,连同空白行也有行号

-T  [Tab]按键以^I显示出来

-v  列出看不出来的特殊字符

注意:$linux下的断行字符

 

tac 反向列示

由最后一行到第一行反向在屏幕上显示出来、

 

nl 添加行号打印

nl [-bnw] 文件

-b :指定行号指定方式,主要有两种:

      -b  a:表示不论是否为空行,也同样列出行号

      -b  t:如果有空行,空的那一行不用列出行号

-n :列出行号表示的方法,有三种:

      -n ln:行号在屏幕的最左方显示

      -n rn:行号在自己字段的最右方显示,且不加0

      -n rz:行号在自己字段的最右方显示,且加0

-w :行号字段占用的位数:

nl  -b  a  -n  rz  -w  3

 

(2)可翻页查看:

more(一页一页翻动)

more  /etc/man.config

 

空格键:代表向下翻一页

Enter : 代表向下滚动一行

/字符串:代表在这个显示的内容当中,向下查询“字符串“这个关键字

f   :立刻显示出文件名以及目前显示的行数

q    :代表立刻离开more,不再显示该文件内容

b[ctrl]+b :代表往回翻页,不过这操作只对文件有用,对管道无用

 

 

less(一页一页翻动)

more更加灵活,more无法向前翻,只能往后面看,若使用了less,就可以使用上下等按键的功能来往前往后翻看文件。

空格键:向下翻一页

[PageDown]:向下翻动一页

[PageUp]:向上翻动一页

/字符串:向下查询“字符串”的功能

?字符串:向上查询“字符串”的功能

n: 重复前一个查询

N:反向重复前一个查询

q: 离开less这个程序

 

3)数据选取:

head  取出前面几行

head  [-n  number]  文件

-n  后接数字,代表显示前几行的意思

默认情况中,显示前10行。

若要显示前20,则需:

head  -n  20  /etc/man.config 

如果-n后接的是负数,例如-100,意思是列出前面所有行数,但是不包括后面100行。

 

tail(取出后面几行)

tail –n  +100  /etc/man.config

意思是100行以后的都会列出来。

tail  -f  /var/log/messages

由于/var/log/messages随时都有数据写入,你想要让该文件有数据写入时就会立刻显示到屏幕上,就利用-f这个参数。它可以一直检测这个文件,新加入的数据都会被显示到屏幕上,直到你按下[ctrl]+c才会离开

 

4)非纯文件:od

od  [-t Type]  文件

-t 后面可接各种类型的输出

      a 利用默认的字符来输出

      c 使用ASCII字符来输出

      d [size] 利用十进制来输出数据、每个数占用size bytes

      f  [size]利用浮点数来输出数据,每个数占用size bytes

      o  [size]利用八进制来输出数据,每个数占用 size bytes

      x   [size]利用十六进制来输出数据,每个数占用size bytes

 

8.修改文件时间或创建新文件:touch

三个时间参数:

mtime :当文件的内容数据更改时,就会更新这个时间,内容数据指的是文件的内容,而不是文件的属性和权限

ctime:当该文件的状态改变时,就会更新这个时间。比如权限或属性改变都会更新这个时间。

atime:当该文件内容被取用时,就会更新这个读取时间。

默认情况下,ls显示出来的是该文件的mtime,也就是这个文件的内容上次被更改的时间。

ls  -l  /etc/man.config

ls  -l  --time=atime   /etc/man.config

touch  [-acdmt] 文件

-a:仅修改访问时间

-c:仅修改文件的时间,若该文件不存在则不创建新文件

-d:后面可以接欲修改的日期而不用目前的日期,也可以使用—date=“日期或时间“

-m:仅修改mtime

-t:后面可以接欲修改的时间而不用目前时间,格式为[YYMMDDhhmm]

默认情况下,touch后面有接文件时,则该文件的三个时间都会更新为目前的时间,若该文件不存在,则会主动创建一个新的空的文件。

ll bashrc; ll  --time=atime  bashrc; ll   -time=ctime  bashrc

//分号代表连续命令的执行

touch  -d  “2 days ago”  文件名

touch   -t  1012171526  文件名

以上两种可修改atimemtime.但是ctime并没有改变

 

9.文件与目录的默认权限umask

查看umask方式有两种:

umask    以数字形态显示

umask  -S        以符号类型显示

文件的默认权限为666(无可执行权限x,目录的默认权限为777

umask的分数是指该默认值需要减掉的权限

设置umask,

umask  002

 

10.文件的隐藏属性chattrlsattr(只能在Ext2/Ext3的文件系统上生效)

chattr 设置文件的隐藏属性

chattr  [+-=] [ASacdistu]

+:增加某个特殊参数

-:删除某个特殊参数

=:仅有后面接的参数

a:当设置了a之后,该文件将只能增加数据,而且不能删除页不能修改数据,只有root才能设置这个属性

i : 可以让文件不能被删除,改名,设置连接也无法写入或添加数据,对于系统安全性有很大的帮助,只有root才能设置。

 

lsattr  显示文件隐藏属性

lsattr  [-adR]

-a:将隐藏文件的属性也列出来

-d:如果连接的是目录,仅列出目录本身的属性而非目录内的文件名

-R:连同目录的数据也一起列出来

 

11.文件特殊权限:SUIDSGIDSBIT

1SetUID   -rwsr-xr-x

只对二进制程序有效

执行者需具有x权限

本权限仅在运行该程序的过程中有效

执行者将具有该程序所有者的权限

对于目录无效

以下这个例子帮助理解:

Linux系统中,所有账号和密码都记录在/etc/shadow这个文件里,这个 文件权限为-r-------- 1 root root,意思是这个文件仅有root可读且仅有root可以强制写入。但是一般账户要如何修改自己的密码呢?用apple这个账户执行passwd这个命令,发现可以修改密码。这就是特殊权限SUID的作用:

a.    apple对于/usr/bin/passwd-rwsr-xr-x)这个程序来说是具有x权限,表示apple能执行passwd;

b.    passwd的拥有者是root这个账户

c.    apple执行passwd的过程中,会暂时获得root的权限。

d.    /etc/shadow可以被apple所执行的passwd所修改

 

2SetGID   drwx--sr-x

s标志在文件所有者的x项目为SUID,s在用户组的x时则称为Set GID,SGID

对二进制程序有效

需具备x权限

执行者在执行过程将会获得该程序用户组的支持

可针对目录或文件来设置

当一个目录设置了SGID的权限后,将具有以下功能:

a.用户若对此目录具有rx的权限时,该用户能够进入此目录

b.用户在此目录下的有效用户组将会变成该目录的用户组

c.若用户在此目录下具有w权限,则用户所创建的新文件的用户组与此目录的用户组相同

3StickyBit  drwxrwxrwt

只对目录有效

其作用是:

当用户对于此目录具有wx权限,即具有写入的权限时,当用户在该目录下创建文件或目录时,仅自己与root才有权利删除该文件

如果将A目录加上SBIT的权限项目时,则用户A只能对自己所创建的文件或目录进行删除,重命名,移动等操作,而无法删除他人的文件。

 

12.设置SUID SGID SBIT

4SUID,2SGID,1SBIT

chmod   4755  文件名

chmod   u=rwxs,go=x  文件名

chmod   g+s,o+t  文件名

大写的ST:代表空的权限。当user,group,others都没有x这个可执行标志时。

 

13.查看文件类型:file

file  文件的绝对路径或相对路径

 

14.命令与文件的查询:

1)脚本文件名的查询:

which 寻找可执行文件

which  [-a]  command

-a将所有由PATH目录中可以找到的命令均列出,而不只是第一个被找到命令的名称

which是根据PATH这个环境变量所规范的路径去查找的。

2)文件名的查找:

whereis locate 寻找特定文件,利用数据库查找,可能查找到已删除的文件

whereis  [-bmsu]  文件或目录

-b  只查找二进制文件

-m  只找说明文件manual路径下的文件

-s   只找源文件

-u  查找不在上述三种文件中的其他文件

 

locate  [-ir]  keyword

-i  忽略大小写的差异

-r  后面可接正则表达式的显示方式

 

whereislocate是由已创建的数据库/var/lib/mlocate/里面的数据所查找到的。

更新数据库:updateb

 

find  [PATH]  [option]  [action]

时间参数:

-mtime  n:n为数字,意思是n天之前的“一天以内”被更改过的文件

-mtime  +n: 列出n天之前(不含n天本身)被更改过的文件名

-mtime  -n:列出在n天内(含n天本身)给更改过的文件名

-newer file: file为一存在文件,列出比file还要新的文件名

find   /ect  -newer/etc/passwd

find   /   -mtime  0

 

与用户和用户组有关的参数:

-uid  n :n是数字,是用户的账户ID,记录在/etc/passwd

-gid  n :n为数字,是用户组名的ID,记录在/etc/group

-user name:name为用户账户名称

-group  name:用户组名称

-nouser:寻找文件所有者不在/etc/passwd的人

 -nogroup:寻找用户组不在/etc/group的文件

 

与文件权限和名字有关的参数:

-name  filename:查找文件名为filename的文件

-size [+-] SIZE:查找比size还要大(+)或小(-)的文件c:代表byte    k:代表1024bytes

-type TYPE:查找文件类型为TYPE的文件

-perm  mode:查找文件权限等于mode的文件

-perm  -mode:查找文件权限必须要全部包括mode的权限

-perm  +mode:查找文件权限包含任一mode的权限

find  /   -perm  +7000    7000即是---s—s—t,+7000即查找包含st的文件,

                                   -7000既是查找含有---s—s—t的所有三个权限

 

其他参数:

-exec command  command为其他命令,exec后可以接其他命令

-print  :将结果打印到屏幕上,是默认操作

 

find  / -perm  +7000  -exec  ls  -l {}  /;

{}代表是由find找到的内容,find的结果将会放置到{}中。exec一直到”/;”是关键字。代表find额外命令的开始(-exec)到结束(/;)这中间就是额外命令

利用通配符查找:

find  /etc  -name ‘*httpd*’

查找包含“httpd”的文件

16.权限和命令的关系

1)进入目录成为工作目录的权限:

目录所需权限x

如果想利用ls查询文件名,则需要目录r的权限

2)在目录读取文件的权限:

对目录至少要有x权限

对文件至少要有r权限

3)修改文件的基本权限:

所在目录至少需要x权限

文件至少需要rw权限

4)创建文件的权限:

目录所需权限:w x

5)执行目录下的命令:

对目录至少要x权限

对文件至少要有x权限

 

 

 

你可能感兴趣的:(鸟哥私房菜 学习笔记 第七章)