1.pwd显示目前所在路径,用法pwd [-P]
当使用pwd -P的时候,如果当前目录是链接目录,则显示被链接到的目录.
2.mkdir 创建新的目录,用法mkdir [-mp] 目录名
-p表示可以递归创建目录,否则一次只能创建一个.
-m 表示创建目录的时候可以不按照默认的权限进行分配,而是可以自己设置
3.rmdir 删除空的目录,用法 rmdir [-p] 目录名称
-p 表示可以递归删除空目录,但是如果删除到一个目录中含有非空的目录就停止.如下,到test1目录的时候有abc文件就只 删除了空目录test2/test3/test4
二、目录与文件操作
准备:
1.ls 查看文件和目录,用法ls [-aAdfFhilnrRSt] 目录名称
ls [--color=never/auto/always 或者 --full-time 或者 --time=atime/ctime] 目录名称
-a 列出隐藏文件
-A 列出隐藏文件但是不包括. 和..
-d 只是列出目录本身,而不是列出目录下的文件
-f 直接列出结果,无序的(默认是按文件名排序)
-F 根据文件和目录信息给予附加的数据结构 *表示可执行文件、/表示目录、=表示套接字、|表示管道
-h 将文件容量以易读的方式列出来
-i 列出Inode号码,表示有多少其他文件需要依赖该文件
-l 列出长的数据串
-n 列出UID和GID而不是用户名和组名的英文/中文名,而是以数字形式,如下图的500
-r 将排序结果反序(相对于默认排序)
-R 递归列出子目录下的文件
-S 以文件的容量排序列出
-t 以时间来排序列出
--color=never 不依据文件特性给予颜色显示
--color=always 显示颜色
--color=atuo 依据系统自动显示
--full-time 以完整的形式显示日期
--time=atime 输出访问时间
--time=ctime 输出修改时间
对于-和--注意不要和文件名中的冲突,连着使用是 ls -alF --color=never .
2.cp 复制,用法 cp[-adfilprsu] 多个源文件 目录文件
-a 相当于-pdr
-d 如果源文件是链接文件,那么复制链接文件属性而不是该链接文件本身
-f 强制
-i 如果文件已经存在,提示
-l 创建文件的硬链接,而不是文件本身
-p 复制文件的时候不是使用默认属性,而是文件所带的属性,备份常用.第一个是root,第二个是-p后test2目录所有者是Tom
-r 递归复制
-s 创建符号软链接,而不是复制文件本身
-u 如果目标文件比源文件就旧则更新
3.rm 删除文件和目录,用法 rm [-fir] 多个文件或者目录名称
-f 强制
-i 互动提示
-r 递归删除
4.mv [-fir] 多个源文件 目录文件,和rm参数用法类似,可以用这个命令重命名
三、文件操作
1.cat 直接查看文件内容,用法 cat [-AbEnTv]
-A 相当于-vET
-b 列出行号,不对空行列行号
-E 行结尾显示$
-n 打印行号,空行也打印
-T 将Tab显示^I
-v 显示看不出的特殊符号
2.tac 反向列出内容和cat相反,用法tac 文件名
3.nl 添加行号打印输出,用法 nl [-bnw] 文件
-b => -b a相当于cat -n ; -b t相当于cat -b
-n=> -n ln行号在左边显示
=> -n rn行号在右边显示
=> -n rz行号在右边显示且含有前导0
=> -w 数字 将前导0设置固定长度,默认是6
4.more 翻页查看
Space:向下翻页 Enter:向下移动一行 /字符串:查询字符串(没有高亮显示) :f在屏幕底部输出当前文件名和最后一行的行号 q离开 b向上翻页
5.less 一页页翻看
Space:向下翻页 Enter:向下移动一行 /字符串:向下查询字符串 ?字符串:向上查询字符串(会高亮显示) n重复前一个查询 N反向重复前一个查询 q:离开
这个命令十分有用,其中man就是内部调用该命令
6.head 取出数据前n行,用法 head [-n number] 文件名
-n 打印前number行,number为-n表示除了最后n行其余的打印
7.tail 取出后面n行,用法tail [-n number] 文件名
-n 打印后面number行,如果number为+n表示第n行之后的数据
tail和head结合,打印出任意指定范围的数据,而不是从开始或者结尾开始,以下是打印从第2行道第4行的内容
8.od 打印二进制文件,用法 od [-t TYPE] 文件名
-t => -t a 使用默认字符输出
=> -t c 使用ASCII输出
=> -t d[size]/f[size]/x[size] 分别是以十进制,浮点数,十六进制来输出
=> -t o[size] 以八进制来输出
前面的数字是十六进制表示大小为2*8字节为一行
9. touch修改文的时间或者创建新文件,用法 touch [-acdmt] 文件名
-a 修改访问时间(当文件内容被取用会更新,比如cat)
-c 修改状态时间(当文件的权限和属性修改后更新)
-d 后面再加上--date=日期,使用自定义日期而不是默认日期
-m 修改修改时间(当文件内容被修改后更新)
-t 后面再接时间,和-d类似
四、默认权限、隐藏权限和特殊权限
1.文件和目录的默认权限是当文件或者目录被创建的时候被赋予一种默认的权限,这是由umask来决定的
umask后面数字0002第一个0没什么特别作用,后面三个数字002表示对所有者和组不取消权限,但是对其他人取消w权限.
可以使用umask 数字来更改默认权限,如上面用umask 022来表示,当创建新的文件或者目录的时候,只有所有者不取消权限,但是对组员和其他人取消w权限.注意文件的初始权限是没有x的.因此对于文件首先取消x权限,然后再取消umask设置的权限.
2.在系统安全方面,对于文件还存在隐藏属性,可以通过chattr设置,用法chattr [+-=][ASacdistu] 文件或者目录名称
A 文件的访问时间不能被修改
S 进行文件修改会同步
a 文件不能被写,即使root也不可以,否则报错
c 自动压缩,读取的时候自动解压缩
d 文件不能被备份
i 文件不能被删除改名修改或者设置链接,连root也不可以。要先-i才行
s 删除文件会直接从硬盘上删除
u 删除文件后内容孩子硬盘中
对于已经设置的隐藏权限,可以用lsattr [-adR] 文件名或者目录名来查看.其中-a d R和ls类似
3.特殊权限包括SUID,SGID,SBIT
前两个权限仅仅对二进制程序有效.首先执行者具有x权限,然后会在执行过程中拥有该程序所有者(SUID)的权限,且只在该程序执行过程中有效。如果是SGID则是临时拥有组权限。最后是仅仅对目录有效.首先有wx权限,然后再该目录下该用户创建的文件或目录,只有自己和root能删除或者修改。
如何设置呢,和前面rwx类似,SUID=4,SGID=2,SBIT=1.
使用chmod 6755 test后其中四个数字中第一个表示SUID SGID和SBIT的组合数,也就是在之前的基础上加了一个数字,之前设置3个其中第一个默认是0.这样三种用户的x就替换成对应6的s.如果加入了SBIT则替换成t。如果没有x权限,则对于位置变成大小的S或者T.比如上面的test权限为rwsr-sr-x.(也就是三种用户的三个x变成对于的SUID SGID和SBIT)
和rwx类似,也可以用+-=赋值.比如chmod u=rwxs,go=x test 则test权限为rws--x--x
五、命令查询
1.which 在path环境变量中查找命令所在的位置
2.whereis 查找特定的文件名,利用数据库
3.locate 类似2
4. find 多个目录 [-atime/-ctime/mtime] n
列出其中n表示在n到n+1这一天的文件,如果n=+a表示列出a天之前的文件,如果n=-a表示列出近a天之内的文件
find 多个目录 [-uid n/-gid n/-user name/-group name/-nouser/-nogroup]
查找符合uid/gid/user/group或者不在/etc/passwd或者不在/etc/group中的文件
find 多个目录 [-name filename/-size [+-]SIZE/-type TYPE/-perm mode/-perm -mode/-perm +mode]
查找符合文件名/大小超过SIZE(c表示byte,k表示1024bytes)/或者类型为TYPE的/权限恰好是mode的(表示为3个数字)/权限包括mode的/权限包含mode的
find 多个目录 [options] -exec 其他命令 {} \;
{}表示find搜索到结果,其他命令对{}操作,以\;结束.其中\是转义符号,比如在主目录下,将test5_*.c文件移动主目录的上一层中.
另加: ================================
basename 目录名 获取目录名的最后文件名
dirname 目录名 获取目录名除最后文件前面的目录
cp 文件的需要文件的r权限
file 文件名可以查看当前文件的类型,比如ASCII文本、二进制文本或者data文本