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

linux学习笔记-第四课-cp,mkdir,rm,mv,cat,tac,tail,head,文件属性,权限

2015-03-16 22:13 796 查看
一、文件和目录的操作

cp :复制文件和目录
①复制一个文件到目录下,格式:cp [文件] [目录]

[root@mylinux ~]# cp mylinux.txt /tmp/
[root@mylinux ~]# ls /tmp/*
/tmp/mylinux.txt
[root@mylinux ~]#
②复制多个文件到目录下,格式:cp [文件1] [文件2] [目录]

[root@mylinux ~]# cp mylinux.txt.1 mylinux.txt.2 /tmp
[root@mylinux ~]# ls /tmp/*
/tmp/mylinux.txt  /tmp/mylinux.txt.1  /tmp/mylinux.txt.2
[root@mylinux ~]#
③复制一个目录到另一个目录,连同源目录下的文件一起复制需要使用选项'r'或'R',即级联的意思

格式:cp -r [源目录] [目标目录]

[root@mylinux ~]# cp mylinux.d/ /tmp/
cp: 略过目录"mylinux.d/"
[root@mylinux ~]# cp -r mylinux.d/ /tmp/
[root@mylinux ~]# cd !$
cd /tmp/
[root@mylinux tmp]# ls
mylinux.d  mylinux.txt  mylinux.txt.1  mylinux.txt.2
[root@mylinux tmp]# ls mylinux.d
1.txt  2.txt  3.txt
[root@mylinux tmp]#
④特殊用法:当目标目录已存在要复制的文件,复制文件时,会提示是否覆盖,需要用户输入命令进行交互,如果不希望提示可以使用强制,即使用命令的绝对路径/bin/cp
[root@mylinux ~]# cp mylinux.txt /tmp
cp:是否覆盖"/tmp/mylinux.txt"? n
[root@mylinux ~]# /bin/cp mylinux.txt /tmp
[root@mylinux ~]#
当复制文件或目录时,需要连同源文件或目录的权限属性一起复制,需要使用选项:-p

mkdir : 创建目录
①mkdir [目录名字]
②需要创建一个目录中包含多个目录,有嵌套关系时,需要使用选项 :-p

[root@mylinux ~]# mkdir -p aaa/bbb/ccc
[root@mylinux ~]# ls aaa/
bbb
[root@mylinux ~]# ls aaa/bbb/
ccc
[root@mylinux ~]#


rmdir : 用于删除空目录,如果目录中含有文件,则无法删除,所以不常用

rm : 删除文件和目录

①删除文件的格式 :rm [文件名字]
②删除目录的格式 : rm -rf [目录]
-r 级联递归,将目录下的其他文件一并删除
-f 强制删除,删除文件时不要提示

rmdir与rm的区别:
rmdir 不能用于删除非空目录
rm 可以删除非空目录

mv :移动/重命名文件和目录

①移动(类似与windows下的剪切),将多个文件移动到目录下
格式 :mv [文件1] [文件2] [文件3] [目录]
[root@mylinux mylinux.d]# ls
1.txt  2.txt  3.txt
[root@mylinux mylinux.d]# mkdir 123/
[root@mylinux mylinux.d]# ls
123  1.txt  2.txt  3.txt
[root@mylinux mylinux.d]# mv 1.txt 2.txt 3.txt 123/
[root@mylinux mylinux.d]# ls
123
[root@mylinux mylinux.d]# cd 123/
[root@mylinux 123]# ls
1.txt  2.txt  3.txt
[root@mylinux 123]#
②修改文件或目录名字
格式 :mv [名字1] [名字2]
[root@mylinux mylinux.d]# ls
123
[root@mylinux mylinux.d]# mv 123/ 456/
[root@mylinux mylinux.d]# ls
456
[root@mylinux mylinux.d]# ls 456/
1.txt  2.txt  3.txt
[root@mylinux mylinux.d]#
③当移动文件到目录时,目录已含义同名文件,会提示是否覆盖,如果不希望提示,需要使用命令的绝对路径/bin/mv ,进行强制覆盖
[root@mylinux mylinux.d]# ls 456/
1.txt  2.txt  3.txt
[root@mylinux mylinux.d]# touch 1.txt
[root@mylinux mylinux.d]# ls
1.txt  456
[root@mylinux mylinux.d]# mv 1.txt 456/
mv:是否覆盖"456/1.txt"? n
[root@mylinux mylinux.d]# /bin/mv 1.txt 456/
[root@mylinux mylinux.d]# ls
456
[root@mylinux mylinux.d]#


二、文本处理相关命令
cat 将[文件]或标准输入组合输出到标准输出
选项 :-n 对输出的所有行编号
[root@mylinux ~]# cat -n /etc/passwd
1  root:x:0:0:root:/root:/bin/bash
2  bin:x:1:1:bin:/bin:/sbin/nologin
3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
4  adm:x:3:4:adm:/var/adm:/sbin/nologin
5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
-b 对非空输出行编号
[root@mylinux ~]# cat -b /etc/passwd
1  root:x:0:0:root:/root:/bin/bash
2  bin:x:1:1:bin:/bin:/sbin/nologin
3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
4  adm:x:3:4:adm:/var/adm:/sbin/nologin
5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
-E或者-A 在每行结束处显示"$"
[root@mylinux ~]# cat -E /etc/passwd
root:x:0:0:root:/root:/bin/bash$
bin:x:1:1:bin:/bin:/sbin/nologin$
daemon:x:2:2:daemon:/sbin:/sbin/nologin$
adm:x:3:4:adm:/var/adm:/sbin/nologin$
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin$


tac 将每个指定文件按行倒置并写到标准输出。与cat相反

head 显示每个指定文件的前10 行显示到标准输出。
选项 :-n 显示每个文件的前n行内容

[root@mylinux ~]# head -5 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@mylinux ~]#


tail 显示每个指定文件的最后10 行到标准输出。与head相反
选项 :-n 显示每个文件的后n行内容
[root@mylinux ~]# tail -5 passwd
radvd:x:75:75:radvd user:/:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
mylinux:x:500:500::/home/mylinux:/bin/bash
test007:x:501:501::/home/test007:/bin/bash
[root@mylinux ~]#
-f 用于即时显示的效果,把刚写入的数据立刻输出,一般用于动态查看日志
[root@mylinux ~]# tail -f passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
mylinux:x:500:500::/home/mylinux:/bin/bash
test007:x:501:501::/home/test007:/bin/bash


more 查看文件内容,当内容显示为满屏时暂停,按空格翻到下一屏内容,不支持回看,按‘q’退出

less,与more类似,但是less允许利用光标上下卷动文本内容进行浏览

查看文本操作常用键盘指令:
Page Up 、b <== 翻到上一页

Page Down 、Space <== 翻到下一页

G <== 移动到文本最后一页

1G 、g <== 移动到文本首页
/字符串 <== 在整个文本文件中查找字符串
n <== 向下一级再次检索
N <== 向上一级再次检索
q <== 退出

三、文件的属性
文件的属性用'ls -l'就可以查看
[root@mylinux ~]# ls -l
总用量 40
drwxr-xr-x  3 root root  4096 3月  14 12:33 aaa
-rw-------. 1 root root   943 2月  27 00:15 anaconda-ks.cfg
-rw-r--r--. 1 root root    70 2月  28 06:26 err.log
-rw-r--r--. 1 root root 12577 2月  27 00:15 install.log
-rw-r--r--. 1 root root  3482 2月  27 00:15 install.log.syslog
drwxr-xr-x  3 root root  4096 3月  14 13:01 mylinux.d
-rw-r--r--  1 root root     0 3月  14 11:39 mylinux.txt
-rw-r--r--  1 root root     0 3月  14 11:46 mylinux.txt.1
-rw-r--r--  1 root root     0 3月  14 11:46 mylinux.txt.2
-rw-r--r--  1 root root  1341 3月  15 10:00 passwd
[root@mylinux ~]#
我们单独拿出一行进行分析:




文件类型和权限




Linux文件类型:
d <== 目录文件
- <== 普通文件
l <== 链接文件(又分软连接和硬链接)
b <== 块设备文件(如磁盘等)
c <== 字符设备文件(如鼠标,键盘等)
s <== 套接字文件
p <== 管道文件
Linux文件权限:
每个文件都有三类用户的权限,即所属用户(所属主,'u')的权限,所属用户组(所属组,'g')的权限,和其他用户的权限,'o',每类用户都分别由‘r’‘w’‘x’,即‘读’‘写’‘执行’来控制

Linux文件链接数(即inode-索引节点)
上面例子中的inode数为‘3’,那么我们分析一下这个‘3’是怎么得出来的
(注:ls命令-i选项可以查看文件的inode号)
[root@mylinux ~]# ls -di aaa/                  # 查看目录aaa本身的inode号
134760 aaa/
[root@mylinux ~]# ls -ai aaa/                  # 查看目录aaa里的所有文件的inode号
134760 .  130563 ..  134763 bbb
[root@mylinux ~]# ls -ai aaa/bbb/              # 查看子目录bbb里的所有文件的inode号
134763 .  134760 ..  137274 ccc
[root@mylinux ~]# ls -ai aaa/bbb/ccc/          # 查看子目录ccc里的所有文件的inode号
137274 .  134763 ..
从上面的例子可以看到目录aaa的inode号共出现三次:
①目录本身
②目录aaa里的‘.’文件
③子目录bbb里的 ‘..’文件

所以目录aaa的inode共有3个

四、修改文件的属性和权限
chown 更改文件所属主和所属组
格式 :
①更改文件所属主,格式 :chown [新主名] [文件]

[root@mylinux ~]# ls -ld aaa/
drwxr-xr-x 3 root root 4096 3月  14 12:33 aaa/      #当前目录aaa的所属主为root
[root@mylinux ~]# chown mylinux aaa/                #把目录aaa的所属主改为mylinux
[root@mylinux ~]# !ls
ls -ld aaa/
drwxr-xr-x 3 mylinux root 4096 3月  14 12:33 aaa/   #当前目录aaa的所属主为mylinux
[root@mylinux ~]#
②更改文件所属主,格式 :chown :[新组名] [文件]
[root@mylinux ~]# ls -ld aaa/
d------rwx 3 mylinux root 4096 3月  14 12:33 aaa/   #当前目录aaa的所属组为root
[root@mylinux ~]# chown :mylinux aaa/               #把目录aaa的所属组改为mylinux
[root@mylinux ~]# !ls
ls -ld aaa/
d------rwx 3 mylinux mylinux 4096 3月  14 12:33 aaa/#当前目录aaa的所属组为mylinux
[root@mylinux ~]#
③更改文件所属主,及所属组,格式 :chown [新主名]:[新组名] [文件]

[root@mylinux ~]# ls -ld aaa/
drwxr-xr-x 3 root root 4096 3月  14 12:33 aaa/        #当前目录aaa的所属主和组均为root
[root@mylinux ~]# chown mylinux:mylinux aaa/          #把目录aaa的所属主和组改为mylinux
[root@mylinux ~]# !ls                                  和mylinux
ls -ld aaa/
drwxr-xr-x 3 mylinux mylinux 4096 3月  14 12:33 aaa/  #当前目录aaa的所属主和组均为mylinux
[root@mylinux ~]#
④更改目录及目录下文件的所属主,或所属组,需要用的选项 :-R 级联,递归
[root@mylinux ~]# ls -ld aaa/ aaa/bbb/                #目录aaa和其子目录bbb,所属主均为root
drwxr-xr-x 3 root root 4096 3月  14 12:33 aaa/
drwxr-xr-x 3 root root 4096 3月  14 12:33 aaa/bbb/
[root@mylinux ~]# chown -R mylinux aaa/               #更改aaa及其子目录bbb的所属主
[root@mylinux ~]# !ls
ls -ld aaa/ aaa/bbb/                                  #目录aaa和其子目录bbb,所属主已经为
drwxr-xr-x 3 mylinux root 4096 3月  14 12:33 aaa/      mylinux
drwxr-xr-x 3 mylinux root 4096 3月  14 12:33 aaa/bbb/
[root@mylinux ~]#


chgrp 修改文件所属组,因为chown的存在,所以chgrp并不常用

chmod 修改文件/目录的许可
'rwx'这3个字符用二进制数表示,被识别为2的n次方的形式。
所以'r'是2的2次方,'w'是2的1次方,'x'是2的0次方,
因此,rwx用二进制数为111,或十进制7表示
rwx rwx rwx = 111 111 111 = 777
rw- rw- rw- = 110 110 110 = 666
rwx --- --- = 111 000 000 = 700
‘u’代表所属用户
'g' 代表所属用户组
'o' 代表其他用户
'a' 代表所有用户
chmod u-x [文件/目录] 代表所属用户取出'x'的许可权限
chmod g+w [文件/目录] 代表所属用户组增加'w'的许可权限
[root@mylinux ~]# ls -ld aaa/
drwxr-xr-x 3 mylinux root 4096 3月  14 12:33 aaa/
[root@mylinux ~]# chmod u-x aaa/
[root@mylinux ~]# !ls
ls -ld aaa/
drw-r-xr-x 3 mylinux root 4096 3月  14 12:33 aaa/
[root@mylinux ~]# chmod g+w aaa/
[root@mylinux ~]# !ls
ls -ld aaa/
drw-rwxr-x 3 mylinux root 4096 3月  14 12:33 aaa/
[root@mylinux ~]#
当然亦可以使用数字

[root@mylinux ~]# !ls
ls -ld aaa/
drw-rwxr-x 3 mylinux root 4096 3月  14 12:33 aaa/
[root@mylinux ~]# chmod 700 aaa/
[root@mylinux ~]# !ls
ls -ld aaa/
drwx------ 3 mylinux root 4096 3月  14 12:33 aaa/
[root@mylinux ~]#


umask 权限掩码

当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。
umask 在用户 UID < 199 时,默认值为022,目录创建默认权限为777-022=755,文件创建默认权限为666-022=644。
在用户 UID > 199 时,默认值为002,目录创建默认权限为777-002=775,文件创建默认权限为666-002=664.
在linux中umask设置在/etc/bashrc中。

本内容由导师:阿铭提供技术支持:跟阿铭学linux 点这里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 文件 属性
相关文章推荐