linux文件层级、目录、文件基本操作介绍

1、文件层级FHS介绍:

Filesystem Hierarchy
Standard(文件系统层次化标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。

FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。

/:linux文件系统根目录

/bin:供所有用户使用的基本命令文件

/sbin:供系统管理员使用的工具程序文件

/lib:供/bin和/sbin程序调用的库文件程序,及系统启动时需要的库文件

/lib64:供64为系统使用的库文件,及系统启动时需要的库文件

/boot:系统启动引导的静态文件(kernel、initranfs、grub等)

/dev:存储设备文件和特殊文件。

/etc:主机特有配置文件,只能为静态文件,一般是文本文件。 etc也是层级目录结构。

/etc/opt,/etc/x11,/etc/xml,

/home:用户家目录,可选目录

/media:便携设备挂载点,如光盘、u盘等

/mnt:其他文件的临时挂载点

/opt:附加应用程序的安装位置(第三方应用程序),可选路径。

/root:管理员的家目录

/srv:当前主机为服务提供数据的目录

/tmp:临时文件,为那些产生临时文件的程序提供的用于存储临时文件的目录,可供所有用户执行写操作。

/usr:全局共享只读数据路径,它也是一个层级文件系统。

/var:存储经常变化的数据目录,它也是一个层级文件系统。

/proc:用来为内核及进程存储相关信息,多位内核参数。

/sys:提供比/proc更理想的访问linux内核参数的方法途径,其主要作用于为管理linux设备提供一种统一模型的接口。

2、linux文件类型:

Linux文件的类型可以通过命令:ls -l 来查看,一般有如下几种

-:普通文件

d:目录文件

b:块设备文件,块设备文件以“block”为单位,对数据可以进行随机访问。

c:字符设备文件,字符设备文件以“字符”为单位,对数据只能进行线性访问。

l:符号链接文件,相当于windows中的快捷方式

p:命令管道文件

s:套接字文件

3、linux目录、文件操作常用命令:

3.1、创建目录:mkdir,删除目录rmdir

3.2、文件内容查看常用命令:cat、tac、首尾部分查看(tail、head)、分屏查看(more、less)

3.3、文件复制、移动、删除命令:cp、mv、rm

mkdir:创建目录

格式:

mkdir [OPTION]... DIRECTORY...

[OPTION]:

-p:如果父目录不存在,则自动创建父目录,

-m:创建目录时,设定目录权限

-v:显示命令执行的详细信息

如:

[[email protected] ~]# mkdir /tmp/x/y/z

mkdir: cannot create directory ‘/tmp/x/y/z’: No such file or directory

[[email protected] ~]# mkdir -p /tmp/x/y/z

[[email protected] ~]#

rmdir:删除空目录

格式:

rmdir [OPTION]... DIRECTORY...

[OPTION]:

-p:删除子目录后,如果父目录为空,则一并删除

-v:显示命令执行的详细信息

cat:把文件和标准输出连接起来,即查看文件内容,它会直接显示到文件尾部一行,

格式: cat [OPTION]... [FILE]...

[OPTION]

E:显示文件每一行尾的$

n:显示文件每一行号

如:

tac:和cat类似,只是它是从文件尾部进行查看,不做翻屏处理

tail:输出文件最后一部分内容,默认为文件尾部10行,

格式:tail [OPTION]... [FILE]...

[OPTION]

-c:输出文件尾部多少K字节内容;

-f:输出文件最后不退出,并显示追加的内容,

-n  数字:显示从文件尾部指定多少行开始显示,默认10行

-n   +数字:  显示从第几行开始显示到行尾

head:输出文件的开始部分,默认为10行;

格式: head [OPTION]... [FILE]...

[OPTION]:

-n:指定前多少行

more:分屏查看文件内容,最后直接退出

格式:more [options] file [...]

less:分屏查看文件内容,最后不直接退出,需敲入q退出,man命令调用的less命令;

/pattern:从上往下搜索内容,n方向一致,N方向相反搜索

?pattern:从下往上搜索内容,n方向一致,N方向相反搜索

#G:跳转指定行

GG:跳转文件尾部

空格:向尾部翻一屏

b键:向首部翻一屏

cp:文件复制命令  : 复制源文件到目的文件或目录,复制多个源文件到目录

格式:

单源复制:cp [OPTION]... [-T] SOURCE DEST

多源复制:cp [OPTION]... SOURCE... DIRECTORY

多源复制:cp [OPTION]... -t DIRECTORY SOURCE...

单源复制:cp [OPTION]... [-T] SOURCE DEST

如果DEST不存在,则事先创建此文件,并复制源文件的数据流至DEST中

如果DEST存在,

如果DEST是非目录文件,则复制源文件数据流覆盖目标文件;

如果DEST是目录文件,则先在DEST目录下创建一个与源文件同名的文件,并复制源文件

多源复制:cp [OPTION]... SOURCE... DIRECTORY

如果DEST不存在,会报错

如果DEST存在,

如果DEST是非目录文件,会报错

如果DEST是目录文件,分别复制每个文件至目录文件中,并保持原名。

[OPTION]:

-i:交换式复制,即覆盖前提醒用户确认

-f:强制覆盖目标文件

-r:递归复制目录文件

-d:复制符号链接文件本身,而非其指向的源文件

-a:用于实现归档,保持源文件的所有读写执行和属主属组权限。

如:

[[email protected] ~]$ cp /etc/issue /tmp  //DEST目标文件不存在,

[[email protected] ~]$ ls /tmp

anaconda.log

hsperfdata_root

hsperfdata_user

ifcfg.log

issue

[[email protected] user]# cp /etc/issue /etc/fstab /tmp/abc  //复制issue、fstab文件到目录abc

cp: target ‘/tmp/abc’ is not a directory

[[email protected] user]# mkdir /tmp/abc

[[email protected] user]# !cp

cp /etc/issue /etc/fstab /tmp/abc

[[email protected] user]# ls /tmp/abc

fstab  issue

[[email protected] user]#

[[email protected] ~]# mkdir /tmp/bcd

[[email protected] ~]# cp -rv  /var/log/ /tmp/bcd  //复制目录,DEST需事先存在

注意:复制后的文件/目录权限和属主属组发生了变化。可以用-a选项保持这些参数

[[email protected] ~]# cp /var/log/tomcat/ /tmp/

cp: omitting directory ‘/var/log/tomcat/’

[[email protected] ~]# cp -rv /var/log/tomcat/ /tmp/

‘/var/log/tomcat/’ -> ‘/tmp/tomcat’

‘/var/log/tomcat/catalina.out’ -> ‘/tmp/tomcat/catalina.out’

[[email protected] ~]# ll /var/log/tomcat/ /tmp/tomcat/

/tmp/tomcat/:

total 4

-rw-r-----. 1 root root 28 Sep 17 18:16 catalina.out

/var/log/tomcat/:

total 4

-rw-rw----. 1 tomcat tomcat 28 Nov  6  2016 catalina.out

[[email protected] ~]# cp -a /var/log/firewalld  /tmp/

[[email protected] ~]# ll /var/log/firewalld /tmp/firewalld

-rw-r--r--. 1 root root 0 Aug 29 20:22 /tmp/firewalld

-rw-r--r--. 1 root root 0 Aug 29 20:22 /var/log/firewalld

mv:移动文件或重命名文件

格式:    mv [OPTION]... [-T] SOURCE DEST

mv [OPTION]... SOURCE... DIRECTORY

mv [OPTION]... -t DIRECTORY SOURCE...

rm:删除文件或目录

格式: rm [OPTION]... FILE...

[OPTION]:

-i:交互式命令

-r:递归操作,删除目录时会有用。

-f:强化操作

[[email protected] ~]# rm /tmp/bcd/

rm: cannot remove ‘/tmp/bcd/’: Is a directory

[[email protected] ~]# rm -r /tmp/bcd/

rm: remove directory ‘/tmp/bcd/’? y

[[email protected] ~]# ls /tmp/bcd

ls: cannot access /tmp/bcd: No such file or directory

[[email protected] ~]#

4、bash的基础特性介绍:

4.1、命令历史:history

shell进程会在其会话中保存此前用户提交的执行过的命令。

命令格式:history  【option】

history的环境变量有:

HISTSIZE:shell进程可保留的命令历史的条数

HISTFILE:持久保存命令历史的文件,一般每个用户下都会有,如家目录下的.bash_history

HISTFILESIZE:定义历史文件的大小。

option选项有:

-c:清空历史命令列表

-d:偏移量,删除指定命令历史

-r:从命令历史文件中读取命令至命令历史中(内存)

-w:把历史列表中命令追加至历史文件中。

调用命令历史列表中的命令:  !

!#:再一次执行命令历史列表中的第#条命令

!!:再一次执行上一次操作的命令

!sting:再一次执行最近一次可以匹配命令历史列表中的以sting开头的命令。

调用上一条命令中最后一个参数:

快捷键:esc + . :按esc键后松开,再按点号(.)

字符组合:!$.     :叹号和$号一起按

控制命令历史记录的方式:

环境变量:HISTCONTROL      (修改仅对当前shell有效)

HISTCONTROL=ignoredups:忽略重复的命令

HISTCONTROL=ignorespace:忽略以空白字符开头的命令

HISTCONTROL=ignoreboth:以上两者同时忽略

4.2、命令补全、路径补全(按tab键)

shell程序在接收到用户执行的命令请求时,分析完成后,最左侧的字符串会被当作命令执行。

命令处理机制:

查找内部命令

根据PATH环境变量中设定的目录,从左向右逐个按目录查找

命令补全机制:

给定的打头字符串如果唯一标识某命令文件,则tab键直接补全

给定的打头字符串如果不能唯一标识某命令程序文件,则再按一次tab键,会给出命令列表。

路径补全机制:

根据给定的起始路径补全,即以对应路径下的打头字符串来逐一匹配起始路径下的每个文件。

如果能唯一标识某路径,则补全,否则,再按一次tab,给出列表。

4.3、命令行展开:    ~、{ }

~ :自动展开为用户的家目录( # cd ~),或指定用户的家目录(# cd ~ user)

{ }: 可承载一个以“,”(逗号)分隔的路径列表,并能够将其展开为多个路径。如:/tmp/{a,b}相当于/tmp/a和/tmp/b

如:

创建/tmp目录下的:a_c,a_d,b_c,b_d,

[[email protected] ~]# mkdir /tmp/{a,b}_{b,d}

[[email protected] ~]# ls /tmp/

a_b

a_d

b_b

b_d

创建/tmp/mylinux目录下的目录结构:

[[email protected] ~]# tree /tmp/mylinux/

/tmp/mylinux/

├── bin

├── boot

│   └── grup

├── dev

├── etc

│   ├── rc.d

│   │   └── init.d

│   └── sysconfig

│       └── network-scripts

├── lib

│   └── modules

├── lib64

├── proc

├── sbin

├── sys

├── tmp

├── usr

│   ├── local

│      ├── bin

│      └── sbin

└── var

├── lock

├── log

└── run

26 directories, 0 files

[[email protected] ~]#

[[email protected] ~]# mkdir -p /tmp/mylinux/{bin,boot/grup,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}

4.4、命令的执行状态结果:

bash通过状态返回值来查看命令的执行结果,状态返回值保存于bash的特殊变量“$?"中。

注意:$? 只能获得最近命令执行的状态结果。

通过:#echo $? 执行结果来查看命令执行状态结果。

如果命令成功执行:输出数字“0”

如果命令未成功执行:输出数字“1-255”中的一个数字,

如:

[[email protected] ~]# ls /

1    boot  etc   lib    media  opt   root  sbin  sys  usr

bin  dev   home  lib64  mnt    proc  run   srv   tmp  var

[[email protected] ~]# echo $?

0

[[email protected] ~]#

[[email protected] ~]# lsls /

bash: lsls: command not found...

[[email protected] ~]# !echo

echo $?

127

[[email protected] ~]#

4.5、引用命令的执行结果: $(命令) 或 `命令`    注意 ` 为反引号。

如:#mkdir $(date +%H-%M-%S)             //引用时分秒为创建目录的名字。

4.6、变量的引用:

‘ 变量 ’  :单引号表示强引用,引用变量本身;

”变量“   :双引号表示弱引用,引用变量的执行结果

$(命令) :命令执行结果引用

4.7、bash快捷键:

ctrl+a:跳转至命令行首部

ctrl+e:跳转至命令行尾部

ctrl+u:删除行首至光标所在处之间的所有字符

ctrl+k:删除光标所在处至行尾之间的所有字符

ctrl+l:清屏,相当于clear命令

4.8、glob通配符(文件名通配符)

linux的哲学思想之一就是一切皆文件,众多文件组织在一起,可以通过glob通配符去匹配需要的文件名。

注意:glob匹配的是整个文件名,而非部分文件名。

glob通过“元字符”去匹配信息。

元字符介绍:

* :  *表示匹配任意长度任意字符

?:  ?表示匹配任意单个字符

[ ] :  [ ]表示匹配指定范围内的任意单个字符

[a-z]: 表示匹配a-z A-Z中的任意一个字母,不区分大小写;即匹配所有字母

[A-Z]:表示匹配a-z A-Z中的任意一个字母,不区分大小写;即匹配所有字母

[0-9]:表示匹配所有数字中的一个数字,即匹配所有数字

[a-z0-9]:表示匹配所有的字母和数字

[abcde]:表示匹配abcde中的任意一个字符

特定格式:

[[:upper:]] :表示匹配所有大写字母中的一个

[[:lower:]] :表示匹配所有小写字母中的一个

[[:alpher:]] :表示匹配所有字母(大小写)中的一个

[[:digit:]] :表示匹配所有数字

[[:alnum:]] :表示匹配所有字母和数字中的一个

[[:space:]] :表示匹配所有空白字符

[[:punct:]] :表示匹配所有标点符号

[^ ] : [^ ]表示匹配指定范围外的任意单个字符

[^[:upper:]] : 表示匹配所有大写字母以外的单个字符

[^abcde]   :  表示匹配abcde外的任意一个字符

如:

显示/var/log目录下所有以l开头,以一个小写字母结尾,且中间出现一位数字的文件或目录

[[email protected] ~]# ls -d /var/log/l[0-9][[:lower:]]

显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录

[[email protected] ~]# ls -d /etc/[0-9]*[^0-9]

复制/etc/目录下,所有以.conf结尾,且以mnrp开头的文件或目录至/tmp/conf.d目录下

[[email protected] ~]# mkdir /tmp/conf.d

[[email protected] ~]# cp -r /etc/[mnrp]*.conf /tmp/conf.d

5、常用命令:alias,unalias,stat,touch

[[email protected] ~]# alias cls=clear

[[email protected] ~]# alias

alias cls=‘clear‘

[[email protected] ~]# unalias cls

stat命令:查看文件元数据信息

每个文件都有两类数据:

元数据:metadata //不是文件的组成部分,描述文件属性的信息,类似winodws文件的属性常规信息

数据:data     //文件本身内容数据

如:

[[email protected] ~]# stat /tmp/yum.log.old

File: ‘/tmp/yum.log.old’

Size: 52         Blocks: 8          IO Block: 4096   regular file

Device: fd00h/64768d Inode: 11797030    Links: 1

Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)

Context: unconfined_u:object_r:user_tmp_t:s0

Access: 2017-09-17 18:04:23.207995463 +0800

Modify: 2017-09-17 18:04:23.207995463 +0800

Change: 2017-09-17 18:37:48.960974954 +0800

Birth: -

[[email protected] ~]#

注意:元数据有三个重要的时间参数:只能修改访问时间和修改时间,不能修改改动时间,改动时间会因访问时间和修改时间改变而变化。

Access: 2017-09-17 18:04:23.207995463 +0800    //actime:访问时间

Modify: 2017-09-17 18:04:23.207995463 +0800    //mtime:修改时间

Change: 2017-09-17 18:37:48.960974954 +0800    //ctime:改动时间

touch:修改文件时间戳;如果文件不存在,则用来创建文件

格式:touch [OPTION]... FILE...

[OPTION]

-a:仅修改accestine

-m:仅修改modifytime

-c:指定文件不存在时,不创建文件

-t:use [[CC]YY]MMDDhhmm[.ss] instead of current time //用指定时间代替当前时间。

如:

[[email protected] ~]# touch -t 201709171219 /tmp/yum.log.old

[[email protected] ~]# stat /tmp/yum.log.old

File: ‘/tmp/yum.log.old’

Size: 52         Blocks: 8          IO Block: 4096   regular file

Device: fd00h/64768d Inode: 11797030    Links: 1

Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)

Context: unconfined_u:object_r:user_tmp_t:s0

Access: 2017-09-17 12:19:00.000000000 +0800

Modify: 2017-09-17 12:19:00.000000000 +0800

Change: 2017-09-17 20:22:43.883910589 +0800

Birth: -

[[email protected] ~]#

时间: 2024-10-23 01:46:06

linux文件层级、目录、文件基本操作介绍的相关文章

夺命雷公狗---linux NO:10 linux的文件与目录的基本操作

我们往往都是在系统操作文件和目录,那么我们就先来研究下文件和目录的基本操作 这些都是常用的命令,我们都必须要玩明白的... 我们首先用  pwd  来做测试... pwd  主要是显示我们当前在那个目录下,  这里显示  /   那么这样就更简单啦,我们在跟目录下.. 比如我们进入到  etc  目录下再用  pwd  来查看,那么他也就会显示我们在  etc   目录下啦.. 如果我们需要退出这个目录,那么我们cd ..  这样即可退出来了,如下所示: cd  命令的使用方法,其实这个也很简单

文件和目录的基本操作

Linux命令行下的文件和目录的基本操作: 1.创建文件: touch 文件名   -->文件名不能有空格,如果想创建带空格的文件名,文件名必须用双引号括起来. eg.  touch Program File   -->这个命令会创建连个文件 Program和File文件. touch "Program File"  -->这个命令会创建Program File 一个文件.(不建议创建带有空格的文件名) 2.创建目录: mkdir 目录名  -->创建目录,和t

Linux系统下目录文件配置

刚刚接触Linux,对于Linux系统下的目录配置进行了一些研究,为了避免以后误操作这些目录,建议大家还是记忆一下相关的配置! 总结 Linux 根目录主要配置 目录 文件配置内容 /bin 单用户维护模式下还能被操作的命令 /boot 开机会使用到的文件,包括Linux内核文件以及开机菜单与开机所需配置文件 /dev 设备以及设备接口文件,访问该目录下文件相当于访问某设备 - /dev下的重要文件:/dev/null,/dev/zero,/dev/tty /etc 系统主要的配置文件,比如账号

Linux常用命令 | 目录文件

目录文件相关的Linux命令 1. 新建文件夹:mkdir 路径/新建文件夹名 : 2. 删除目录:rm -rf 路径/要删除的文件夹名(/* 清空文件夹) -r 就是向下递归,不管有多少级目录,一并删除 -f 就是直接强行删除,不作任何提示的意思 -v 详细:显示文件的删除进度 rmdir 3. 复制目录:cp -rf A路径(/* 目录下的全部文件夹和文件) B路径 4. 目录重命名(剪切): mv 源文件名 目标文件名 -i 互动:如果选择的文件会覆盖目标中的文件,他会提示确认 -f 强制

chmod chown llinux文件及目录的权限介绍

linux 文件或目录的读.写.执行权限说明: chmod :设置文件或目录权限. u:所有者 g:所在组 o:其他组 a:所有人(u.g.o的总和) chmod  -R  文件1/文件2…..     //递归授权权限 设置权限有两种方式: 一.字母相对方式设置权限: chmod u=rwx,g=rx,o=x 目录或文件 chmod u+rwx,g+rx,o+x 目录或文件 chmod u-rwx,g-rx,o-x  目录或文件 二.数字绝对方式设置权限: chmod 数字 目录或文件 解释:

C# 文件与目录的基本操作(System.IO)

1. 文件操作 /// <summary> /// 文件读写操作 /// 为简化代码供大家学习,暂不考虑捕捉异常 /// </summary> public partial class TestIO : DevComponents.DotNetBar.Office2007Form { public TestIO() { InitializeComponent(); }   /// <summary> /// 创建文件 /// </summary> priva

linux中各目录及详细介绍

一.Linux文件系统的层次结构 在Linux或UNIX操作系统中,所有的文件和目录都被组织成一个以根节点开始的倒置的树状结构,如图: 二.目录 1.目录的定义 目录相当于Windows中的文件夹,目录中存放的既可以是文件,也可以是其他的子目录. 文件系统层次结构标准(FHS)定义了Linux操作系统中的主要目录及目录内容. 在FHS中,所有的文件和目录都出现在根目录"/"下,即使他们存储在不同的物理设备中. 2.linux中的目录详细介绍: /   根目录 /bin/   面向所有用

TortoiseSVN设置忽略文件和目录文件夹

在多数项目中你总会有文件和目录不需要进行版本控制.这可能包括一些由编译器生成的文件,*.obj,*.lst,或许是一个用于存放可执行程序的输出文件夹.只要你提交修改,TortoiseSVN 就会在提交对话框的文件列表中显示出未版本控制文件.当然你可以关闭这个显示,不过你可能会忘记添加新的源文件. 最好的避免类似问题的方法是添加参考文件到该项目的忽略列表.这样他们就永远不会出现在提交对话框中,而真正的未版本控制文件则仍然列出. 方法一 在资源管理器中,右键一个未加入版本控制文件或目录,并从弹出菜单

Linux基础学习-目录 文件 和链接

一.目录操作 1.mkdir -p a/b/c/d 递归的创建目录 2.pwd (print working directory)显示当前目录路径 3.rmdir 目录名,删除空目录 4.rm -rf 文件名,删除目录 -r 删除目录 -f 强制删除 5.cp -rp 原目录 目标目录,复制目录 -r 复制目录 -p 保留属性 二.文件处理 1.touch 文件名,创建空文件 2.cat 文件名,显示文件内容 -n 显示行号 3.tac 倒着显示文件内容 4.more和less 文件内容过多的时

十一、文件和目录——文件操作函数(续)

11.3 truncate 和  ftruncate 函数 --- 文件截短函数 11.3.1 函数介绍 改变文件大小的函数 相关函数 open 1 #include <unistd.h> 2 int truncate(const char * path, off_t length); 3 int ftruncate(int fd, off_t length); 函数说明 在文件尾端处截去一些数据以缩短文件 将一个文件的长度截短为 0 是一个特例,用 O_TRUNC 标志可以做到这一点 如果该