论linux中查看和管理文件的各种姿势

今天,我来分享一些linux中 如何查看一个文件,以及查看一个文件的各种姿势,以及如何对文件进行复制、移动和删除操作。

一,文件查看类

file : 查看文件类型


用法:

file将文件分为三类: 文本文件、可执行文件、数据文件

示例:

[root@hac-cent-jef ~]# file 811.c
811.c: C source, UTF-8 Unicode text    <------文本文件

[root@hac-cent-jef ~]# file 811
811: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32,BuildID[sha1]=810f839e861a8a1201278148ff83daf638013b6e, not stripped       <------二进制可执行文件

[root@hac-cent-jef ~]# file /var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db: data    <-----数据文件

cat : (concatenate)由第一行开始显示文件内容


选项:

-b : 为所有行编号,除了空白行
-n : 为所有行编号
-A : 显示文件内容,包括特殊符号
-E : 显示行结束符$
示例:

[root@hac-cent-jef /]# cat document
811.c
812.c

anaconda-ks.cfg
initial-setup-ks.cfg

[root@hac-cent-jef /]# cat -b document
     1  811.c
     2  812.c

     3  anaconda-ks.cfg
     4  initial-setup-ks.cfg

[root@hac-cent-jef /]# cat -n document
     1  811.c
     2  812.c
     3  
     4  anaconda-ks.cfg
     5  initial-setup-ks.cfg

[root@hac-cent-jef /]# cat -A document
811.c$
812.c$
$
anaconda-ks.cfg$
initial-setup-ks.cfg$

tac : 与cat正好相反,从最后一行开始显示文件


示例:

[root@hac-cent-jef /]# cat document
811.c
812.c

anaconda-ks.cfg
initial-setup-ks.cfg

[root@hac-cent-jef /]# tac document
initial-setup-ks.cfg
anaconda-ks.cfg

812.c
811.c

head : 显示文件(前N行)


选项:

-n : 显示文件的前n行

示例:

[root@hac-cent-jef /]# head document
811.c
812.c

anaconda-ks.cfg
initial-setup-ks.cfg

[root@hac-cent-jef /]# head -2 document
811.c
812.c

那么,与head对应的就是tail了。


tail : 显示文件内容(后N行)


选项:

-n : 显示文件的后n行

示例:

[root@hac-cent-jef /]# tail document
811.c
812.c

anaconda-ks.cfg
initial-setup-ks.cfg

[root@hac-cent-jef /]# tail -2 document
anaconda-ks.cfg
initial-setup-ks.cfg

more : 一次显示一页文件


操作:

空格键 : 向下翻一页
Enter键 : 向下翻一行
/STRING : 在显示的内容中,查找STRING这个字符串,重复查询一个字符串可按n
:f : 立刻显示文件名以及目前显示的行数
q : 离开more


less : 一次显示一页文件


操作:

空格键 : 向下翻一页
Enter键 : 向下翻一行
/STRING : 在显示的内容中,查找STRING这个字符串,重复查询一个字符串可按n
:f : 立刻显示文件名以及目前显示的行数
q : 离开more


stat : 显示文件或文件系统状态(文件的元数据)


用法:

stat FILE…

在这里,我们有必要了解一下文件的数据:

一般,每个文件都有两种数据,即元数据(medata)和数据(data);

其中,元数据是指文件的属性等信息,而数据指的是文件的内容,而stat命令查看的便是前者:元数据。

元数据有:

  • File : 文件名
  • Size : 文件(或目录)大小(Bytes)
  • Block : 磁盘块个数
  • IO Block : 文件占用的每个Block的大小,后面紧跟的是文件类型
  • 文件类型 : 常跟在IO Block的后面
  • Device : 说明文件在硬盘中存储在哪个柱面
  • Inode : 索引节点号
  • Links : 文件硬链接次数
  • Access : 文件权限
  • Uid : 文件属主及ID号
  • Gid : 文件属组及ID号
  • Access : 文件最近的访问时间
  • Modify : 文件内容最近的修改时间
  • Change : 文件元数据最近的改变时间
  • Birth : 文件的创建时间

示例:查看文件document的元数据

[root@hac-cent-jef /]# stat document
  File: ‘document’
  Size: 50          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 23          Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2018-09-02 00:20:16.810509124 +0800
Modify: 2018-09-02 00:20:13.287441512 +0800
Change: 2018-09-02 00:20:13.372443145 +0800
 Birth: -

对于元数据,我们是可以修改其中的一些信息的,比如时间戳

使用touch命令便可修改文件的时间戳;


touch : 创建新存在文件/修改文件时间戳


用法:

touch [option]… FILE…

选项:

    -c :   设置当目标文件不存在时,不予以创建
    -a :   修改文件时间戳中的最近访问时间(access time)
    -m :   修改文件内容的最近修改时间(modify time)
    -t STAMP :   将时间戳修改为STAMP指定的时间,格式为:[[cc]YY]MMDDHHmm[.ss]

例:将document的修改时间(modify time)设为2000年06月06日06点06分06秒

[root@hac-cent-jef /]# touch -m -t 200006060606.06 document
[root@hac-cent-jef /]# stat document
  File: ‘document’
  Size: 50          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 23          Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2002-12-01 03:03:03.000000000 +0800
Modify: 2000-06-06 06:06:06.000000000 +0800
Change: 2018-09-02 01:13:22.578429323 +0800
 Birth: -
二,文件管理类

Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

文件管理类命令:cp,mv,rm


cp : 即copy,用于复制文件


其用法有两种:

1)单源复制:

    cp [option]...  [-T]  SOURCE DEST

如上:

  • 若 DEST 不存在,则先创建该文件再复制 SOURCE 数据流到 DEST;
book@www.100ask.org:~/test$ cp yang.c yang_2.c
book@www.100ask.org:~/test$ ls
Documents  Music  var  Videos  Work  yang_2.c  yang.c
  • 若 DEST 存在且为文件,则以 SOURCE 覆盖 DEST;
/*之前yang_2.c是一个空文件,我们用yang.c覆盖它。*/
book@www.100ask.org:~/test$ cp yang.c yang_2.c
book@www.100ask.org:~/test$ cat yang_2.c
#include
int main()
{
  printf("hello world!\n");
  return 0;
}
  • 若 DEST 存在且为目录,则先在 DEST 目录下创建同名文件并复制其数据流
book@www.100ask.org:~/test$ cp yang.c Work
book@www.100ask.org:~/test$ cd Work
book@www.100ask.org:~/test/Work$ ls
yang.c
book@www.100ask.org:~/test/Work$ cat yang.c
#include
int main()
{
  printf("hello world!\n");
  return 0;
}

2)多源复制

    cp [option]...  SOURCE DEST
    或者:
    cp [option]... -t DEST SOURCE
  • 若 DEST 不存在或者不是目录,则错误;

  • 若 DEST 为目录,则按照原名复制各个文件到目录 DEST;

选项:

-i : 交互式复制,即在复制之前询问;
-f : 强制复制目标文件;
-r或-R : 递归复制目录及目录下的文件
-d : 复制符号链接文件本身,而不是其指向的文件
-a : 用于归档
–preserve=’STRING’ : 复制时由‘STRING的值’指定保留的元数据,STRING的值及其
对应关系如下:
mode 保留权限
ownerstamp 保留属主和属组
timestamps 保留时间戳
context 安全标签
xattr 扩展属性
links 符号链接


mv : 移动文件或重命名
用法格式同cp


rm: 删除文件


用法:
# rm [option]… FILE…

选项:

-i : 即interective,交互式的删除,删除时询问;
-f : 即force,强制删除;
-r : 即recursive,递归删除;
-rf : 删除目录,此选项危险,请慎用!建议自建回收站:在电脑上选择
一个文件夹作为回收站使用,将要删除的文件移动其中即可。

你可能感兴趣的:(Hello,Linux,!)