【Linux学习笔记三】文件目录管理

【注】文章中的所有截图均为centos下实验结果,亲测命令正确= ̄ω ̄=

【参考资料】《Linux从入门到精通(第2版)》刘忆智 等编著


*************************************************和团队共享文件***************************************************


1、和团队共享文件:创建工作目录,并创建一个用户组管理该目录。
     $ sudo groupadd workgroup            ##新建用户组命名为workgroup
     $ sudo useradd -G workgroup  lucy            ##新建用户lucy并归入workgroup组
     $ sudo passwd lucy            ##为lucy设置密码
     $ cd /home            ##切换目录
     $ sudo mkdir work            ##新建目录work
     $ sudo chgrp workgroup work/            ##将work所有权交给workgroup组
     $ sudo chmod g+rwx work/            ##赋予读、写、执行权限
     $ sudo chmod o-rwx work/            ##撤销其他用户的读、写、执行权限
     $ sudo chown lewis work/            ##目录的组长(所有者)
     $ su lewis            ##切换用户
     $ cd /home/work/            ##切换目录
     $ touch test            ##新建空文件
     $ su peter            ##切换用户
     cd /home/work/            ##切换目录
     $ rm test            ##删除文件
【Linux学习笔记三】文件目录管理_第1张图片
【Linux学习笔记三】文件目录管理_第2张图片
【转载请注明文章出处:http://blog.csdn.net/iamthezbl/article/details/51274266】
*************************************************建立文件和目录***************************************************

2、建立文件和目录
     $ mkdir document picture            ##新建两个目录
     $ mkdir ~/picture/temp            ##指定路径创建目录
     $ mkdir -p ~/tempx/job            ##-p选项用于创建完整的目录结构,tempx不存在时也可执行

    $ touch hello            ##建立空文件,另一个用途是更新文件的建立时间,在自动备份时很有用

*******************************************移动、复制和删除***********************************************

3、移动、复制和删除
     $ mv hello bin/            ##将hello移动到bin目录下(出现同名文件有覆盖危险)
     $ echo "Hello" > hello            ##重定向新建一个文件,将字符串Hello输入文件
     $ cat hello            ##显示hello文件内容
     $ mv -i hello test/            ##同名时询问是否覆盖
     $ mv -b hello test/            ##在目标文件的同名文件后加~避免覆盖
     $ mv hello~  hello_bak            ##重命名

     $ cp hello bin/            ##将hello复制到bin目录下(出现同名文件有覆盖危险)
     $ cp -i hello test/            ##同名时询问是否覆盖
     $ cp -b hello test/            ##在目标文件的同名文件后加~避免覆盖
     $ cp test/ bin/            ##cp会忽略文件夹
     $ cp -r test/ bin/            ##使用-r命令可以连同子目录及其中的文件一起复制
【Linux学习笔记三】文件目录管理_第3张图片

     $ rmdir remove            ##删除文件夹,但只有文件夹空时可用,一般用得较少
     $ rm test/*.php            ##删除文件
     $ rm -i test/hello            ##删除文件时给出提示,只读文件不写-i也会提示
     $ rm -f hello            ##对出现的提示默认回答y,慎用。
     $ rm -r test/            ##递归地删除目录下的内容,最后删除目录,慎用
【Linux学习笔记三】文件目录管理_第4张图片
【转载请注明文章出处: http://blog.csdn.net/iamthezbl/article/details/51274266

******************************************文件和目录的权限************************************************

4、文件和目录的权限
     Linux为三种用户准备了权限,分别为文件所有者(属主)、文件属组用户和其他人,另外还有拥有完整最高权限的root用户。文件的创建者自动成为文件的所有者,所有权的转让需要root权限。可以把文件交给一个组管理(属组)。属组也可以是不包含文件所有者的组,执行文件时,系统只关心属主权限,组权限对属主没有影响。
     需要设置读取、写入、执行三种权限,即 r、w、x,可执行文件分为两类,一是直接可以由CPU执行的二进制代码,另一类是Shell脚本程序。对目录而言,三种权限分别对应能否进入目录(执行),能否列出目录内容(读取),能否在目录中创建、删除和重命名文件(写入)。
     $ ls -l /bin/login           ##文件属性

     第一个字段一个字符:-  代表文件类型,这是一个普通文件;
     九个字符 rwx、r-x、r-x,分别代表属主、属组、其他人的读取、写入、执行权限,被禁用的权限用 - 表示;
     接着的3组权限位数字表示链接数目,此处1表示只有一个硬链接;
     三、四个字段分别表示文件的属主和属组,分别是root用户和root组;
     33064表示文件大小(字节);
     文件最后修改的日期、时间、完整路径。   
     $ ls -ld /etc/           ##目录的属性
     $ ls -l           ##当前目录下所有文件(不包括隐藏文件)的属性
【Linux学习笔记三】文件目录管理_第5张图片
     $ sudo chown lewis:root days          ##分别改变days文件的属主和属组,属组前必须有冒号,且前边和属主之间没空格
     $ sudo chown lewis days          ##改变属主
     $ sudo chown :root days          ##改变属组
     $ sudo chown -R lewis iso/          ##改变目录所有权
     $ sudo chgrp nogroup days          ##专门用来改变属组的语句,也有-R选项
     可以设置权限的用户组有:u 文件属主、g 文件属组、o 其他人、a 所有人。注意在用相等符号设置权限时,用户原本的权限不会被保留,只会更新语句中提到的权限,因此不能用相等语句修改部分权限,必须涉及对rwx的全部考量后再选择语句内容。
     $ sudo chmod u+x days          ##为属主增加执行权限
     $ sudo chmod a-x days          ##撤销所有人的执行权限
     $ sudo chmod ug=rw,o=r days          ##赋予属主和属组读写权限,其他人写权限
     $ sudo chmod o=u days          ##其他人的权限与属主相同
【Linux学习笔记三】文件目录管理_第6张图片
     用chmod助记符形式比较直观,但繁琐,9个位置上每个位置只有两种选择,可以用二进制表示,则3位2进制可以用1位8进制,3个8进制数就可以完成对三组权限的表示。其中1代表x,2代表w,4代表r(与实际顺序相反),只要将数字相加就可以代表多种权限。
     $ sudo chmod 774 days          ##赋予属主、属组读写执行权限,赋予其他人读权限
【转载请注明文章出处: http://blog.csdn.net/iamthezbl/article/details/51274266

************************************************文件类型****************************************************

5、文件类型
     Linux共有七种文件类型,ls -l 命令输出的第一项代表了文件类型:
     - 普通文件
     d 目录
     c 字符设备文件
     b 块设备文件
     s 本地域套接口
     p 有名管道
     l 符号链接
     Linux有两类设备文件:字符设备文件和块设备文件。字符设备指的是能够从它那里读取成字符序列的设备,如磁带和串行线路;块设备指的是用来存储数据并对其各部分提供同等访问权的设备,如磁盘。字符设备有时被称为顺序访问设备,块设备有时被称为随机访问设备。使用块设备,可以从磁盘的任何随机位置获取数据;而使用字符设备,必须按照数据发送的顺序从串行线路上获取。
     符号链接(也称软链接)有点像Windows里的快捷方式,用户可以用别名去访问一个文件。
     软链接需要使用带-s参数的ln命令来创建
     $ ln -s hello_bak hello          ##软链接:带 -s 的 ln 命令,取一个别名hello,删除别名不会影响原文件,但删除原文件后别名不再有意义
     $ ln -s ../tempx tem          ##也可用于目录的别名
     $ ln hello_bak2 hello_bak          ##硬链接:生成一个新文件互相关联,一个文件的改动同时会改动另一个,很少应用到
【Linux学习笔记三】文件目录管理_第7张图片
【转载请注明文章出处: http://blog.csdn.net/iamthezbl/article/details/51274266

*******************************************输入输出重定向和管道******************************************

6、输入输出重定向和管道
     重定向和管道是Shell的高级特性,允许用户人为改变程序获取输入和产生输出的位置。
     程序默认输出结果的地方为标准输出,一般为显示器,输出重定向把程序的输出转移到另一个地方去。
     $ ls > hello_bak          ##将输出存入文件hello_bak,若文件不存在会自动创建,若存在会删除内容重新写入
     $ ls >> hello_bak          ##想要保留原始内容,需要用 >> 重定向
【Linux学习笔记三】文件目录管理_第8张图片
【Linux学习笔记三】文件目录管理_第9张图片
     程序默认接收输入的地方为标准输入,通常指键盘。
     $ cat          ##输入cat后回车,系统会等待输入
     $ HELLO          ##每输入一行系统会将输入打印在屏幕上
     <Ctrl + D>          ##直到点击 Ctrl+D 结束
     $ cat < days          ##重定向符号支持从文件中读入
     $ cat days          ##文件名作为参数就可以实现这个功能,因此上一条语句很少用到
     $ cat << EOF          ##立即文件(here document):从键盘读入,遇到设置的终止符(此处为EOF)停止,然后一次性打印
     > HELLO          ##输入HELLO
     > EOF          ##输入终止符,停止读入,打印前边读取的内容
     $ cat << END >> hello          ##输入输出重定向结合使用,以 END 为终止符从键盘读入,将内容追加到 hello 文件后
【Linux学习笔记三】文件目录管理_第10张图片
【转载请注明文章出处:http://blog.csdn.net/iamthezbl/article/details/51274266
     管道将重定向更进一步,通过“ | ”,将一条命令输出连接到另一条命令输出,如下:
     $ ls | grep ay          ##首先用 ls 给出文件名列表, 管道接收输出并发送给 grep 命令,从这些输出中找出包含“ay” 的文件名并打印,也可以用多个管道连接出复杂的命令
【Linux学习笔记三】文件目录管理_第11张图片

*******************************************************END**************************************************

你可能感兴趣的:(linux,centos,shell,bash)