文件处理命令
命令格式
命令【-选项】【参数】
例如:ls -la /etc
说明:1)个别命令使用不遵循此格式
2)当有多个选项,可以写在一起
3)简化选项与完整选项 -a等价于--all 简化的一般用-,完整的一般用--
目录处理命令ls
ls(list)
命令所在路径:/bin/ls
执行权限:所有用户
功能描述:显示目录文件
语法: ls [-ald] [文件或目录]
-a all,显示所有文件,包括隐藏文件(以.开头的文件是隐藏文件,要隐藏一个文件直接改文件名,前面加.)
-l long,显示详细信息
详细信息包含七种信息:
1)- 表示该文件的类型是一个文件,d开头表示这是一个目录,l开头表示这是一个软链接
rw------- 不同用户对该文件的访问权限(r可读,w可写,x可执行)。前三个rw-表示所有者的访问权限,中间三个---表示用户组的访问权限,后三个---表示其他人的访问权限;-表示该类用户没有该访问权限,如rw-,表示该类用户对该文件可执行读写,但不可执行
Linux中用户与文件之间有三种关系:
所有者u(user),文件的创建者,一个文件只能有一个所有者,但是所有者的身份可以变更
用户组g(group),一个用户的集合
其他人o(other),除所有者和用户组的其他用户
2) 1 文件的硬链接总数,表示文件被引用的次数
3) root 文件所有者
4) root 文件用户组
5) 1280 文件大小,单位字节
6) Mar 27 04:50 文件最近一次被修改的时间
7) anaconda-ks.cfg 文件名或目录名
-d directory,查看目录属性,显示当前目录本身而不显示目录的内容,-d和-l选项一般会一起使用,用于查看某一目录的详细信息
-h human,这是一个通用命令,为了显示的人性化而设计,如
文件大小以KB为单位显示,显示更加人性化
-i 显示目录下文件的i node结点
目录处理命令
1.命令名称:mkdir(make directories)
命令所在路径:/bin/mkdir
执行权限:所有用户
语法:mkdir -p[目录名]
功能描述:创建新目录
-p 递归创建,例如,mkdir -p /tmp/book/xiyou,如果book目录本身不存在,会先创建book目录,再创建xiyou子目录
也可以同时创建多个目录,mkdir -p /tmp/book/xiyou /tmp/book/sanguo
注意:不要在系统关键目录下随便创建目录,可以在自己的用户目录或者/tmp下创建
2.命令名称:cd(change directory)
命令所在路径:shell内置命令
执行权限:所有用户
语法描述:cd[目录]
功能描述:切换目录
cd .. 切换到上层目录
cd. 当前目录
3.命令名称:pwd(print working directory)
命令所在路径:/bin/pwd
执行权限:所有用户
语法:pwd
功能描述:显示当前目录的绝对路径
4.命令名称:rmdir(remove empty directories)
命令所在路径:/bin/rmdir
执行权限:所有用户
功能描述:删除空目录
5.命令名称:cp(copy)
命令所在路径:/bin/cp
执行权限:所有用户
功能描述:复制文件或目录
语法:cp [-rp] [原文件或目录][目标目录]
可以一次复制多个文件,如cp /root/install.log /root/install.log.syslog /tmp
复制之后给文件或目录重命名,cp /root/install.log /tmp/book/installed.log,文件复制后重命名为installed.log
-r 复制目录
cp -r /tmp/book/xiyou /root,复制xiyou目录到/tmp目录下
-p 保留文件属性
cp -p /root/install.log /tmp/book/xiyou,复制后两个文件属性一致
两条文件详细信息一致,如果不用-p选项,文件操作时间不会一样
6.命令名称:mv(move)
命令所在路径:/bin/mv
执行权限:所有用户
功能描述:剪切文件、改名
语法:mv[原文件或目录][目标目录]
mv不像cp命令需要选项,且也可以同时操作多个文件或目录
mv也可以剪切之后改名,与cp命令格式一样,如果剪切的目录是同一目录,就是执行了改名操作,如mv sanguo shuihu
7.命令名称:rm(remove)
命令所在路径:/bin/rm
执行权限:所有用户
功能描述:删除文件
语法:rm [-rf] [文件或目录]
-r 删除目录
-i 强制确认
-f 强制删除
如果一个目录下有很多文件,要删除这个目录,可以加-rf选项,略过对每个文件的删除询问确认操作
文件处理命令
1.命令名称:touch
命令所在路径:/bin/touch
执行权限:所有用户
功能描述:创建空文件
语法:touch [文件名]
理论上命名没有限制,但是命名过于奇葩会引发不可预知的错误和麻烦;如:Windows文件名中允许空格出现,Program Files,但是Linux中使用命令touch Program Files,会创建两个文件Program和Files文件;如果非要在文件命中出现空格,用双引号把文件名括起来,touch "Program Files",这样操作起来很麻烦,不推荐文件名中出现空格
touch命名还可以用来更改文件的修改时间,而不改变文件的内容,语法touch [已存在的文件],如果只想改变文件的访问时间,使用-a选项,touch -a [已存在文件]
ls -l 命令只会显示文件被修改的时间,ls -l --time=atime能够显示文件被访问时间
2.命令名称:cat
命令所在路径:/bin/cat
执行权限:所有用户
功能描述:显示文件内容,适合内容不长的文件使用
语法:cat [-n] [文件名]
-n 显示行号
3.命令名称:tac
命令所在路径:/usr/bin/tac
执行权限:所有用户
功能描述:反向列示文件内容,同样适用内容不长的文件
语法:tac [文件名]
4.命令名称:more
命令所在路径:/bin/more
访问权限:所有用户
功能描述:分页显示文件内容
语法:more [文件名] 如:more /etc/services
space/f 翻页查看
enter 逐行查看
q/Q 退出查看
5.命令名称:less
命令所在路径:/usr/bin/less
执行权限:所有用户
功能描述:分页显示文件内容,支持向上翻页和搜索,搜索时直接输入关键字回车,搜索到的内容如果过多,可按n查看下一页的内容
语法:less [文件名]
less支持more所有的子命令
pgUp 向上翻页
pgDn 向下翻页
上箭头 向上逐行查看
下箭头 向下逐行查看
6.命令名称:head
命令所在路径:/usr/bin/head
执行权限:所有用户
功能描述:显示文件的前几行内容
语法:head [-n] [文件名]
-n 后面指明显示的行数,如果没有使用该选项,默认显示前十行
7.命令名称:tail
命令所在路径:/usr/bin/tail
执行权限:所有用户
功能描述:显示文件最后几行的内容
语法:tail [-nf] [文件名]
-n 后面指定要显示的行数,如果不使用该选项,默认显示最后十行
-f 动态显示文件末尾内容,如检测操作日志,tail -f /var/log/messages
链接命令
命令名称:ln(link)
命令所在路径:/bin/ln
执行权限:所有用户
功能描述:生成链接文件
语法:ln [-s] [原文件][目标文件]
-s 创建软链接
例如:ln -s /etc/issue /tmp/issue.soft,创建文件/etc/issue的软链接/tmp/issue.soft
ln /etc/issue /tmp/issue.hard,创建文件/etc/issue的硬链接/tmp/issue.hard
软链接:类似于Windows中的快捷方式,只是源文件的一个符号文件。
查看软链接的详细信息,可以发现软链接有以下特征:
1)以字母l开头,表明这是软链接,且软链接对所有三种用户的权限是全开的,但是用户对软链接的执行权限并不代表对原文件的执行权限
2)软链接只是原文件的符号文件,所以都很小,上述软链接只有10B
3)软链接文件名后有箭头指向原文件
硬链接:文件的带属性拷贝(cp -p)+同步更新操作
查看硬链接文件和原文件的详细信息,发现除文件名不一致其余属性属性都一样,就好像对文件执行了cp -p /tmp/issue /tmp/issue.hard一样。
但是如果我们更新了原文件的内容,硬链接文件的内容也会同步更新:
echo [字符串] >> [目标文件],作用是向目标文件的文件尾追加字符串;同样,往硬链接文件添加内容,原文件也会同步更新:
此时我们再查看软链接的文件内容:
我们发现文件内容也实现了同步更新,这样的话软、硬链接不就没区别了?
实际上不是的,软链接只是原文件的符号文件,相当于一个快捷方式,如果执行软链接,软链接会定位找到原文件来执行,所以我们查看的实际上还是原文件的内容;而硬链接时原文件的带属性拷贝+双向的同步操作,性质是不一样的。
如果想更直白的区分硬链接和软链接,将原文件删除,再分别查看软硬链接的文件内容
这就是软硬链接的区别,原文件如果被删除,软链接找不到原文件,但是硬链接依然可以访问
硬链接的特征:
1)是对原文件的cp -p +同步更新
2)不能跨分区使用,但是软链接可以
3)不能对目录执行操作
4)软链接可以通过详细信息中是否以字母l开头,文件名是否指向原文件识别,硬链接可以通过i节点来识别
硬链接和原文件的i节点是一样的,正是这个原因,所以硬链接和原文件可以实现同步更新;而软链接与原文件的i节点不一样
因此,一个文件只能对应一个i节点,而一个i节点并不是只对应一个文件