Centos7系列:文件及目录管理相关命令(一)

Centos7系列:文件及目录管理相关命令(一)

Administrator 1151 2018-03-23

本文主要介绍Centos7的目录结构,文件类型,以及一些基础命令,如lsalias命令,来进一步了解Centos系统的基本操作。

Linux目录结构


系统目录结构

  • Linux的系统目录组织方式是树形的,从根目录/开始,其下又有多个子目录:

    [root@evobot ~]# ls /
    bin   dev  home  lib64       media  opt   root  sbin  sys  usr
    boot  etc  lib   lost+found  mnt    proc  run   srv   tmp  var
    
  • 我们的shell提示符是[root@evobot ~]#,其中root表示当前用户名,evobot表示主机名,**~表示当前所在目录为家目录,root用户的家目录就是根目录下的root目录,后面的 # 表示当前是root用户,如果是普通用户,则是$**符号,普通用户的家目录都在根目录下的home目录下;

  • 家目录主要是存贮与用户相关的配置文件;

  • 我们可以使用tree命令直观的看出系统的目录结构,默认Centos并没有安装tree命令,使用yum -y install tree即可安装该命令,tree命令的参数-L可以指定显示的目录层数:

  [root@evobot ~]# tree -L 1 /
  /
  |-- bin -> usr/bin
  |-- boot
  |-- dev
  |-- etc
  |-- home
  |-- lib -> usr/lib
  |-- lib64 -> usr/lib64
  |-- lost+found
  |-- media
  |-- mnt
  |-- opt
  |-- proc
  |-- root
  |-- run
  |-- sbin -> usr/sbin
  |-- srv
  |-- sys
  |-- tmp
  |-- usr
  `-- var

  20 directories, 0 files
  • 系统目录作用说明
目录名说明
/binbin目录主要存放的是系统的命令,我们所使用的命令如lsyum等,都存放于bin目录下,bin目录不止有/bin,还有/usr/bin//usr/sbin//sbin/也是同样的作用,区别是sbin目录下的命令是超级用户root使用的命令;
/bootboot目录主要存放系统的启动文件,当我们启动系统时,进入的grub界面,就是存放在boot目录下;
/devdev目录是存放设备文件的目录,在Linux系统中,一切皆文件,所以即使是硬盘,光驱,在目录下呈现的也是一个文件;
/lib & /lib64lib及lib64是存放系统的库文件的目录,很多命令会依赖库文件,查看一个命令依赖哪些库,可以使用ldd命令:ldd /bin/ls;
/proc系统进程目录,系统的每个进程都会在这个目录下创建自己的进程文件和目录;在proc目录下存在以数字命名的目录,这就是进程的PID,在PID目录下可以看到cwd文件指向一个位置,这就是进程运行所在的目录;
/run进程运行存放临时文件的目录,在系统重启或关机后目录会清空;
/srv存放服务产生的文件,默认为空;
/sys存放系统内核相关的文件,一般不会使用到这个目录;
/tmp临时目录,任何用户都可以在其下创建文件;
/usr系统用户使用到的命令或文件、库文件的存放位置;一般安装的服务都会放在/usr/local目录下;
/var存放系统运行相关的文件,如日志/var/log;进程PID等。

ls命令

命令语法

  • ls命令主要用来显示目标列表,是使用率较高的命令,同时Centos系统默认ls命令的输出信息会进行彩色加亮显示,以区分不同了类型的文件。
  • ls的语法是ls (选项) (目录或文件)

常用选项

选项作用
-l输出详细信息,从左到右分别是文件类型、权限、硬链接数、所有者、组、文件大小、最后修改时间以及文件名 ;
-i显示文件的索引节点号,即inode号,inode记录文件存储在磁盘的所在块和区信息,如果两个文件inode号一样,则两个文件相同;
-h人性化显示文件大小,会在文件大小后显示单位,如K,MB;
-a显示所有文件及目录,包括.开头的隐藏文件和目录,而...表示当前目录和上层目录,.所表示的当前目录的详细信息中的硬链接数,也表示当前目录下有多少个子目录;
-t以时间顺序排序显示,越晚的排在越上面;
-d只列出目录本身,不列出目录下的文件和子目录;
  • 系统中还存在着命令的别名,比如ll就等于ls -l,查看别名代表的详细命令,可以使用which (命令)来查看:

    [root@evobot ~]# ll
    total 4
    drwxr-xr-x 2 root root 4096 Mar 12 17:42 source
    [root@evobot ~]# which ll
    alias ll='ls -l --color=auto'	# --color=auto表示彩色高亮显示
    	/bin/ls
    

文件类型

  • 在使用ls -l命令时,左边第一位表示文件的类型,文件类型有以下几种:
符号表示代表类型
d表示目录;
-表示普通文件,如文本文档,二进制文件;
c表示字符串设备,如键盘,鼠标设备文件;
l表示软连接文件,类似于windows的快捷方式;
b块设备,如光驱,磁盘文件;
s表示socket文件,socket文件是进程用来通信的文件。

命令别名

查看命令别名

  • 前面使用which查看命令别名所表示的实际命令,而命令别名是使用alias来定义的;

  • 执行alias可以查看系统所有的命令别名和其所代表的实际命令:

    [root@evobot ~]# 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'
    
  • 可以看到which命令其实也是命令别名,实际上which是在系统的PATH环境变量所指向的目录中区查找我们要查看的命令,查看PAHT环境变量:

    [root@evobot ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    

设置别名

  • 设置别名可以直接使用alias (别名) (原命令 -选项/参数)来设置:

    [root@evobot ~]# alias show='ls -lha'
    [root@evobot ~]# show
    total 52K
    dr-xr-x---.  6 root root 4.0K Mar 14 23:22 .
    dr-xr-xr-x. 18 root root 4.0K Mar 24 00:04 ..
    -rw-------   1 root root 3.7K Mar 24 00:04 .bash_history
    -rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
    -rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
    -rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
    drwxr-xr-x   3 root root 4.0K Mar  8 15:46 .cache
    drwxr-xr-x   3 root root 4.0K Mar  8 15:46 .config
    -rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
    drwxr-xr-x   2 root root 4.0K Mar 12 17:42 source
    drwx------   2 root root 4.0K Mar 12 14:25 .ssh
    -rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
    -rw-------   1 root root 3.9K Mar 14 23:22 .viminfo
    
  • 想要取消命令别名,则使用unalias (别名)即可,unalias有一个-a参数,可以取消系统所有的命令别名:

    [root@evobot ~]# unalias show
    [root@evobot ~]# show
    -bash: show: command not found
    
  • 这样直接使用命令设置命令的别名,只会作用于当前登陆的操作,一旦退出登陆或重启,使用alias命令直接设置的别名也会被清除,如果需要每次登陆都能使用别名,则需要将相应的alias命令写入/etc/bashrc文件中,如果限定指定用户的别名,则写入用户家目录下的.bashrc文件中。