您的位置:首页 > 运维架构 > Linux

Linux常用命令(二)之权限管理、文件搜索、帮助、压缩命令及管道

2017-02-16 21:26 423 查看
Linux常用命令的第二部分,文件管理命令可以参照之前的博客http://blog.csdn.net/megustas_jjc/article/details/55209678

权限管理命令

文件权限深入解读

在(一)中提到过rwx的含义,但是我们还需深入理解,明白其真正的含义和权限,对于文件和目录,rwx权限是不同的,尤其是目录的权限往往是被忽略的:



对于目录,其权限和对应的操作:

r-ls

w-touch、mkdir、rm

x-cd

chmod——权限管理命令

英文原意:change the permissions mode of a file

功能:改变文件或目录权限

语法:

chmod [{ugo}{+-=}{rwx}] [文件或目录]
chmod [mode=421] [文件或目录]


注:+表示增加权限,-表示减少权限,=表示授权

例子:

chmod g+rw file # 向file的文件权限中加入用户组可读写权限


原来一个文件a,假设其权限-rw-r–r–,通过
chmod o-r
,将others的r权限去掉,文件a的权限变成了-rw-r—–

通过数字方式,其对应关系是:r-4,w-2,x-1,则权限rxwr-xr-x对应的数字是755(每三个一组)

chgrp——改变所属组

英文原意:change file group ownership

所在路径:/bin/chgrp

语法: chgrp [用户组] [文件或目录]

例子:
chgrp adm file1
改变文件file1的所属组为adm

chown——改变所有者

可以使用useradd [用户名]和passwd [用户名]来填加用户和密码

语法: chgrp [用户] [文件或目录]

例子:
chown nobody file1
改变文件file1的所有者为nobody

umask——显示、设置文件的缺省权限

语法:umask 或 umask -S

-S:以rwx形式显示新建文件或目录缺省权限



0代表特殊权限位

022代表用户权限位,权限掩码值,并不是最终权限,需要用777减去掩码值,即777-022=755

linux权限规则:缺省创建的文件不能授予可执行x权限,这个权限可以屏蔽很多木马与病毒

文件搜索命令

which——显示系统命令所在目录

命令所在路径:/usr/bin/which

语法:which [命令名]

例子:
which ls
就可以找到命令ls所在的路径

linux系统中多有对象都是文件,也就是说命令也是文件,因此通过which定位命令所在的目录,也可以确定出命令的权限

find——查找文件或目录

原则:查找占用的系统资源越少越好

语法:find [搜索路径] [搜寻关键字]

搜索路径:即查找范围,尽量不要在根目录查找,因为在根目录查找就相当于查找整个硬盘,会占用大量系统资源和时间

find是一个复杂的命令,在此仅仅通过实例来介绍最常见的选项:

-name 通过文件名来查找

find /etc -name init  #在etc目录下查找文件名为init的文件


注意:与windows不同,windows通过关键字例如init进行查找,会将带有init的文件全部查找出来,而Linux中,仅仅会列出文件名匹配为init的文件

通配符*:匹配任意字符,例如以init开头的文件可以表示为:
init*


find /etc -name init*   #列出所有以init开头的文件


find /etc -name *init*   #列出所有名字包含init的文件


通配符?:匹配单个字符

find /etc -name init??? #init后三个不确定


在/etc下查找inittab文件并显示其详细

-size 通过文件大小来查找

注:一个数据块512字节=0.5KB

100MB=102400KB=204800block

+表示大于,-表示小于,什么都不写表示等于(一般用不到,因为很难记住每个文件的大小)

find / -size +204800  #在根目录查找大于100MB的文件


-user 通过文件所有者来查找

find / -user sam  #在目录下查找所有者为sam的文件


-ctime 根据时间值查找

1、天ctime、atime、mtime

2、分钟cmin、amin、mmin

c表示change,改变,表示文件的属性被修改过,例如所有者,所属组,权限,可以通过ls -l来查看文件的属性

a表示access,访问,表示文件被浏览过,例如cat,more等

m表示modify,修改,表示文件的内容被改过

-表示之内,-ctime -1表示1天之内

+表示超过,-ctime +1表示超过一天

例如,/etc目录下2小时之内,内容被修改过的文件:

find /etc -mmim -120


find命令的连接符

-a and 逻辑与

在/etc下查找大于80MB小于100MB的文件

find /etc -size +163840 -a -size -204800


-o or 逻辑或

find /etc -name inittab -o -size +2048000


-exec

固定格式:find …… -exec 命令 {} \;

{}表示find查询的结果

\表示转义符,使一些符号和命令使用其本身的含义

;表示语句的结束

例如,在/etc下查找inittab文件并显示其详细信息:

find /etc -name inittab -exec ls -l {} \;


locate——寻找文件或目录

英文原义:list files in database

locate的搜索速度特别快,因为并不是在硬盘中进行文件搜索,而是在database中进行搜索,因此有时没有及时更新数据库可能找不到,一般要与updatedb指令(执行权限为root)结合使用(系统也会自动定期更新数据库)。

语法:locate [搜索关键字]

grep——搜索字串匹配的行并输出

例如,输出/etc/services文件中带有ftp的行:

grep ftp /etc/services


帮助命令

man——获得帮助信息

man命令会调用more命令进行显示、浏览帮助文档

例如,查看ls命令的帮助信息:

man ls


例如,查看配置文件services的帮助信息

man services


man会优先查看命令的帮助,优先级高于配置文件

info——获得帮助信息

UNIX系统中没有此命令,只是浏览方式和信息的呈现形式上不同于man,并没有太大的区别

whatis——获得索引的简短说明信息

即获得一个命令的最简单用途,即做什么用的

语法:whatis [任何关键字]

查看配置文件的内容:apropos [配置文件名称]

压缩解压命令

windows可以解压所有linux的压缩文件,但是反过来并不一定可以,在此介绍一些Linux中常用的压缩格式和压缩命令

gzip命令——压缩文件.gz格式

特点:

(1)只能压缩文件,不能压缩目录,与windows rar不同,windows rar任何都可以压缩

(2)不保留源文件,压缩之后仅留下压缩文件

例如经过

cd /test
ls


操作之后发现有newfile4文件,我们对其进行压缩

gzip newfile4


gunzip命令——解压.gz格式的文件

继续上述例子:

gunzip newfile4.gz


tar命令——压缩解压目命令

打包(可以压缩目录)

语法:tar 选项 [目录]

选项:

-c:产生.tar打包文件

-v:显示详细信息

-f:指定压缩后的文件名

-z:打包同时压缩

压缩后的文件格式:.tar.gz(cat是无法浏览的),可以通过file来显示文件类型

假设通过ls指令我们发现有一个newdir目录,将目录newdir打包并压缩,生成一个newdir.tar.gz文件(打包后的文件名可以自定义)

tar -zcf newdir.tar.gz newdir


注意,有的UNIX并不支持打包并压缩,我们可以分步进行

先打包成tar包

tar -cf newdir4.tar newdir4


再进行压缩

gzip newdir4.tar


解包

会将文件解压到当前目录下

语法:tar 选项 [文件名]

选项:

-x:解包.tar文件

-v:显示详细信息

-f:指定解压文件

-z:解压缩

tar -zxf newdir4.tar.gz


分步进行:

gunzip newdir.tar.gz
tar -xf newdir.tar


windows与Linux通过的格式:zip,可以使用zip指令进行压缩,并且zip指令也可以压缩目录,并且zip会保留源文件

zip语法:zip 选项 [压缩后的文件名] [要进行压缩的文件或目录]

注意:压缩目录需要加上-r的选项

zip services.zip /etc/services #压缩文件
zip -r test.zip /test #压缩目录


解压使用unzip即可

语法: unzip [压缩文件]

Linux的压缩比是非常惊人的,强于windows,尤其是bzip2指令

管道

管道:将一个命令的输出传送给另一个命令,作为另一个命令的输入

使用方法:命令1|命令2|命令3……|命令n

例如:

ls -l /etc | more
ls -l /etc |grep init


命令替换符

命令替换:将一个命令的输出作为另一个命令的参数

格式为:



将命令2的结果作为命令1的参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  权限 搜索 帮助 压缩