linux文件系统

一、根文件系统

  linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统(rootfs),其他分区要想被读到,需要挂载到根目录的某个挂载点(根的子目录)上。根文件系统至关重要,整个文件系统统一访问入口。  

  Linux引导启动时,默认使用的文件系统是根文件系统。其中一般都包括这样一些子目录:

  /boot 系统引导文件存放目录

  /bin 供所有用户使用的命令(不能关联到独立分支)不能关联到独立分区,os启动即会用到的程序。

  /sbin 管理员使用特权命令。root-only使用的命令。不能关联到独立分区,os启动即会用到的程序。

  /lib 基本共享库文件(启动就需要的库文件),以及内核模块文件。

  /lib64 专用于64位系统上的辅助库文件

  /etc 配置文件目录(大多纯文本文件)

  (1)/etc/opt 为opt启动文件存放配置目录

  (2)/etc/sgml /etc/xml两种标记语言。

  /home用户主目录约定俗成在/home/username(普通用户)管理员家目录就是/root

  /media 挂载光盘u盘等设备

  /mnt  挂载临时文件系统

  /dev 设备文件目录(特殊文件)

  b block device(可随机访问设备,三个电影,想看那个随机点那个都可以)  c character device(县信访设备,按顺序访问)

  /opt 附件,第三方应用程序安装目录系统安装完,额外安装的其他程序

  /srv 当前系统某些服务程序运行时,使用的中间数据。

  /tmp 临时文件存放位置

  注:除了/boot和/home是不能关联到独立分区的,必须在根上

  /usr 独立分区上的目录(全局共享只读数据):这可不是user的简写呦(拥有独立的文件系统结构)

   (1)/usr/bin 所有程序可使用

  (2)/usr/sbin 管理员使用

         他的配置文件还是在/etc下

      include,c语言头文件的标准库(头文件是描述库文件打开调用接口方式的)

   (3)/usr/share只读的 ,结构化独立数据

  (4)/usr/local第三方应用程序安装位置

  /var 通常独立分区,可变数据文件

  其中cache:应用程序缓存数据目录

lib 可变状态信息数据
local:专用于为/usr/local下应用程序存储可变数据
lock 锁文件
log 日志目录及文件
opt 专用于为/opt下应用程序存储可变数据
run 运行中进程的相关数据,通常用于存储进程中的pid
spool应用程序缓冲池
tmp 系统重启过程中的临时文件
/proc 用于输出内核,进程相关的虚拟文件系统,
/sys 输出当前系统上硬件设备相关信息的虚拟文件系统
/selinux selinux相关安全策略等信息的存储位置
二、linux下的文件类型
-(f)普通文件

d目录文件(存放的是路径信息,找到目录下的信息的路径信息,文件名到文件的路径信息)
b块设备文件,l软连接文件,c字符设备,p管道文件,s套接字文件(访问现有系统的一个专用接口)
三、系统管理类命令
关机或重启命令:
(1)halt,halt调用shutdown来关机,-f选项就是不调用shutdown强制关机,不建议使用
(2)shutdown,shutdown  [option...]  time  [message...]
-r 重启;-h关闭并清电源;-c取消关机选项;
time:now:立刻
+m:相对时间表示法,从命令提交后开始计算。
hh:mm:给定具体时间。
(3)power off,关机。
(4)init 0:关机;init6 重启。
(5)reboot;重启。
用户登录信息查看命令:
(1)whoami:显示当前登录的用户;
(2)who:当前所有登录会话;
(3)w:系统当前所有登录会话和操作。

常用管理命令

  1.使用pwd和cd命令来确定和切换目录

[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /
[root@localhost /]# pwd
/

[root@localhost /]# pwd
/
[root@localhost /]# cd
[root@localhost ~]# cd

  2.使用ls命令列出目录中的内容

  -a 显示所有的文件,包括隐藏文件,.开头的为隐藏文件

  -all 显示所有文件的详细信息,

  -l 显示文件详细信息,不包括隐藏文件

[root@localhost ~]# ls -a
.   anaconda-ks.cfg  .bash_logout   .bashrc  .lesshst  Python-3.6.1      .tcshrc
..  .bash_history    .bash_profile  .cshrc   .pki      Python-3.6.1.tgz  .viminfo
[root@localhost ~]# ls -all
total 22084
dr-xr-x---.  4 root root      223 Aug 28 03:04 .
dr-xr-xr-x. 22 root root     4096 Jul 23 06:59 ..
-rw-------.  1 root root     1669 May 13 10:16 anaconda-ks.cfg
-rw-------.  1 root root    19956 Jul 24 11:01 .bash_history
-rw-r--r--.  1 root root       18 Dec 28  2013 .bash_logout
-rw-r--r--.  1 root root      176 Dec 28  2013 .bash_profile
-rw-r--r--.  1 root root      176 Dec 28  2013 .bashrc
-rw-r--r--.  1 root root      100 Dec 28  2013 .cshrc
-rw-------.  1 root root       35 May 15 10:53 .lesshst
drwxr-----   3 root root       19 May 25 09:38 .pki
drwxr-xr-x  18  501  501     4096 Jun 12 09:15 Python-3.6.1
-rw-r--r--   1 root root 22540566 May 23 11:21 Python-3.6.1.tgz
-rw-r--r--.  1 root root      129 Dec 28  2013 .tcshrc
-rw-------   1 root root     9062 Aug 28 03:04 .viminfo
[root@localhost ~]# ls -l
total 22024
-rw-------.  1 root root     1669 May 13 10:16 anaconda-ks.cfg
drwxr-xr-x  18  501  501     4096 Jun 12 09:15 Python-3.6.1
-rw-r--r--   1 root root 22540566 May 23 11:21 Python-3.6.1.tgz

  3.使用cp命令复制文件和目录

  cp -r 递归复制

  cp -p 保留原文件的用户权限

[root@localhost /]# cp a.txt /tmp/
[root@localhost /]# ls /tmp/
a.txt  etc.conf  etc.test  maxusers.txt  test.txt
[root@localhost /]# cp -r /dj /tmp/
[root@localhost /]# ls /tmp/
a.txt  dj  etc.conf  etc.test  maxusers.txt  test.txt
[root@localhost /]# cp -rpf /dj /tmp/
[root@localhost /]# ls /tmp/
a.txt  dj  etc.conf  etc.test  maxusers.txt  test.txt

  4.使用mv命令移动及修改文件和目录名 

[root@localhost /]# mv a.txt b.t
[root@localhost /]# ls
bin   b.t  dj   home  lib64  mnt      oo   Packages  root  sbin  sys  tt   var
boot  dev  etc  lib   media  mylinux  opt  proc      run   srv   tmp  usr
[root@localhost /]# mv b.t /tmp/
[root@localhost /]# ls /tmp/
a.txt  b.t  dj  etc.conf  etc.test  maxusers.txt  test.txt

  5.使用mkdir命令创建目录

[root@localhost /]# mkdir -p /a/b/c/d
[root@localhost /]# ls /a/b/c/
d

[root@localhost /]# mkdir -p /tmp/a/b/c/d
    [root@localhost /]# ls /tmp/
    a a.txt b.t dj etc.conf etc.test maxusers.txt test.txt

  6.使用touch命令创建文件

[root@localhost /]# touch a.txt
[root@localhost /]# ls
a      bin   dev  etc   lib    media  mylinux  opt       proc  run   srv  tmp  usr
a.txt  boot  dj   home  lib64  mnt    oo       Packages  root  sbin  sys  tt   var

  7.使用rm命令删除文件

[root@localhost /]# rm -rf a.txt

bash的基础特性:

  一、命令历史

  history;history的环境变量:

  (1)HISTSIZE:命令历史的条数;

[root@localhost ~]# echo $HISTSIZE
1000

  (2)HISTFILE:持久保存命令历史的文件,当退出登录的时候,此次的命令历史才会被写入到HISTFILE中

[root@localhost ~]# echo $HISTFILE
/root/.bash_history

  命令历史存在~/.bash_history里。

  (3)HISTFILESIZE:命令历史文件记录的历史条数。

[root@localhost ~]# echo $HISTFILESIZE
1000

  二、history常用命令用法

  -c:清空命令历史

  -d offset:删除指定命令历史,offset为指定的行数

  -r:从文件读取命令历史至历史列表中

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

  history #:显示最近的#条命令

  -a:手动追加当前会话缓冲区的命令历史至历史文件中

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

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

  !!:再一次执行上一条命令

  !STRING:再一次执行命令历史列表中最近一个以STRING开头的命令

  调用上一条最后一个参数方法:!$;ESC,.;ALT+.。

  控制命令历史的记录方式:环境变量:HISTCONTROL;

  ignoredups:忽略重复命令,连续且相同才算重复。

  ignorespace:忽略以空白开头的命令。

  ignoreboth:以上两者皆忽略。
  修改环境变量值得方式为export 变量名=‘值’;变量赋值就是把赋值符号后面的数据存储于变量名指向内存空间。

[root@localhost ~]# echo $HISTCONTROL
ignoredups
[root@localhost ~]# export HISTCONTROL=ignoreboth
[root@localhost ~]# echo $HISTCONTROL
ignoreboth

  三、命令、路径补全

  命令补全:

  shell程序在接受到用户执行命令的请求时,最左侧的字符串会被当做命令

  命令查找机制:根据PATH环境变量中设定的目录($PATH),自左而右逐个搜索目录下的文件名

  按Tab可直接补全命令,若给定字符开头的命令不唯一,再次Tab给出以给定字符作为开头的文件列表

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

  四、命令行展开

  ~:展开为用户家目录;

  ~username:展开为指定用户的家目录

  {}:展开为多个路径。例:/tmp/{a,b} = /tmp/a,/tmp/b;/tmp/{a,b}/{c,d} =/tmp/a/c,/tmp/a/d,/tmp/b/c,/tmp/b/d。

  五、命令的执行结果

  命令执行的状态结果有两种:成功(0),失败(1-255),可用$?查看最近一条命令的执行状态结果。

  程序执行有两类结果:程序返回值和程序执行状态结果。

  六、命令别名(alias)

  alias:显示当前shell进程所有可用别名。

[root@localhost tmp]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

  alias name=‘value’:定义别名,使用alias相当于执行value。

  :在命令行定义别名,仅对当前shell有效,永久有效需要定义在配置文件中。

  对当前用户:~/.bashrc

  对所有用户:/etc/bashrc

  并且编辑配置不会立即生效。

  撤销别名(unalias)

  七、glob(bash中用于实现文件通配)

  通配符:*,?,[]

  *任意长度的任意字符

  ?任意单个字符

  []匹配指定范围的单个字符[0-9],[a-z]:所有字母,不区分大小写[A-Z]:大写字母

  [^]取反

  专用字符集:

   [[:upper:]]:所有大写字母

  [[:lower:]]:所有小写字母

  [[:alpha:]]:所有字母

 [[:digit:]]:所有数字

 [[:alnum:]]:所有的字母和数字

 [[:space:]]:所有空白字符

 [[:punct:]]:所有标点符号

  八、bash的I/O重定向及管道

  打开文件都有一个fd:file descriptor(文件描述)

  标准输入:0

  标准输出:1

  错误输出:2

  I/O重定向就是改变标准位置。

  输出重定向:

  >    覆盖输出

  >>    追加输出

  set -C:禁止覆盖输出重定向至已存在的文件

  set +C:开启覆盖输出重定向至已存在的文件(默认)

  错误输出重定向:

  2>    覆盖输出

  2>>    追加输出

  合并正常输出流和错误输出流

  &>    覆盖输出

  &>>    追加输出

  COMMADN > /PATH/TO/somefile  2>&1 :如果命令执行成功则覆盖输出至somefile,执行不成功也覆盖输出至somefile

  COMMAND >> /PATH/TO/somefile 2>&1:如果命令执行成功则追加覆盖至somefile,执行不成功也追加输出至somefile

  注:特殊设备:当不需要命令的执行结果,只需要知道命令的执行状态,则可以重定向至/dev/null,/dev/null相当于一个垃圾桶。

  输入重定向:<

  Here Document:<<,可以作为指定文件的结束符,常用于shell编程

[root@localhost tmp]# cat <<EOF
> how are you
> EOF
how are you

  tr [OPTION]... SET1 [SET2]

  把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位转换为SET2出现的字符,不修改原文件

  tr -d SET1  <  /PATH/FROM/SOMEFILE     删除SET1中的字符,区分大小写

  管道

  连接程序,最后一个命令会在当前shell进程的子进程中执行。

  COMMAND1 | COMMAND2 | COMMAND3 ...

[root@localhost tmp]# echo 'abcdefg' | tr 'a-z' 'A-Z' | tr -d 'AD'
BCEFG

  tee

  显示程序的输出并将其复制到一个或多个文件中。

目录管理类命令

  一、mkdir

  make directories 创建目录

  mkdir [OPTION]... DIRECTORY...

  常用选项:

  -p:存在不报错,逐级生成目录;

  -v:显示详细信息;

  -m:mode,创建目录时直接指定权限。

  mkdir一次可创建多个目录:

[root@localhost tmp]# mkdir -v {a,b}/{c,d}
mkdir: cannot create directory ‘a/c’: No such file or directory
mkdir: cannot create directory ‘a/d’: No such file or directory
mkdir: cannot create directory ‘b/c’: No such file or directory
mkdir: cannot create directory ‘b/d’: No such file or directory

  

[root@localhost ~]# mkdir -p /mylinux/{bin,boot/grub,dev,etc/{rd.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
[root@localhost ~]# tree /mylinux
/mylinux
├── bin
├── boot
│   └── grub
├── dev
├── etc
│   ├── rd.d
│   │   └── init.d
│   └── sysconfig
│       └── network-scripts
├── lib
│   └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│   └── local
│       ├── bin
│       └── sbin
└── var├── lock├── log└── run

  二、rmdir

  remove empty direcories

  移除空目录

  常用选项:

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

  -v:显示过程

[root@localhost b]# rmdir -pv /tmp/a/b/c/
rmdir: removing directory, ‘/tmp/a/b/c/’
rmdir: removing directory, ‘/tmp/a/b’
rmdir: removing directory, ‘/tmp/a’
rmdir: removing directory, ‘/tmp’
rmdir: failed to remove directory ‘/tmp’: Device or resource busy

  三、tree:

  -d:只显示目录

  -L:level:指定显示的层级数目

  -P:pattern只显示由指定pattern匹配到的路径。

快捷操作

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

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

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

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

  ctrl+l:清屏,相当于clear

文本文件查看类命令

  cat

  cat [OPTION]... [FILE]...

  查看文件内容,直接显示到文件底部

  常用选项:

  -n:可以显示行数;

  tac与cat类似,可反向查看文件内容

  head

  与cat类似,常用选项:

  -c #:指定获取前#字节;

  -n # / -#:指定获取前#行。

  tail

  与head相似,除了-c与-n以外,-f可跟踪显示文件新追加的内容。

文件的时间戳管理工具:

  一、stat

  display file or file system status

  文件:两类数据

  元数据:metadata,文件的状态,创建时间,修改时间,大小,权限等

  数据:文件里面的内容

  stat显示的就是文件的元数据,包含文件路径,大小,blocks数目,IO block,文件类型,inode号,权限,uid,gid和三个时间戳等

  三个时间戳:

  access:最近一次访问的时间,即atime

  modify:最近一次修改文件的时间,即mtime

  change:文件最近一次改变的时间,即改变元数据的时间即ctime

  二、touch

  change file timestamps  修改时间戳

  touch [OPTION]... FILE...

  文件不存在则创建文件,当直接使用命令去touch一个文件的时候,修改的是所有的时间戳

  常用选项:

  -c:指定的文件路径不存在时不予以创建

  -a:仅修改access time

  -m:仅修改modify time

  -t   STAMP

[[CC]YY]MMDDhhmm[.ss]

文件管理工具

  一、cp

  复制文件或者目录

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

  cp [OPTION]... SOURCE... DIRECTORY

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

  cp SRC DEST

  SRC是文件

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

    如果DEST存在:DEST是非目录文件,则覆盖DEST文件

    DEST是目录文件,则在DEST目录下创建一个与源文件同名的文件,并复制其数据

SRC是多个文件时:
DEST必须存在,且为目录,否则就会报错。
SRC是目录:
DEST不存在,则创建指定目录,复制SRC目录中所有文件至DEST。
DEST存在,DEST是文件,报错,DEST是目录分别复制每个文件至目标目录中,并保持原名。

  常用选项:

  -i:交互式复制

  -f:强制覆盖目标文件

  -r,-R:递归复制目录

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

  -a:-dR --preserve=all, archive,用于实现归档;

  --preserv[=ATTR_LIST]         

    mode:权限

    ownership:属主和属组

  timestamps: 时间戳

  context:安全标签

  xattr:扩展属性

  links:符号链接

  all:上述所有属性

  二、mv

  移动文件,可用来重命名文件

mv [OPTION]... [-T] SOURCE DEST

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

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

  常用选项:
  -i:交互式

  -f:强制覆盖文件

  三、rm

  移除文件

  rm [OPTION]... FILE...

  常用选项:

  -i:交互式移除文件

  -f:强制删除文件

  -r:递归删除

  :所有不用的文件建议不要直接删除,可以移动至某个专用的目录(用来做回收站的目录)

  :还有个无敌bug,rm-rf /*。

转载于:https://www.cnblogs.com/Jeffding/p/7192418.html

linux文件系统及bash基础特性相关推荐

  1. 红叶李之Linux bash 基础特性

    Linux系统管理之bash基础特性 1.补全 系统支持的shell: # cat /etc/shells当前系统默认shell:# echo $SHELL命令补全:给定的打头的字符串如果在系统中能够 ...

  2. 每个程序员都应该知道的Linux基础知识!全文4900字,没有耐心的不建议看 ——( Linux文件系统 + 系统管理类命令 + bash基础特性)

    文章目录 - Linux的文件系统 - LSB - FHS - 根文件系统 - 对根文件系统下目录的概述: /boot /bin /sbin /lib /lib64 /etc /home /root ...

  3. 文件管理和用户管理命令以及bash基础特性

    文章目录 文件管理相关命令 常用的文件管理命令 常用的文件内容查看命令 其他常用基础命令 元数据 用户及用户组详解及其常用命令 用户 用户组 权限 特殊权限位 常用的用户(组)管理命令及权限管理命令 ...

  4. 谢烟客---------Linux之Bash基础特性(2)

    Linux之哲学思想 一切皆文件 避免交互,实现Bash编程 文本编程命令实现配置 组合小程序完成复杂任务 总结 过程式编程 对象式编程 编译执行 解释执行 程序的组成 数据可存储的位置 数据类型的字 ...

  5. linux 命令都是bash,Linux 命令分类_bash基础特性

    1.历史命令 history 在内存中缓存当前终端使用过的命令, 与其相关的几个环境变量的配置: HISTSIZE    :在内存中缓存命令的个数(history 中命令的个数) HISTFILE  ...

  6. Linux bash 的基础特性

    Linux bash 基础特性 bash基础特性之一:命令历史 bash基础特性之二:命令或路径补全 bash基础特性之三:命令行展开 bash基础特性之四:命令的执行状态结果 bash基础特性之五: ...

  7. linux中的bash shell的特性

    linux中的bash shell特性(基础) Shell也称命令行解释器,是我们对linux进行操作最直接的接触的脚本,所以说这对我们的今后的学习过程中非常重要. 当然,linux这种功能强大的操作 ...

  8. linux bash基本特性

    一.bash 基础特性 (1)命令历史的功能 history: 环境变量 HISTSIZE:命令历史记录的条数 HISTFILE: ~/.bash_history 每个用户都有自己独立的命令历史文件 ...

  9. 低调的 Linux 文件系统家族

    在 Linux 中,最直观.最可见的部分就是 文件系统(file system).下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想. 这些思想中有一些 ...

最新文章

  1. java快排算法解读,java 快排的思路与算法
  2. 基于mimeTex的数学公式Webservice的部署和实现
  3. sql中varchar(n),nvarchar(n) 长度性能及所占空间分析
  4. 来自于参赛队伍所反映的总决赛落选之后的建议
  5. Linux对称NAT的UDP穿越
  6. UVA11134传说中的车(放棋子)
  7. 工作场合少聊事事非非
  8. 如何设计一个小而美的秒杀系统?
  9. 确定组织是否真正敏捷的五种方法
  10. python空气质量分析报告_Python数据可视化:2018年北上广深空气质量分析
  11. VTK:图片之ImageMask
  12. 技术干货 | 源码解析 Github 上 14.1k Star 的 RocketMQ
  13. abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之六(三十二)
  14. 36 如何营造一种活跃的科研气氛/如何培养表达交流能力
  15. Eigen 简明教程之如何从Python转到Eigen
  16. Spring Cloud 服务注册与发现 [ eureka ]
  17. Principles of Reactive Programming 之Actors are Distributed (3)
  18. 【代码源 Div1 - 101】#61. 二分答案(贪心)
  19. Java 中equals 与 == 的区别:
  20. 致25岁一无是处的你

热门文章

  1. 02-c#基础之01-基础语法(一)
  2. mysqldump造成Buffer Pool污染的研究 [转]
  3. MySQL 添加列,修改列,删除列 的SQL写法
  4. c#,xp系统,Matlab6.5
  5. 1 Hadoop简介
  6. 一张图看懂单机/集群/热备/磁盘阵列(RAID)
  7. FTP文件共传输服务
  8. Statspack安装心得
  9. 应对不良网络文化的技术之一——网络信息抽取技术
  10. 算法基础系列之三:螺旋形矩阵