第二周第一天任务
*日期:2017-05-23
1.5 文件查看命令
1.6 文件和目录属性
1.7 chmod命令
1.8 chown命令
权限部分是难点,多多练习,学会如何根据umask推算默认权限。
如果学过,要复习一下,加深印象。晚上主动汇报专贴,表示自己学了。
[TOC]
02.1.5 文件查看命令
cat 直接读取文件内容,从前向后查看;
cat -A 主要读取特殊文件,后面会一个$
符号,意思是这行的结束;注意:这里必须是大写 -A。
例如:
[root@bogon ~]#
[root@bogon ~]# ls
111 222 anaconda-ks.cfg install.log.syslog
123.txt 234 install.log
[root@bogon ~]# cat install.log
cat --help
[root@bogon ~]# cat --help
用法:cat [选项]... [文件]...
将[文件]或标准输入组合输出到标准输出。
-A, --show-all 等于-vET
-b, --number-nonblank 对非空输出行编号
-e 等于-vE
-E, --show-ends 在每行结束处显示"$"
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与-vT 等价
-T, --show-tabs 将跳格字符显示为^I
-u (被忽略)
-v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
--help 显示此帮助信息并退出
--version 显示版本信息并退出
如果没有指定文件,或者文件为"-",则从标准输入读取。
示例:
cat f - g 先输出f 的内容,然后输出标准输入的内容,最后输出g 的内容。
cat 将标准输入的内容复制到标准输出。
请向bug-coreutils@gnu.org 报告cat 的错误
GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
请向<http://translationproject.org/team/zh_CN.html> 报告cat 的翻译错误
要获取完整文档,请运行:info coreutils 'cat invocation'
[root@bogon ~]#
tac 直接读取文件内容,从后向前查看;
对比:
[root@bogon ~]# cat install.log
[root@bogon ~]# tac install.log
两个的显示顺序是相反的;
tac --help
[root@bogon ~]# tac --help
用法:tac [选项]... [文件]...
将每个指定文件按行倒置并写到标准输出。
如果不指定文件,或文件为"-",则从标准输入读取数据。
长选项必须使用的参数对于短选项时也是必需使用的。
-b, --before 在行前而非行尾添加分隔标志
-r, --regex 将分隔标志视作正则表达式来解析
-s, --separator=字符串 使用指定字符串代替换行作为分隔标志
--help 显示此帮助信息并退出
--version 显示版本信息并退出
请向bug-coreutils@gnu.org 报告tac 的错误
GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
请向<http://translationproject.org/team/zh_CN.html> 报告tac 的翻译错误
要获取完整文档,请运行:info coreutils 'tac invocation'
[root@bogon ~]#
more 只能向下翻,
空格可以一屏一屏翻,
回车是一行一行翻,
b向上翻页和f向下翻页
q键退出
例如:
[root@bogon ~]# cp /etc/init.d/iptables 1.txt
[root@bogon ~]# cat 1.txt
less
空格可以一屏一屏翻,
回车是一行一行翻,
j可以往下一行,
k可以向上一行,
Ctrl B 向上 一屏幕,
Ctrl F 向下 一屏幕
g 跳到最前面一行
G 跳到最后面一行
还可以搜索关键字,使用/内容 就可以高亮显示, n 向后 N向上 还可以?搜索 与/相反 退出使用q 或者exit b和f翻页
例如:
[root@bogon ~]# cat 1.txt
输入:/关键字
或者使用:“shift+?”
这两个的区别在与查找的方向不一样,
head 最前面的几行
Ctrl C 退出
例如:默认查看前10行:
[root@bogon ~]# head 1.txt
#!/bin/sh
#
# iptables Start iptables firewall
#
# chkconfig: 2345 08 92
# description: Starts, stops and saves iptables firewall
#
# config: /etc/sysconfig/iptables
# config: /etc/sysconfig/iptables-config
#
[root@bogon ~]# head -3 1.txt
#!/bin/sh
#
# iptables Start iptables firewall
[root@bogon ~]#
tail 最后面的几行
Ctrl C 退出
例如:查看后5行
[root@bogon ~]# tail 1.txt
save
RETVAL=$?
;;
*)
echo $"Usage: ${IPTABLES} {start|stop|reload|restart|condrestart|status|panic|save}"
RETVAL=2
;;
esac
exit $RETVAL
[root@bogon ~]# tail -5 1.txt
RETVAL=2
;;
esac
exit $RETVAL
[root@bogon ~]#
tail -f可以动态的查看一个内容。CTRL + C 就可以退出了
例如:需要两个终端;
使用一个终端查看1.txt文档执行命令:tail -f 1.txt
另一终端不断执行追加重定向执行命令:echo "Holle World!" >> 1.txt
02.1.6 文件和目录属性
例如:
[root@bogon ~]# ls -l
总用量 88
drwxr-xr-x 2 root root 4096 5月 20 03:26 111
-rw-r--r-- 1 root root 21845 5月 20 03:25 123.txt
-rwxr-xr-x 1 root root 10688 5月 20 04:12 1.txt
drwxr-xr-x 2 root root 4096 5月 20 03:26 222
drwxr-xr-x 2 root root 4096 5月 20 03:26 234
-rw-------. 1 root root 1161 2月 21 21:44 anaconda-ks.cfg
-rw-r--r--. 1 root root 21845 2月 21 21:44 install.log
-rw-r--r--. 1 root root 5079 2月 21 21:44 install.log.syslog
[root@bogon ~]#
第一列 共十一位
第一个 表示文件类型;
第一列共有十一位。
第一位是:
c表示字符设备
b表示是块设备
l 表示软连接文件
s表示一种特有文件,本地通信文件
d表示目录文件
-表示普通文件
p 表示管道文件,也是通信文件
第二位到第十个是文件的权限 r读 w写 x执行 -无
前三个是表示文件(user)本身的权限 rwx 顺序不变。
中间三个表示文件(group)所属组的权限 。
后面三个表示文件(others)除属组以外的权限。
第十一位 是 . 平时很少使用。
第二列
表示用多少个目录或者文件占用的节点数(inode)
一般情况文件都是1 ;
目录和下面的子目录数有关。
文件的话显示有几文件使用了同一个inode号;
使用ls -li
可以像是inode号
第三列 表示该文件的所有者
第四列 表示该文件的所属组
第五列 表示该文件的大小
第六、七、八列 为该文件的创建时间或者修改时间。
那么如何分别是创建的时间还是修改的时间呢!可以根据创建或修改的时间查找文件吗?
第九列 表示文件名称。
02.1.7 chmod命令
chmod 更改权限
chmod --help
[root@bogon ~]# chmod --help
用法:chmod [选项]... 模式[,模式]... 文件...
或:chmod [选项]... 八进制模式 文件...
或:chmod [选项]... --reference=参考文件 文件...
将每个文件的模式更改为指定值。
-c, --changes 类似 --verbose,但只在有更改时才显示结果
--no-preserve-root 不特殊对待根目录(默认)
--preserve-root 禁止对根目录进行递归操作
-f, --silent, --quiet 去除大部份的错误信息
-v, --verbose 为处理的所有文件显示诊断信息
--reference=参考文件 使用指定参考文件的模式,而非自行指定权限模式
-R, --recursive 以递归方式更改所有的文件及子目录
--help 显示此帮助信息并退出
--version 显示版本信息并退出
每种 MODE 都应属于这类形式"[ugoa]*([-+=]([rwxXst]*|[ugo]))+"。
请向bug-coreutils@gnu.org 报告chmod 的错误
GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
请向<http://translationproject.org/team/zh_CN.html> 报告chmod 的翻译错误
要获取完整文档,请运行:info coreutils 'chmod invocation'
[root@bogon ~]#
r为4,w为2,x为1,-为0
组合:
- rwx 表示 7
- rw- 表示 6
- r-x 表示 5
- r-- 表示 4
- -wx 表示 3
- -w- 表示 2
- --x 表示 1
- --- 表示 0
例如:
[root@bogon ~]# ls -l 1.txt
-rwxr-xr-x 1 root root 10688 5月 20 04:12 1.txt
[root@bogon ~]# chmod 744 1.txt
[root@bogon ~]# ls -l 1.txt
-rwxr--r-- 1 root root 10688 5月 20 04:12 1.txt
[root@bogon ~]#
也可以这样写:
[root@bogon ~]# chmod u=rwx,g=r--,o=r-- 1.txt
[root@bogon ~]# chmod u-x 1.txt
[root@bogon ~]# chmod u+x,g+w,g-r 1.txt
[root@bogon ~]# chmod a+r 1.txt
这里第一行表示指定属主可读可写可执行,属组可读,其他可读;第二行表示给属主取消可执行权限;第三行表示给属主增加可执行权限,给属组增加可读权限,给其他用户取消可读权限;第四行表示给所有人都增加可读权限;
-R 权限的继承选项
例如:
[root@bogon ~]# tree 111
111
├── 123.txt
└── 234
└── 22.txt
1 directory, 2 files
[root@bogon ~]# ls -l 111
总用量 28
-rw-r--r-- 1 root root 21845 5月 20 03:26 123.txt
drwxr-xr-x 2 root root 4096 5月 20 05:26 234
[root@bogon ~]# ls -l 111/234
总用量 24
-rw-r--r-- 1 root root 21845 5月 20 03:26 22.txt
[root@bogon ~]# chmod -R 700 111
[root@bogon ~]# ls -l 111
总用量 28
-rwx------ 1 root root 21845 5月 20 03:26 123.txt
drwx------ 2 root root 4096 5月 20 05:26 234
[root@bogon ~]# ls -l 111/234
总用量 24
-rwx------ 1 root root 21845 5月 20 03:26 22.txt
[root@bogon ~]#
chmod -R 权限 文件夹 可以让文件夹内的文件及子文件夹都继承指定权限;
umask 用户默认目录和文件的权限
用来规定默认情况下的目录和权限,一般情况目录权限值为755,普通文件权限值为644,
例如:
[root@bogon ~]# whoami
root
[root@bogon ~]# umask
0022
[root@bogon ~]# mkdir 1112
[root@bogon ~]# ls -ld
dr-xr-x---. 6 root root 4096 5月 20 05:34 .
[root@bogon ~]# touch 12.txt
[root@bogon ~]# ls -l 12.txt
-rw-r--r-- 1 root root 0 5月 20 05:35 12.txt
[root@bogon ~]#
修改umask的语法:
umask xxx (这里的xxx代表三个数字)
例如:
[root@bogon ~]# umask
0022
[root@bogon ~]# umask 011
[root@bogon ~]# umask
0011
[root@bogon ~]#
(1)若用户建立为普通文件,则预设没有可执行权限,只有rw两个权限。最大为666(-rw-rw-rw)。
(2)若用户建立为目录,则预设所有权限均开放,即777(drwxrwxrwx)。
注意:umask可以在/etch/bashrc里面更改,预设情况下,root的umask为022,而一般使用者则为002,因为可写权限非常重要,因此预设会去掉写权限。
当umask=033是目录权限是777-033为744;文件权限是666-033。这样是错误的,实际上目录权限是"rwxrwxrwx"-"----wx-wx"=“rwxr--r--”为744。文件权限是"rw-rw-rw-"-"----wx-wx"=“rw-r--r--”为644。
02.1.8 chown命令
修改文件的属主和属组
chown --help
[root@bogon ~]# chown --help
用法:chown [选项]... [所有者][:[组]] 文件...
或:chown [选项]... --reference=参考文件 文件...
更改每个文件的所有者和/或所属组。
当使用 --referebce 参数时,将文件的所有者和所属组更改为与指定参考文件相同。
-c, --changes 类似 verbose,但只在有更改时才显示结果
--dereference 受影响的是符号链接所指示的对象,而非符号链接本身
-h, --no-dereference 会影响符号链接本身,而非符号链接所指示的目的地
(当系统支持更改符号链接的所有者时,此选项才有用)
--from=当前所有者:当前所属组
只当每个文件的所有者和组符合选项所指定时才更改所
有者和组。其中一个可以省略,这时已省略的属性就不
需要符合原有的属性。
--no-preserve-root 不特殊对待"/"(默认值)
--preserve-root 不允许在"/"上递归操作
-f, --silent, --quiet 去除大部份的错误信息
--reference=参考文件 使用参考文件的所属组,而非指定值
-R, --recursive 递归处理所有的文件及子目录
-v, --verbose 为处理的所有文件显示诊断信息
以下选项是在指定了 -R 选项时被用于设置如何穿越目录结构体系。
如果您指定了多于一个选项,那么只有最后一个会生效。
-H 如果命令行参数是一个通到目录的符号链接,则遍历符号链接
-L 遍历每一个遇到的通到目录的符号链接
-P 不遍历任何符号链接(默认)
--help 显示此帮助信息并退出
--version 显示版本信息并退出
如果没有指定所有者,则不会更改。 所属组若没有指定也不会更改,但当加上
":"时 GROUP 会更改为指定所有者的主要组。所有者和所属组可以是数字或名称。
示例:
chown root /u 将 /u 的属主更改为"root"。
chown root:staff /u 和上面类似,但同时也将其属组更改为"staff"。
chown -hR root /u 将 /u 及其子目录下所有文件的属主更改为"root"。
请向bug-coreutils@gnu.org 报告chown 的错误
GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
请向<http://translationproject.org/team/zh_CN.html> 报告chown 的翻译错误
要获取完整文档,请运行:info coreutils 'chown invocation'
[root@bogon ~]#
具体使用方法:
[root@bogon ~]# useradd byk
[root@bogon ~]# ls -l 12.txt
-rw-r--r-- 1 root root 0 5月 20 05:35 12.txt
[root@bogon ~]# chown byk 12.txt
[root@bogon ~]# ls -l 12.txt
-rw-r--r-- 1 byk root 0 5月 20 05:35 12.txt
[root@bogon ~]# groupadd byk
groupadd: group 'byk' already exists
[root@bogon ~]# chown :byk 12.txt
[root@bogon ~]# ls -l 12.txt
-rw-r--r-- 1 byk byk 0 5月 20 05:35 12.txt
[root@bogon ~]# chown root:root 12.txt
[root@bogon ~]# ls -l 12.txt
-rw-r--r-- 1 root root 0 5月 20 05:35 12.txt
[root@bogon ~]# chown byk.byk 12.txt
[root@bogon ~]# ls -l 12.txt
-rw-r--r-- 1 byk byk 0 5月 20 05:35 12.txt
[root@bogon ~]#
chown 文件的所有者以及所属组
例如:
#useradd yyy (字符) 创建用户
#chown yyy (字符) 更改文件拥有者
#groupadd xxx (字符) 创建属组
#chown :xxx (字符) 更改文件所属组
#chown yyy:xxx (yyy是字符,xxx是字符) 同时更改文件拥有者yyy和文件所属组xxx
或者使用
#chown yyy.xxx (yyy是字符,xxx是字符) 同时更改文件拥有者yyy和文件所属组xxx
chown -R 表示更改目录下所有文件及目录的所有者和所属组。
同时更改所属组也可以使用chgrp
语法: chgrp [参数][组名] [文件名]
参数有-R 选项只作用于目录,作用是级联更改,即不仅更改当前目录,连目录或者文件全部更改。
chown -R 参数有-R 选项只作用于目录,作用是级联更改,即不仅更改当前目录,连目录或者文件全部更改。
历史命令
!ls
表示执行历史命令里面离本次最近的命令以ls开头的历史命令。
!数字
表示执行历史命令里面编号命令
网友评论