Linux中的常用文件管理命令
常用的文件目录管理命令:cd,pwd,ls,mkdir,rmdir,tree,more,less,head,tail,cp,mv,rm。
文件目录的路径在操作系统上分为两种:绝对路径和相对路径。
绝对路径:从根目录开始的路径。
相对路径:从当前位置起始的路径。而当前位置又称作为工作目录,登录系统之后无时无刻都处在文件目录系统中的某个位置,可通过pwd命令来显示当前的工作目录。
列表内容
- ls命令:
ls是list的缩写,即列出。用法如下:
ls [-aAdfFhilnrRSt] 文件或目录名称
ls [–color={never,auto,always}] 文件或目录名称
ls [–full-time] 文件或目录名称
参数:
-a:查看全部文件(包括隐藏文件)
-A:列出全部文件(包括隐藏文件但不包括.和..这两个目录)
-d:仅列出目录本身,而不是列出目录内的文件数据
-f:直接列出结果,而不进行排序(ls默认会以文件名排序)
-F:在每个输出项后追加显示文件的类型标识符,“*”代表可执行文件,“/”表示目录,“|”表示命令管道FIFO,“=”表示socket套接字,“@”代表连接文件,普通文件无标识符
-h:将文件容量以人类较易读的方式(例如GB,KB等)列出来
-i:显示出inode号码
-l:以长格式显示文件的名称、文件类型、权限模式、硬连接数、所有者、组、文件大小和文件最后修改时间等信息
-n:列出用户识别码(UID)和群组识别码(GID)来替代用户及群组名称
-r:将排序结果反向输出
-R:连同子目录内容一起列出来,等同于该目录下的文件都会显示出来
-S:以文件容量的大小排序
-t:以时间排序
-C:多列显示输出结果,这是默认选项
–color={never,auto,always}:设置是否依据文件特性给予颜色显示(还可以设置颜色种类等)
–full-time:以完整时间模式(年、月、日、时、分)输出
–time={atime,ctime}:输出访问时间或改变熟悉感权限的时间
其中这里要说明一下linux文件有其中文件类型;linux文件类型有7种,可以用ls -l 来查看需要的目录或者文件:
普通文件:linux中最多的一种文件类型,包括纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-]
目录文件 :就是目录, 能用 # cd 命令进入的。第一个属性为 [d],例如 [drwxrwxrwx]
块设备文件 :块设备文件 : 就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]
字符设备
字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]
套接字文件
这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型
管道文件
FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p]
链接文件
类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx]
pwd命令:
命令格式: pwd [options]
作用:以绝对路径的方式显示用户当前的工作目录。
常用选项:
–help:显示帮助信息。
–version:显示版本信息。
使用实例:cd命令:
cd [options] [Dirname]
作用:切换用户的目录,路径可表示绝对路径或者相对路径,默认dirname参数是当前用户的家目录
特殊目录
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表“目前用户身份”所在的主文件夹
-:当仅实用”-“一个选项时,当前工作目录将被切换到环境变量”OLDPWD”所表示的目录。
- mkdir命令
mkdir [options] [Dirname] 作用:mkdir 用指定的名字建立目录。 缺省时,新建立的目录模式为0777,即不加保护地对所有人 都可读、可写、可执行
文件权限:rwx(r:read,w:write,x:excute),分成二进制格式即111,若具有该功能为1否则为0;一个文件具有属主,属主,其他三个权限,即rwxrwxrwx,转换成二进制即777
常用选项:
-z:设置安全上下文(seLinux);
-m <目标属性>,–mode <目标属性>:建立目录的时候设置目录的权限;
-p,–parents:若所要建立的目标目录的上层目录不存在,则先创建上层目录后再创建目标目录;
–version:显示版本新;
- rmdir命令:
rmdir [options] [Dirname] 作用:移除空文件夹。
常用选项:
-p,–parents:删除指定目录后,若该目录的上层目录为空目录,则一并删除;
-v:显示命令执行的详细过程;
–help:显示命令的帮助信息;
cp命令:
- cp [option]… [-T] SOURCE DEST
- cp [option]…SOURCE…DIRECTORY
- cp [option]…-t DIRECTORY SOURCE
作用:cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
常用选项:
-i:交互式,在覆盖操作前提醒用户确认;
-r:递归复制目录及内部的所有内容;
-a:归档复制,尽可能保持文件的结构和属性;
-d:复制符号链接作为符号链接而不是复制它指向的文件;
-p,–preserve[=ATTR_LIST]:保持原有文件的属性信息,其中ATTR_LIST选项包括mode,ownership,timestamp,links,xattr,context,all等;
-f:强制覆盖,不作覆盖提醒;
-v:显示命令执行过程;
复制/var/log 的内容到/var/tmp中
- mv命令:
命令格式:
- mv [OPTION]… [-T] SOURCE DEST
- mv [OPTION]… SOURCE… DIRECTORY
- mv [OPTION]… -t DIRECTORY SOURCE…
作用:用于对文件或目录的重命名,或者将文件从一个目录移动至另外一个目录中。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
注意事项:mv与cp命令的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
常用选项:
-i:交换操作,覆盖前先询问用户确认。
-f:强制覆盖重复文件或目录;
-t,–target-directory=
例子将上面的log改名为log1
- rm命令:
命令格式: rm [option] [FILE]
作用:rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。由于使用rm命令所删除的文件无法恢复,因此在删除文件时最好做好确认。
常用选项:
-f:强制删除文件或目录;
-i:交互模式,在删除已有文件或目录前先与用户确认;
-r:递归,将指定的目录下的所有文件与子目录一并处理;
-v:显示详细的执行过程;
-d:删除空目录;
使用实例:
交互模式下删除文件:
例子:删除上述的log1目录
bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示:
1.bash使用特殊变量$?保存最近一条命令的执行状态结果:
0:成功
1-255:失败
2.bash命令行展开:
~:自动展开为当前用户的家目录
~USERNAME:自动展开为指定用户的家目录
{}:{}内容可为一个用,隔开的路径列表,将其展开为多个路径
示例:
(1)创建/tmp目录下的:a_c, a_d, b_c, b_d
(2) 、创建/tmp/mylinux目录下的:
mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
利用好bash特性理清楚关系就能解决
文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
文件的元数据
1、 什么是元数据
任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元
数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据
块的分布信息(inode…)等等。在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。
2、 元数据管理方式
元数据管理有两种方式。集中式管理和分布式管理。集中式管理是指在系统中有一个节点专门司职元数据管理,所有元数据都存储在该节点的存储设备上。所有客户端对文件的请求前,都要先对该元数据管理器请求元数据。分布式管理是指将元数据存放在系统的任意节点并且能动态的迁移。对元数据管理的职责也分布到各个不同的节点上。大多数集群文件系统都采用集中式的元数据管理。因为集中式管理实现简单,一致性维护容易,在一定的操作频繁度内可以提供较满意的性能。缺点是单一失效点问题,若该服务器失效,整个系统将无法正常工作。而且,当对元数据的操作过于频繁时,集中的元数据管理成为整个系统的性能瓶颈。
分布式元数据管理的好处是解决了集中式管理的单一失效点问题, 而且性能不会随着操作频繁而出现瓶颈。其缺点是,实现复杂,一致性维护复杂,对性能有一定影响。
3、如何查看元数据信息
其中:
file:文件名;
size:文件大小
block:文件占了多少个数据块
IO Block:文件所占数据块的块大小
Device:硬件,既说明该文件在硬盘的那个柱面
Inode:节点号
links:链接
Access(第一个):权限
Uid:该文件所属的属主
Gid:该文件所属的属组
context:安全上下文
Access(第二个):文件上一次的访问时间
Modify:文件上一次修改的时间
Change:文件上一次属性更改的时间
利用touch修改文件的时间戳信息:
touch [选项]… 文件名…
例子:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间。
touch参数
-a 或–time=atime或–time=access或–time=use 只更改存取时间。
-c 或–no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或–time=mtime或–time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
alias:显示当前shell进程所有可用的命令别名
alias NAME=”VALUE”:命名别名
注意:在命令行中定义的别名,仅对当前shell进程有效,如果想永久有效,要定义配置文件
仅对当前用户:~/.bashrc
对所有有效:/etc/bashrc
使用管道命令可以在命令中引用另一个命令的执行结果
使用反引号(tab键)上方的键位将反引符中的内容解释为系统命令
管道命令 |
COMMAND1 | COMMAND2 | COMMAND3 |...
其中文件过滤操作涉及到通配符,在linux中,有通配符及正则表达式,那么什么是通配符和正则表达式,什么时候用?
通配符
它是由shell解析,并且一般用于匹配文件名,实际上就是shell解释器去解析的特殊符号,linux系统通配符有几下几种:
* 匹配0到任意字符
? 匹配单个字符
[[:alpha:]] 匹配单个字母
[[:lower:]] 匹配单个小写字母
[[:upper:]] 匹配单个大写字母
[[:digit:]] 匹配单个数字
[[:alnum:]] 匹配单个数字或字母
[[:punct:]] 匹配单个符号
[[:space:]] 匹配单个空格
[^]表示匹配结果取反的意思,注意这个通配符必须要在[]中使用,一般出现在要shell命令或脚本中,匹配特定的文件名
正则表达式
它是一个字符匹配标准,一些命令工具按此标准实现字符匹配,根据命令支持的匹配功能可分为基础正则表达式和扩展正则表达式,常用于支持正则表达式的工具,如sed,grep,awk…
有如下一些常用的匹配元字符:
字符匹配
.:匹配任意单个字符
*:匹配其前面一个字符出现任意次
?:匹配其前面的字符1次或0次
+:匹配其前面一个字符出现至少一次(在扩展正则表达式中)
位置匹配
^:锚定行首
:锚定行尾
\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现
>或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现
\B:非单词的开头或结尾
^
:锚定行尾 \<或\b:锚定词首,其后面的任意字符必须作为单词首部出现 >或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现 \B:非单词的开头或结尾 ^
:空白行
分组() :
(ab)* : 匹配ab这个分组出现任意次
\1:引用第一个左括号以及与之对应的右括号所包括的所有内容,同理还有\2,\3
特殊子字符类:
[:alnum:] :任何字母和数字
[:alpha:] :任何字母
[:cntrl:] :控制字符. 在ASCII表中对应八进制000 到 037, 和177 (‘DEL’).
[:digit:] :任何数字
[:graph:] :匹配打印字符,相当于’[:alnum:]’ +’[:punct:]’.
[:lower:] :小写字母
[:print:] :可打印字符,相当于 ‘[:alnum:]’, ‘[:punct:]’, 和space.
[:punct:] 标点符号,’! ” #
[:space:]空白字符,tab,newline,verticaltab,formfeed,carriagereturn,andspace.[:upper:]大写字母[:xdigit:]任何16进制的数字,相当于[0−9a−fA−F]所以:[[:space:]]∗
[
:
s
p
a
c
e
:
]
空
白
字
符
,
t
a
b
,
n
e
w
l
i
n
e
,
v
e
r
t
i
c
a
l
t
a
b
,
f
o
r
m
f
e
e
d
,
c
a
r
r
i
a
g
e
r
e
t
u
r
n
,
a
n
d
s
p
a
c
e
.
[
:
u
p
p
e
r
:
]
大
写
字
母
[
:
x
d
i
g
i
t
:
]
任
何
16
进
制
的
数
字
,
相
当
于
[
0
−
9
a
−
f
A
−
F
]
所
以
:
[
[
:
s
p
a
c
e
:
]
]
∗
:匹配没有任何内容的行
需要注意:[]中的特殊字符如.已经失去了其特殊含义,和方括号中的普通字符[abc]一样。
列如:
(1)显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录
其中要求以I开头即是通配符第一位为I,后最后为小写字母即a-z,中间字符需要出现以为数字即*[0-9]*
组合起来为
(2)显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
(3)显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
以非字母开头即为[^[:alpha:]],后面跟一个字母则是[:alpha:],其他任意长度字符即为*
(4)在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
使用反引号将系统返回的时间与文件创建串联起来
(5)复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中
(6)复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
需要注意.符号需要使用\进行转义
(7)复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。