文件的权限
ls -al ----->隐藏文件会以 .号开头
ls -ld :显示目录自身属性
ls -i 显示文件的索引号----每个文件都有一个对应的号码
ls -r 逆序显示
dr-xr-xr-x. 2 root root 12288 Nov 2 2012 .
lrwxrwxrwx. 1 root root 17 Oct 20 2012 accton -> ../../sbin/accton
文件类型 与权限 | 链接占用的 节点(i-node) | 文件所有者 | 文件所有者 的用户组 | 文件大小 | 时间戳/最近修改时间 | 文件名称 |
dr-xr-xr-x. | 2 | root | root | 12288 | Nov 2 2012 | . |
lrwxrwxrwx. | 1 | root | root | 17 | Oct 20 | ../../sbin/accton |
(1)其中第1位表示文件类型,有以下几种:
-: 表示普通文件
d: 目录
b: 块特殊文件
c: 字符特殊文件
l: 符号链接文件
p: 命名管道文件FIFO
s: 套接字文件
(2) r:表示可读; w:表示可写;x:表示可执行;
( 3 ) 时间戳:最近一次被修改的时间
访问时间、修改时间、改变时间(元数据)
stat 文件/文件夹名----查看文件及文件夹状态(最近一次访问、修改、改变时间)
touch -m -t 年 月 日 文件名 (把文件的修改时间改为自己定义时间)
"." 代表当前目录
".." 代表当前目录的上一级目录
cd - 在前一个目录和当前目录进行切换
type:显示指定命令属于那种类型, ...a shell builtir 这个命令为内部,显示路径为外部。
环境变量:定义用户使用的环境!“命名的内存空间,name=jre-->在内存中划出一块空间,起名为name.而空间中放的数据叫jre,放数据的过程叫“变量赋值”。变量--->把存放的数据进行更改”。
printenv-----显示环境变量
PATH:使用冒号分割的一大堆路径,当执行一个外部命令时,他会在这些路径中依次进行查找,当查找到后会产生一个缓存,记录你这条命令对应的路径,用“hash”去查看这些缓存。
man手册
命令格式:man ...(数字) 文件名/命令
1: 关于用户命令帮助(/bin /usr/bin /usr/local/bin)
2: 系统调用
3:库用户
4: 特殊文件(设备文件)
5:文件格式(配置文件的语法)
6:游戏
7:杂项
8:管理命令(/sbin /usr/sbin /usr/local/sbin)
man手册中的符号:<>必选 [ ] 可选 .....可以出现多次 | 多选一 { } 分组
man手册章节:
NAME:命令名称,简要说明
SYNOPSIS:用法,用法说明,可用选项
DESCRIPTIC:命令功能的详细描述,包括每一个选项的意义
OPTIONS:说明每一个选项的意义
PILES:此命令相关的配置文件
EXAMPLES:使用示例
文件属性
/dev :设备文件:分为块设备和字符设备。设备文件中有特殊文件。
块设备:随机访问,无所谓放到什么地方,我都可以找到,,一块一块的访问。例:硬盘、内存。
字符设备:线性访问,一个字符一个字符的输入,例:鼠标、键盘、显示器。
特殊文件:背景为黑色或字体颜色是淡蓝色,没有文件大小,他们直接存储为元数据,而且是作为设备 的访问入口存在的。
/lib :库文件和 内核模块文件(/lib/modules)。
库文件:被调用的一些封装好的某些功能,库文件不能单独执行,因为他没有程序的执行入口。
库文件分为两种,静态库和动态库。
动态库(动态链接库/共享库):“.so” 共享对象。第一个程序启动以后,他如果用到某个共享库,程序直接把共享库载入内存中使用就行了,在内存中存放共享库。启动第二个程序时,第二个程序也用到这个共享库时,他就不用再去载入了,因为内存中有,拿来直接用就可以了。所以库文件在内存中只用存储一个即可,大大节约了内存的空间。
静态库:“.a” 。直接链接到程序的地址空间中去,而且是作为程序的一部分运行,所以静态方式便于程序的单个文件管理。
目录属性
/media: 挂载点目录,通常用于挂载移动设备。把某个设备跟当前文件系统上的某一个目录相建立关联关系的过程叫挂载过程。
/mnt : 通常用于挂载额外的临时文件系统,如硬盘。这两个目录所挂载的不强求,随便。
/opt: 可选目录。早期安装第三方软件安装目录。
/proc: 伪文件系统。这里面本来是没有任何文件,但系统启动起来就有了文件,这里面存放的是内核的映射文件。这里面大多数都是一些内核的可调参数和统计数据。
/sys: 伪文件系统。跟硬件设备相关的属性映射文件,通常实现硬件管理。
/tmp: 临时文件目录,若系统中这么文件一个月没有被访问,系统会自动清除里面的文件。
/var: 可变化的文件,
/bin:可执行文件,用户本身所使用命令
/sbin:管理员本身所使用的命令
/usr:存放只读文件
/usr/bin 、/usr/sbin:跟系统自身启动相关的可执行命令和相关程序。
/usr/lib: 跟系统启动能够提供基本的功能的一些库文件。
/uer/local(/usr/local/bin、 /usr/local/sbin、 /usr/local/lib):提供外围程序其他功能。
文件及目录的命令规则
1.文件名长度不能超过255个字符
2.不能使用斜线当文件名(斜线:路径分隔符、目录名、换行符)
3.严格区分大小写
tree 文件夹名 ----查看目录树
file 文件名 ----文件内容的类型
id
功能说明:显示用户的ID,以及所属群组的ID。
补充说明:id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。
参 数:
-g或--group 显示用户所属群组的ID。
-G或--groups 显示用户所属附加群组的ID。
-n或--name 显示用户,所属群组或附加群组的名称。
-r或--real 显示实际ID。
-u或--user 显示用户ID。
管理文件类型命令
cp :复制和移动文件。法则:一个文件到一个文件、多个文件到一个目录。
cp -r/R :复制目录.
cp -p: 复制时,保持原有文件的属主、属组、时间戳。
cp -a:归档复制,常用于备份,复制时打包,用到的时候在展开。
cp -f: 强制复制。
cat :查看文本文件
cat -E: 显示每一行的行结束符。对于Linux系统而言,所有的文本文件的行结束符是$。
对于Windows系统而言,文本文件的行结束符$和回车符。
cat -n:查看文本文件时,显示行号。使用pg up/pgdn进行翻页,但有时候看不到文本首部。
less: 查看文本,功能比较强大。使用方法和man手册一样, q退出。
more: 查看文本,翻到最后一页自动退出。
head: 查看文本前几行,tail:查看文本后几行。用 - n 后面加数字几行/-数字,。默认是10.
tail - f : 查看文件尾部不退出。等待显示后续追加至此文件的新内容。
文本处理命令(必须掌握的三大利器:sed/grep/awk)
cut :查看文本
- d : 指定字符分隔符,默认是空格。例:cut -d : 分隔符是:
- f : 指定要显示的字段,例:cut -f1: 指定显示第1段。cut -f 1,3:第一和第三段.
1-3:第一到第三段 .
sort:文本排序。默认为升序排序,从第一个字符进行排序。
- n:按数值大小排序
- r:倒叙,-r -n:按数值大小进行降序
- t:字段分隔符,按字段进行排序
- k: 以那个字段为关键字进行排序。例:sort -t : -k3 -n,以冒号为分隔符,从第三段进行数值大小排序。
- u: 排序后相同的行只显示一次。(只有相邻的重复行)
uniq: 报告那个行是重复的。(必须是相邻的行才能筛选出)
- c :显示文件中行重复的次数
- d :只显示重复的行
wc : 文本统计,可以统计一个文本中多少行、字符(空格也算)、单词。
- l : 只统计行
- m : 只统计字符
tr : 字符处理命令,用于转换或删除字符
权限
对文件来讲:
r :可读。可以使用命令查看文件内容
w:可写。可以编辑和删除文件
x:可执行。可以在命令提示符下当作命令交给内核运行
对目录来讲:
r:可以对目录执行ls以列出内部的文件
w:可以在此目录中创建文件
x:可以使用cd切换进此目录,也可以使用ls -al 查看内部文件的详细信息
每三位IE一体,分别是属主、属组、其他。本来是4位,第一位是特殊权限
转换表
八进制 二进制
0 000 - - -:无权限
1 001 - - x:执行
2 010 - w -:写
3 011 - w x:写、执行
4 100 r - - :只读
5 101 r - x :读和执行
6 110 r w - :读写
7 111 r w x :读写执行
755:rwxr-xr-x
r w - r - x - - r:651
用户:UID,/etc/passwd 用户名解析成UID号的解析库,也可以叫用户信息库。
用户密码不在信息库中,在/etc/shadow中。
组:GID, /etc/group 组解析成GID号的解析库,
组的密码不在信息库中,在/etc/gshadow中。
用户分类(ID号永远为0)、普通用户(UID号1-65535。系统用户1-499,一般用户500-60000)
注:在企业的红帽系统中,用32位2进制表示ID号,能达到4亿多个!
/etc/passwd :
用户名 密码(x密码占用符) 用户id 基本组id 用户注释信息 家目录 用户默认shell
/etc/shells : 当前系统支持的所有shell类型。
/etc/shadow :
登录名 加密密码(!!为锁定,不予许登录) 密码修改时间 密码最短使用时间 密码最长使用时间 警告时间
宽限期 有效期 保留字段
用户管理命令:
useradd :添加用户 userdel :删除用户
修改密码:passwd +用户名
id -u :取得用户UID号
修改文件及文件夹属主属组:修改属主(chown +用户名+文件名)、修改属组(chgrp+组名+文件名)。
修改文件及文件夹权限:
chmod: 修改文件的权限, -R递归
u(用户)、g(组)、o(其他)、a(全部)
例:chmod u/g/a/o -/+ r/w/x 文件名
管理员与普通用户创建文件的权限不相同?
umask:反掩码,通过这个命令可以查看用户的反掩码,管理员和用户umask不一样!
通常创建文件和文件夹时:
创建文件:六六六 - umask
创建文件夹:777 - umask
文件默认一定不能有执行权限,若算出结果有执行,加一!!!
站在用户登录的角度来说,shell的类型:
登陆式shell
正常输入账号密码登录
su - 登录
非登陆式shell
su 用户名
图形终端下打开的窗口
自动执行的shell脚本
bash的配置文件:
全局配置
/etc/profile、 /etc/profile.d/*.sh、 /etc/bashrc
个人配置
~/ .bash_profile 、 ~/.bash_rc
profile类的文件:
设定环境变量。作用范围越小,越有效。注意!当环境变量在个人和全局中都设置了,以个人的设置为准
一登录就运行命令或脚本。
bashrc类的文件:
设定本地变量
定义命令别名
登陆式shell如何读取配置文件?
/etc/profile ---> /etc/profile.d/*.sh ---> ~/.bash_profile ---> ~/.bashrc ---> /etc/bashrc
非登陆式shell如何读取配置文件?
~/.bashec ---> /etc/bashrc ---> /etc/profile.d/*.sh
若想设置个人shell,设置~/.bashrc 设置全局的用/etc/bash.rc
实验:alias设置命令别名,然后登出,再返回,无效。再登录设置用户家目录下的.bashrc,重新登录,完成!
实验:让用户每次登陆时都显示一串字符,设置~/bash_profile使用echo写一句话,保存,重新登录!
特殊权限(s)
chmod u/g/o/a -/+ s 文件名
若文件本身原来就有执行权限,则SUID就是小写的s,否则就是大写的S。
SUID:运行某程序,相应进程的属主是程序文件自身的属主,而不是启动者的属主。
SGID:运行某程序,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组。
sticky:在一个公共目录,每一个人都可以创建文件,删除自己的文件,但不能删除别人的文件,通常用于目录。
chmod o + t 目录名 给目录添加sticky权限
chmod o - t 目录名 给目录去除sticky权限
001 只有sticky权限
110 有SUID和GUID权限
chmod 1755 文件名 :第一位为特殊权限,表示001,也就是sticky权限。
l/o重定向管理
l/o重定向:改变数据的输入输出来源(包括错误输出)
>:输出重定向(覆盖输出):执行两次数据输出到同一个文件中,最后一次输出会覆盖第一次的数据。
>>:追加输出,执行两次数据输出到同一个文件中,不会覆盖,会在原有数据后面追加!
小技巧:使用set -C (开启),set +C(关闭)。禁止对已存在的文件使用覆盖重定向。
若想覆盖,又不想关闭这个功能,只需在>|(在大于号下加‘|’)----强制覆盖。
2>:重定向错误输出
2>>:追加方式重定向错误输出
ls /etc > /jj 2> /jj2 :若正确输出到jj文件中,若错误输出到jj2文件中!
&>:重定向标准输出或错误输出至同一文件中。
&>>:追加方式
<:输入重定向。
<<:在此处生成文档。
cat >> /jj << END :通常用于写脚本。把<<END中所写的内容添加到/jj!
END结束符:写完内容后,最后把END写出来,这个文档结束。
管道
命令1 | 命令2 | 命令3 |
命令1的结果是命令2的输入,命令2的结果是命令3的输入,可以是多重的!
管道:前一个命令的输出,作为后一个命令的输入!
tee :可以理解为一个输入,两个输出,从标准输入读取数据,并且发送至标准输出和文件!
能实现将一个数据同时输出到屏幕和文件中
查找文件类型命令
locate :(一般不用)在全系统查找文件的命令。非精确匹配,查找是根据全系统文件数据库进行的。速度快!
updatedb: 手动生成数据库,但是速度非常慢
find :实时查找、精确、遍历指定目录中的所有文件完成查找。---支持多项查找。
格式: find 查找路径 查找标准 文件名 查找到以后的处理动作
查找路径:默认是在当前目录
超找标准:默认为指定路径下的所有文件
处理动作:默认显示到屏幕上
匹配标准:
- ls :显示文件大小
- name 文件名 :对文件名做精确匹配
支持文件名通配:
* 任意长度的任意字符
?单个任意字符
- iname 文件名 :文件名匹配时不区分大小写
- regex :基于正则表达式模式来进行查找
- user 用户名 :根据文件的属主来查找文件
- group 组名 :根据文件的属组来查找文件
- uid UID号 :若一个文件的属主用户删除之后,文件的属主会变成原先删除用户的ID号!
- gid GID号 :根据GID号查找
- nouser :查找没有属主的文件
- nogroup: 查找没有属组的文件
- type :根据文件类型来查找
文件类型:
f: 表示普通文件
d: 目录
b: 块特殊文件
c: 字符特殊文件
l: 符号链接文件
p: 命名管道文件FIFO
s: 套接字文件
- size : 根据文件大小来查找文件 单位为(K/M/G)
+10k/-10k/10k : 大于10k/小于10k/精确10k
组合条件查找:
-a :与条件,两个条件同时满足
-o :或条件
-not :非条件
实验: 查找tmp目录下没有属主和文件类型为目录的文件,详细显示
find /tmp -nouser -a -type d -ls
实验: 查找tmp目录下,属主不是user1 还不是user2的文件
find /tmp -not -user user1 -a -not -user use2
find /tmp -not \(-user user1 -a -not -user use2\)
根据时间戳查找:
-mtime : 最近一次文件的修改时间
-ctime : 最近一次文件的改变时间
-atime : 最近一次文件的访问时间
+ :几天之内访问过
- :至少有几天没有访问过
没有添加+/-号后面直接跟数字,说明刚好在那一天访问过。