linux的一个概念就是一切皆文件,本文记录了在使用linux中要掌握的文件操作命令

文件和属性目录

linux目录结构

目录名称 应放置文件的内容
/boot 开机所需文件—内核、开机菜单以及所需配置文件等
/dev 以文件形式存放任何设备与接口,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc 配置文件
/home 用户主目录
/bin 存放单用户模式下还可以操作的命令
/lib 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/sbin 开机过程中需要的命令,s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/media 用于挂载设备文件的目录,linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/opt 放置第三方的软件,比如你安装一个ORACLE数据库则就可以放到这个目录
/root 系统管理员的家目录
/srv 该目录存放一些服务启动之后需要提取的数据,例如一些网络服务的数据文件
/tmp 任何人均可使用的“共享”临时目录
/usr unix software resource 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/local 用户自行安装的软件
/usr/sbin Linux系统开机时不会使用到的软件/命令/脚本
/usr/share 帮助与说明文件,也可放置共享文件
/var 主要存放经常变化的文件,如日志
/proc 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,
/lost+found 当文件系统发生错误时,将一些丢失的文件片段存放在这里
/mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/sys 这个目录其实跟/proc非常类似,也是一个虚拟的档案系统,主要也是记录与核心相关的资讯。 包括目前已载入的核心模组与核心侦测到的硬体装置资讯等等。 这个目录同样不占硬盘容量。

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

linux文件类型与文件权限

Linux文件类型常见的有:普通文件、目录文件、字符设备文件和块设备文件、符号链接文件等

  • 当为[ d ]则是目录
  • 当为[ - ]则是文件;
  • 若是[ l ]则表示为链接文档(link file);
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

文件权限

文件权限

Linux文件属性详解

第一列:inode(inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘等等)被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数 据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令, 能通过inode值最快的找到相对应的文件)

第二列:文件种类和权限;

第三列: 硬链接个数;

第四列: 属主;

第五列:所归属的组;

第六列:文件或目录的大小;

第七列和第八列:最后访问或修改时间;

第九列:文件名或目录名

【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

文件目录操作命令

cd

  1. 命令格式:cd [目录名]

  2. 命令功能:切换当前目录至dirName

  3. 示例

    cd / 进入指定的路径

    cd .. 进入上一级,可以一直到跟目录

ls

  1. 命令格式:

ls [选项] [目录名]

  1. 命令功能:

列出目标目录中所有的子目录和文件。

  1. 常用参数:
命令 说明
ls -a –all 列出目录下的所有文件,包括以 . 开头的隐含文件
ls -c 根据 ctime 排序及显示 ctime (文件状态最后更改的时间)
ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
ls -R 显示目录的子目录
ls -t 以文件修改时间排序
ls -S 根据文件大小排序

pwd

pwd 用于显示用户当前所处的工作目录

目录连接链接时,pwd -P 显示出实际路径,而非使用连接(link)路径;pwd显示的是连接路径

mkdir

  1. 命令格式

mkdir [选项] 目录…

  1. 命令功能

通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。

  1. 命令参数

    -m, –mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask

    -p, –parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;

    -v, –verbose 每次创建新目录都显示信息

  2. 示例

1
2
3
4
5
mkdir test

mkdir -p test1/test2

mkdir -v test

rm

  1. 命令格式

rm [选项] 文件…

  1. 命令功能

删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

  1. 命令参数

​ -f, –force 忽略不存在的文件,从不给出提示。

​ -i, –interactive 进行交互式删除

​ -r, -R, –recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。

​ -v, –verbose 详细显示进行的步骤

  1. 示例
1
2
3
4
5
6
7
8
9
rm 文件名

rm -f 文件名

rm -i *.txt

rm -r 文件夹

rm -rf 文件夹

rmdir

删除空目录,假如目录中还存有内容,不能删除

1
rm -p

连同上一级的空目录也删除

mv

移动文件与目录,或修改名称

  1. 命令格式:

​ mv [选项] 源文件或目录 目标文件或目录

  1. 命令功能

视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

  1. 命令参数

-b :若需覆盖文件,则覆盖前先行备份。

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u :若目标文件已经存在,且 source 比较新,才会更新(update)

-t : –target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

  1. 示例
1
mv test.log test1.txt

修改文件名称

1
mv test1.txt test3

将test1.txt文件移到目录test3中

1
mv log1.txt log2.txt log3.txt test3

将文件log1.txt,log2.txt,log3.txt移动到目录test3中。

1
mv -t /opt/soft/test/test4/ log1.txt log2.txt log3.txt

log1.txt log2.txt log3.txt 移动到目录test4

移动

1
mv * ../

移动当前文件夹下的所有文件到上一级目录

cp

cp 即拷贝文件和目录。复制目录 目录存在与目录不存在的情况 目标目录存在时,整个源目录被复制到目标目录里面。

选项

  • -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
  • -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
  • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
  • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
  • -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
  • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
  • -r:递归持续复制,用於目录的复制行为;(常用)
  • -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
  • -u:若 destination 比 source 旧才升级 destination !
1
cp -a

复制后文件属性与原文件相同,类似于快捷方式 cp 会赋予一个新的操作时间

1
cp -i

在遇到重名的文件时候,会给出提示

文件创建与查看命令

touch

新建一个文件,输入文件名和文件格式即可创建

cat/tac

cat由第一行开始显示文件内容 tac从最后一行开始显示,可以看出 tac 是 cat 的倒著写!

nl

查看文件并显示行号

more

一页页翻看查看文件

  • 空白键 (space):代表向下翻一页;
  • Enter :代表向下翻『一行』;
  • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
  • /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
  • :f :立刻显示出档名以及目前显示的行数;
  • q :代表立刻离开 more ,不再显示该文件内容。

head 取出文件前面几行

  • -n :后面接数字,代表显示几行的意思

tail

head 取出文件后几行

  • -n :后面接数字,代表显示几行的意思
  • -f 循环读取,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容. 在查看tomcat的日志的时候是一个很好的应用场景

参考链接:

https://www.cnblogs.com/peida/archive/2012/12/05/2803591.html