Linux下进行操作,与文件打交道是常用的操作,这一节要学习的是Linux下的文件操作
1.mkdir 命令
用于创建一个目录。是make directory的缩写。其命令格式:
mkdir [选项] 目录名
选 项 | 说 明 |
---|---|
-m | 对新建目录设置存取权限 |
-p | 可以指定一个路径名,此时,若路径中的某些目录尚不存在,用此选项后,系统会自动创建那些尚不存在的目录,也就说,一次可以创建多个目录 |
2.more 命令
如果一个文本文件太长,一屏不能显示完全,就需要使用more命令。more命令读取文本文件时,每次显示一屏,并且在每屏后暂停,同时在屏幕底部显示单词“more”。如果此时按ENTER键,会接着显示文本的另一行,如果按空格键,就会显示文本文件的下一屏信息。格式如下:
more [选项] 文件名
选 项 | 说 明 |
---|---|
-d | 在屏幕底部more提示符后显示友好信息,此信息是显示有关哪些键继续,哪些键退出,哪些键帮助等 |
-s | 将输出文件的多个空行减少为一个空行输出。以文件的第一行为准 |
-p | 清楚屏幕以前的信息,再显示文本信息 |
-c | 显示问件时,没屏显示都清楚屏幕先前的信息然后从最顶端显示出来 |
> more tomcat.log //以分屏展示信息
> more -c -10 tomcat.log //显示tomcat.log文件内容,每10行显示一屏,同时清除屏幕。
3.cat 命令
可以用来将文件的内容输出到标准输出,同时cat还可以用于连接合并文件。格式如下:
cat [选项] 文件名
或者
cat file1 file2 >file
选 项 | 说 明 |
---|---|
-A | 将文件的制表符显示问“^I”,同时在每行的末尾显示“$”符号 |
-b | 将文件所有非空行按顺序编号,编号从1开始 |
4.diff 命令
用来比较文件的差异。diff以逐行的形式比较文件的异同,如果指定比较的是目录,则只会比较目录下相同文件名的文件,不会比较其子目录。格式如下:
diff [选项] file1 file2
选 项 | 说 明 |
---|---|
-c | 显示全部内容,并标出不同之处 |
-b | 忽略行尾空格,同时字符串中的一个或多个空格都将视为相同 |
-r | 当file1、file2为目录时,比较子目录中的文件 |
-s | 两个文件相同时,显示文件的相同信息 |
5.grep 命令
文本过滤工具,根据指定的字符串,对文件的每一行进行搜索,如果找到了这个字符串,就输出该行的内容。格式如下:
grep [选项] 需要查找的字符串文件名
选 项 | 说 明 |
---|---|
-c | 只显示符合条件的行数,不显示每行的具体信息 |
-i | 搜索时,忽略大小写 |
-n | 搜索结果中显示行号 |
-f file | 事先将要搜索的样式写进一个文件,每行一个样式,然后以这个文件作为条件进行搜索 |
> grep -ni rpm install.log //列出 install.log文件中含有rmp字符串的所有行,忽略大小写,并标识具体行号
6. rm 命令
用来删除某个目录及其下的所有文件及子目录。对于链接文件,只是断开了链接,原文件保持不变。格式如下:
rm [选项] 文件或目录
选 项 | 说 明 |
---|---|
-r | 告诉rm命令将选项中列出的全部目录以及子目录还有文件进行递归删除,如果选项中不加入“-r”选项,rm命令将不能删除目录 |
-f | 忽略不存在的问题,也不给提示 |
-i | 交互式删除,在删除前进行确认 |
注意,rm -rf 组合要慎用,多用 rm -i 进行交互式删除。
7.touch 命令
用来修改指定文件的访问时间和修改时间,若指定文件不存在则创建此文件。如果没有指定时间,则使用当前时间。格式如下:
touch [选项] 设定的时间文件
选 项 | 说 明 |
---|---|
-a | 改变文件的访问时间为系统时间,无需设置时间选项 |
-m | 改变文件的修改时间为系统时间,无需设置时间选项 |
-c | 如果文件不存在,不创建也不提示 |
-d 或 -t | 使用指定的日期或时间 |
8.ln 命令
用来在文件或目录间创建链接。
Linux下,链接有两种方式,一种是硬链接,另一种是符号链接。默认情况下,ln命令产生的是硬链接。
- 硬链接 :是指通过文件的inode来进行链接。在Linux文件系统中,保存在内存中的所有类型文件都会分配一个编号,这个编号被称为inode号(Inode Index)。多个文件指向同一个Inode在Linux系统中是允许的,这就是所谓的硬链接。硬链接的作用是允许一个文件拥有多个有效的路径名,这样用户就可以对一些重要文件进行硬链接,以防止误删操作。因为对应该文件的inode有一个以上的链接,所以删除一个链接并不影响inode本身和其他链接,只有当最后一个链接被删除后,该文件数据块和目录的链接才会被释放,也就是此文件才真正被删除。
-
符号链接:也叫软链接,类似于windows下的快捷方式,因此软连接是指向真正文件或者目录位置的符号链接。
格式如下:
ln [选项] 源文件目标链接名
选 项 | 说 明 |
---|---|
-f | 如果在目标位置存在与链接名相同的文件,这个文件将被删除 |
-s | 进行软链接 |
-d | 允许系统管理员硬链接自己的目录 |
-b | 对将在链接时会被覆盖或删除的文件进行备份 |
上面的命令首先切换到 /home目录下,新建了一个目录test,然后进行ln操作,将/home/personal/目录下的test.txt文件,硬链接到刚才创建的/home/test目录下,此时,该目录下也产生了一个test.txt文件,并且文件内容一样。如果你修改任意一个文件,另外一个文件也会变。
9.file 命令
用来显示文件的类型。对于长度为0的文件,将被识别为空文件;对于符号链接文件,默认情况下将显示符号链接引用的真是文件路径。格式如下:
file [选项] 文件名
选 项 | 说 明 |
---|---|
-b | 显示文件类型结果,不显示对应文件名称 |
-L | 直接显示符号链接所指向文件的类型 |
-z | 显示压缩文件的信息 |
-i | 如果文件不是常规文件,则不进一步对文件类型进行分类 |
10. cp 命令
将给出的文件或 目录复制到另一个文件或是目录中。格式如下;
cp [选项] 源文件或目录 目标文件或目录
选 项 | 说 明 |
---|---|
-a | 在复制目录时使用。它保留所有的信息,包括文件链接、文件属性,并递归的复制目录 |
-r | 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件,此时目标文件必须是一个目录名 |
-d | 复制时保留链接,这样不会失去链接文件 |
-p | 保留文件的修改时间和存储权限 |
-i | 如果已经有相同的文件名或目标文件,则提示用户是否覆盖 |
> cp -r ./* /tmp //将当前目录下的所有文件复制到tmp目录下,“./*”表示当前目录下的所有文件及目录
> cp -r /home/oracle /home/ixdba //将 /home/oracle 目录下及其子目录下的所有内容复制到 /home/ixdba 下
11.find 命令
用来在指定路径下查找指定文件。格式如下:
find path-name[-options] [-print -exec -ok命令 {} \;]
- path-name:find命令查找的目录路径,例如,可以用“.”表示当前目录,“/”表示系统根目录
- -options:用来控制搜索的方式。
“-options”常见的几个格式:
选 项 | 说 明 |
---|---|
-name '字符串' | 查找文件匹配所给字符串的所有文件,字符串可以使用通配符 ?、 []、 * |
-lname '字符串' | 查找文件匹配所给字符串的所有符号链接文件,字符串可以使用通配符 ?、 []、 * |
-path '字符串' | 查找路径名匹配所给字符串的所有文件,字符串可以使用通配符 ?、 []、 * |
-user '字符串' | 查找用户名为所给字符串的所有文件 |
-group '字符串' | 查找用户组名为所给字符串的所有文件 |
- -print:将搜索结果输出到标准输出
-
-exex:将所搜符合条件的文件执行所给出的Linux命令,而不许问用户是否执行该命令。{}表示shell命令的选项即为所查找的文件,命令的末尾必须以“;”结束。
注意:格式要正确,“-exec 命令 {} ;”,“}”与“\”之间一定要有空格。 - -ok:对搜符合条件的文件执行所给出的Linux命令,与“-exex”不同的是,它会询问用户是否执行该命令。
12.split 命令
用来分割文档,将一个文件分割成数个。格式如下:
split [选项] [input_file] [output_file]
选 项 | 说 明 |
---|---|
-b size | 制定分割出来的文件大小,size可以加入单位,b代表512字节,k代表1KB,m代表1MB |
-n | 分割的每个文件的长度,默认为1000行 |
-d | 生成的文件序列以数字形式命名 |
-a | 生成的文件序列的长度,默认长度为2 |
- input_file:要分割的文件
- output_file:分割出来的文件序列,生产的文件序列名依次是“output_fileaa”、“output_fileab”、“output_fileac”等,如果没有制定output_file,系统默认以“x”作为输出文件名。
> split -b 10m access_log access_log_bak //设定每个分割文件的大小为10M,执行完毕后,生成的文件一次是access_log_bakaa,access_log_bakab等,每个文件大小是10M
>split -b 2M -d -a 3 /opt/etc.zip /opt/etc_zip_bak //执行完毕后,在/opt目录下生产etc_zip_bak001、etc_zip_bak002、etc_zip_bak3等文件
13.mv 命令
将文件或是目录改名,或是讲文件从一个目录移到另一个目录下。源文件和目标文件,都是文件或是目录,表示改名。源文件是文件,目标文件是目录,很显然时移动文件。格式如下:
mv [选项] 源文件或目录 目标文件或目录
选 项 | 说 明 |
---|---|
-i | 交互式操作,在对已存在的文件或目录覆盖时,系统会询问是否覆盖,y/n |
-f | 禁止交互操作,mv指令将要覆盖文件或目录时,不给任何提示,默认覆盖 |
网友评论