一、linux文件管理
linux哲学思想里面,一切皆文件,所有的硬件设备也是在系统中映射成文件,直接操作文件相当于操作使用了硬件设备。文件管理所涉及到的命令ls、type、file、stat、cp、mv、install、mkdir、rmdir
二、文件类型
#ls -l
查看文件的详情。
drwxr-xr-x 12 zhurudong staff 408 1 10 20:58 eclipseworkspace
drwxr-xr-x:1位文件类型+9问权限
12:硬链接次数
zhurudong:文件所属用户
staff:文件所属租
408: 文件大小,默认字节为单位,即以byte为单位
文件类型
d: 目录文件(directory),目录也是文件,只不过是一种特殊的文件
l: 链接文件,也是软链接文件(link)
-: 普通文件(file)
s: 套接字文件(socket)
b: 块设备文件(block)
c: 字符设备文件(character)
三、相关命令
# nano
文本编辑器
# mkdir —> make directory
创建目录
R: 递归创建目录
命令行展开:
mkdir -R /var/tmp/{x,y} 该写法会中tmp目录下同时创建x,y两个目录
# rmdir —> remove directory
删除空目录
只能删除目录,不能删除文件
p: 删除父目录。删除目录时,如果其父目录这时为空,也会删除掉父目录
# ls —> list
列出,列表
i:index,列出文件节点的索引号。#ls -i
l:list, 列表排列文件,包含文件类型、文件权限、所属主、所属组、时间戳、文件大小等等。#ls -l
h:结合-l使用,格式化列出文件大小,以K,M,G的形式显示。#ls -lh
a:列出所有文件,包含以.开头的隐藏文件,以及.和..
R:递归(recursive)列出文件
# type
查看命令类型
linux当中,命令有分 内置命令和外部命令
内置命令:linux sh当中内置的一些命令,这些命令中系统安装时已经存在,提供最基本的功能而存在。比如cd、ls、cp等等. 内置命令当系统启动时便会加载到内存当中,所以执行内部命令速度会快些。
外部命令:linux为了扩展某些功能而安装的命令,这写命令可以称为软件,这些命令通常要添加到环境变量当中,当直接执行命令时,从环境变量(.bash_profile、/etc/profile),找到PATH, 从而找到具体的命令绝对路径执行命令。
当某些命令执行过后,会记录在hash当中,以便下次执行的时候直接从改hash表当中找到命令的路径,节省了从PATH遍历查找路径的时间,使得执行效率提升。
命令的一般执行过程:
hash——>内置命令——>PATH 命令的调用其实应该是这样一个过程。
zhurudongdeMacBook:nodejs zhurudong$ type pwd
pwd is a shell builtin
zhurudongdeMacBook:nodejs zhurudong$ type cat
cat is /bin/cat
zhurudongdeMacBook:nodejs zhurudong$
# file —> determine file type
探测(查看)文件类型
参数:可以是多个文件,也可以使用bash通配符匹配多个文件. # file install.log
# stat
查看文件信息
通常该命令用于查看文件的访问时间、修改时间、改变时间。
该命令的执行会显示文件详细信息,比如文件大小(size)、块大小(block)、devices、links
# cp —> copy files
复制文件(s)
复制多个文件。可以复制多个文件,在参数为多个既可,但最后一个是目标,只可以有一个,不能多个。
i:提示确认是否进行操作
R:递归复制,用于复制目录时,递归复制其子目录和文件
f:不提示确认操作,也就是强制进行操作
v:(verbose)显示命令执行的过程
p:复制时,保留文件的原有属性,即保留文件原有的权限、所属主、所属组以及时间戳等信息。
a:(arcive)归档复制,不改变文件的任何属性进行的复制文件。常用于备份文件
cp情况分类:
1 #cp /tmp/test /var/tmp/abc
test为目录,abc为文件时,执行命令时提示覆盖,如果强行覆盖,可以复制成功,但abc将会是一个链接类型的文件,内容是不正确的。
2 # cp /tmp/test.txt /tmp/install.log /var/tmp/xyz
该复制为多个文件复制,dest为最后一个参数xyz为目标。必须为目录,否则复制失败。
3 # cp /tmp/test /var/tmp/abc
test为目录,abc为目录,复制失败。因为cp不能直接复制目录,必须加上-R,递归复制才成功, 如果目录abc不存在,则创建改目录,将test所有的文件包括目录递归复制到abc当中。#cp -Rf /tmp/test /var/tmp/abc
#mv —> move files
移动文件(s)
同cp一样,可以移动多个文件,参数指定即可,最后一个为目标文件,只可以有一个,不能多个。
但mv与cp不同的一点是,mv默认提供递归移动。
i:同cp一样,提示确认是否进行操作
f:与i相反,不提示确认操作,强行执行命令
v:显示命令的执行过程,常用于跟踪命令的执行情况
mv情况分类:
1 #mv /tmp/test /var/tmp/abc
test为目录,abc存在,且为文件。复制失败,因为不能将一个目录去覆盖一个文件。
2 #mv /tmp/test/ /var/tmp/abc/
test为目录,abc为一个目录,将/tmp下的test目录移动到abc下,目录名字仍然为test
3 #mv /tmp/test/* /var/tmp/abc/
将test下的所有文件移动到abc下,而不移动test目录,仅仅移动test目录下的文件而已
# install —> copy files
复制文件
该命令可以用于复制文件,可以复制单个文件,也可以复制多个文件到一个目录下。但该命令不能复制目录,如果要复制目录使用cp -R即可。但该命令可以用来创建目录# install -d /tmp/{test1,test2}。
说明:使用该命令复制文件,复制之后该文件就会拥有执行权限。