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

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

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

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

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

[root@localhost ~]# echo $HISTFILESIZE

  二、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 /*。

linux文件系统及bash基础特性的更多相关文章

  1. Linux就该这样学--之常用linux命令及bash基础

    Linux就该这样学--之常用linux命令及bash基础 Linux命令 管道 重定向 环境变量 常用命令 常用系统工作命令 系统状态检测命令 工作目录切换命令 文本文件编辑命令 文件目录管理命令 ...

  2. 自学Linux Shell19.1-gawk程序基础特性

    点击返回 自学Linux命令行与Shell脚本之路 19.1-gawk程序基础特性 linux世界中最广泛使用的两个命令行编辑器: sed gawk 1. gawk概念 awk是一个强大的文本分析工具 ...

  3. 自学Linux Shell18.1-sed编辑器基础特性

    点击返回 自学Linux命令行与Shell脚本之路 18.1-sed编辑器基础特性 linux世界中最广泛使用的两个命令行编辑器: sed gawk 1. sed概念 sed是stream edito ...

  4. Linux bash基础特性二

    shell脚本的组成部分 shebang 各种命令组合 编程变量种类 本地变量: 仅仅在当前的shell生效 环境变量: 在当前和子shell生效 局部变量: shell进程某代码片段 位置变量: $ ...

  5. Linux bash基础特性一

    命令别名 alias cdnet=”cd /etc/sysconfig/network-scripts” 针对用户的别名: “~/.bashrc” 针对系统的别名:”/etc/bashrc” 重读配置 ...

  6. linux bash基础特性

    使用history命令,取得命令历史,当bash进程结束后,会把命令历史存放到文件中,下次开机还能看到命令历史. 定制history:通过设置环境变量,来定制history 环境变量$HISTSIZE ...

  7. bash基础特性1

    shell俗称壳(用来区别于内核),是指“提供使用者使用界面”的软件,就是一个命令行解释器. BASH是SHELL的一种,是大多数LINUX发行版默认的SHELL,除BASH SHELL外还有C SH ...

  8. Bash 基础特性

    命令别名  alias 显示当前shell中定义的所有别名  alias 别名='原始命令'  unalias 别名 取消定义的别名在命令前加\使用命令本身,而不是别名(或者使用绝对路径执行命令使用命 ...

  9. bash基础特性3(shell编程)

    Linux上文本处理三剑客: grep:文本过滤工具 sed:stream editor,文本编辑工具 awk:文本报告生成器 grep -v:显示不能够被pattern匹配到的行 -i:忽略字符大小 ...

随机推荐

  1. linux升级openssh7.4sp1

    1.准备相关的包 openssh下载地址:http://mirror.internode.on.net/pub/OpenBSD/OpenSSH/portable/ openssl相关包下载:http: ...

  2. 禁止右键,禁止选中,禁止网页复制的Js代码

    document.oncontextmenu=new Function('event.returnValue=false;'); document.onselectstart=new Function ...

  3. DELPHI XE8 远程调试

    最近公司项目遇到问题需要远程调试搜索了一下怎么用 发现网上能找到最新的是XE2上的说明现在已经有一些不同了 按照上面的方法不能调试成功 经过测试XE8的方法如下:1.项目编译设置:2.在被调试电脑上运 ...

  4. 利用arpspoof和urlsnarf 进行ARP嗅探

    地址解析协议 (ARP, Address Resolution Protocol) 是如何将网络设备的MAC地址和其IP地址关联起来的,这样在同一个局域网内的设备就能相互知道彼此的存在.ARP基本上就 ...

  5. php面向对象1

    类和对象的关系 首先看一段代码 var_dump()后的结果 注意 一个对象系统自动分配一个对象标识符!

  6. 关于dubbo分享

    一.dubbo服务是基于zookeeper提供服务.提供消费 1.Zookeeper的作用: zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用者知道,简单来说就是i ...

  7. thinkphp5.0学习笔记(四)数据库的操作

    ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理.采用PDO ...

  8. MongoDB--数据库与Collection注意事项

    <h2>    <strong>注意事项:</strong></h2>1.数据库名注意应该全部小写,不能包含空格,最大长度为64K名称<br /& ...

  9. 实现一个javascript手势库 -- base-gesture.js

    现在移动端这么普及呢,我们在手机上可以操作更多了.对于网页来说实现一些丰富的操作感觉也是非常有必要的,对吧(如果你仅仅需要click,,那就当我没说咯...)~~比如实现上下,左右滑动,点击之类的,加 ...

  10. 并归排序 (Java版本,时间复杂度为O(n))

    自己上网查了一下并归排序的定义,把两个排序好的数组重新组成一个排序好的数组就是并归排序, 实现的方式有和多种,自己思考了一下,用java实现了一版本,思路如下,既然是排序好的,只需要依次比较两个数组, ...