系统目录结构上下

ls=列出系统目录和文件


[root@ask-01 ~]# ls /

bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var


使用ls命令列出根目录下的所有文件,这些文件分别都有自己的用意,接下来就认识一些常用的目录

[root@ask-01 ~]# ls /root

anaconda-ks.cfg


ROOT目录就是root用户的家目录,每个用户都有一个家目录,用户的家目录就是用来存一些它的配置文件。

[root@ask-01 ~]# ls /root/.ssh/authorized_keys

/root/.ssh/authorized_keys


比如之前我们建好的密钥的配置文件。如果我们需要给别的普通用户名创建密钥同样的也需要在别的用户下创建.ssh/authorized_keys文件。比如我们现在就可以使用useradd命令创建好一个新的普通用户,这样我们就可以在home的目录下看到我们新建好的用户目录


useradd=创建普通用户的命令

[root@ask-01 ~]# useradd Ask

[root@ask-01 ~]# ls /home/

Ask


这时我们就可以在Ask用户目录中创建密钥配置文件了。普通用户和root的位置是不一样的,root用户是在根目录下,普通用户是在home的目录下。

接下来我们可以看下目录结构,根目录下都有哪些目录或者文件,这里我们可以用个命令把它列出来叫tree


tree=竖形的方式列出目录下都有哪些目录

默认一开tree命令是还没有安装的,需要进行安装,我们可以使用yum命令开始安装tree。

[root@ask-02 ~]# tree

-bash: tree: 未找到命令

[root@ask-02 ~]# yum install -y tree

已加载插件:fastestmirror

base                                                                                | 3.6 kB  00:00:00     

extras                                                                              | 3.4 kB  00:00:00     

updates                                                                             | 3.4 kB  00:00:00     

extras/7/x86_64/primary_db                                                          | 145 kB  00:00:00     

Loading mirror speeds from cached hostfile

* base: mirrors.aliyun.com

* extras: mirrors.163.com

* updates: mirrors.aliyun.com

正在解决依赖关系

--> 正在检查事务

---> 软件包 tree.x86_64.0.1.6.0-10.el7 将被 安装

--> 解决依赖关系完成

依赖关系解决

===========================================================================================================

Package               架构                    版本                            源                     大小

===========================================================================================================

正在安装:

tree                  x86_64                  1.6.0-10.el7                    base                   46 k

事务概要

===========================================================================================================

安装  1 软件包

总下载量:46 k

安装大小:87 k

Downloading packages:

tree-1.6.0-10.el7.x86_64.rpm                                                        |  46 kB  00:00:05     

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

  正在安装    : tree-1.6.0-10.el7.x86_64                                                               1/1

  验证中      : tree-1.6.0-10.el7.x86_64                                                               1/1

已安装:

  tree.x86_64 0:1.6.0-10.el7                                                                               

完毕!


这时我们就可以开始使用tree命令了,只是用tree命令查看根目录的话,会显示的目录太多了,在此我们可以用man命令来看下tree的命令都有哪些操作


man=查看命令的详细信息,可以通过这个命令详细的了解到什么有哪些参数和用法

[root@ask-02 ~]# man tree

TREE(1)                                  General Commands Manual                                 TREE(1)

NAME

       tree - list contents of directories in a tree-like format.

SYNOPSIS

       tree  [-acdfghilnpqrstuvxACDFQNSUX]  [-L  level  [-R]]  [-H  baseHREF]  [-T  title] [-o filename]

       [--nolinks] [-P pattern] [-I pattern] [--inodes] [--device]  [--noreport]  [--dirsfirst]  [--ver‐

       sion] [--help] [--filelimit #] [--si] [--prune] [--du] [--timefmt format] [directory ...]

-L level

              Max display depth of the directory tree.


这里我们可以看到参数 -L level的意思就是指定最大的目录的深度。打个比方我们指定就要看最大目录二层,我们就可以这么输入

[root@ask-02 ~]# tree -L 2 /

/

├── bin -> usr/bin

├── boot

│   ├── config-3.10.0-514.el7.x86_64

│   ├── grub

│   ├── grub2

│   ├── initramfs-0-rescue-4fcceeac8b60402197becade5286e4ef.img

│   ├── initramfs-3.10.0-514.el7.x86_64.img

│   ├── initramfs-3.10.0-514.el7.x86_64kdump.img

│   ├── initrd-plymouth.img

│   ├── symvers-3.10.0-514.el7.x86_64.gz

│   ├── System.map-3.10.0-514.el7.x86_64

│   ├── vmlinuz-0-rescue-4fcceeac8b60402197becade5286e4ef

│   └── vmlinuz-3.10.0-514.el7.x86_64

├── dev

│   ├── agpgart

│   ├── autofs

│   ├── block

│   ├── bsg

│   ├── btrfs-control


这样,我们就可以清楚的看到哪些目录下有哪些文件,比如boot下有grub和grub2。

那么我们常用到的目录有一下几个:bin;dev;etc;home;sbin;boot


bin

这里bin有两个,bin是用来存放命令文件的,我们使用的ls就是在bin的目录下(两个bin目录下都有),那么bin和sbin的区别是什么呢?bin是普通用户下存的命令文件目录,sbin是超级用户下存的命令文件目录,sbin中的s就是super的意思。那么sbin的目录里能有属于普通用户的命令也有属于超级用户的命令,而bin的目录下就没有超级用户的命令。所以root用户就能使用sbin下的命令,同样也可以使用bin下的命令,而普通用户则不能使用sbin下的命令。


boot

boot目录就是存放系统启动相关文件的目录,比方grub(单用户模式)就在boot目录下面,那么boot目录里的系统文件不能随意删除,否则很容易就到系统启动不了

[root@ask-02 ~]# ls /boot

config-3.10.0-514.el7.x86_64                             initrd-plymouth.img

grub                                                     symvers-3.10.0-514.el7.x86_64.gz

grub2                                                    System.map-3.10.0-514.el7.x86_64

initramfs-0-rescue-4fcceeac8b60402197becade5286e4ef.img  vmlinuz-0-rescue-4fcceeac8b60402197becade5286e4ef

initramfs-3.10.0-514.el7.x86_64.img                      vmlinuz-3.10.0-514.el7.x86_64

initramfs-3.10.0-514.el7.x86_64kdump.img


dev

dev是Linux系统里的一些设备文件目录,比方说键盘;鼠标;光盘;硬盘,它们都在dev下面

[root@ask-02 ~]# ls /dev

agpgart          full                null    snapshot  tty19  tty35  tty51  ttyS1    vcsa2

autofs           fuse                nvram   snd       tty2   tty36  tty52  ttyS2    vcsa3

block            hidraw0             oldmem  sr0       tty20  tty37  tty53  ttyS3    vcsa4

bsg              hpet                port    stderr    tty21  tty38  tty54  uhid     vcsa5

btrfs-control    hugepages           ppp     stdin     tty22  tty39  tty55  uinput   vcsa6

bus              initctl             ptmx    stdout    tty23  tty4   tty56  urandom  vfio


etc

etc是系统的一些配置文件的目录,比方说我们的网卡配置文件就是创建在这里的

[root@ask-02 ~]# ls /etc/sysconfig/network-scripts/ifcfg-

ifcfg-ens33    ifcfg-ens33-1  ifcfg-ens33-2  ifcfg-lo


home

home 是用户的家目录,这目录用来存用户的一些文件

[root@ask-02 ~]# ls /home

ASk


lib

lib和lib64是我们的库目录,我们很多命令都依赖库目录,我们可以打个比方看下ls都以来哪些库

[root@ask-02 ~]# ldd /bin/ls

    linux-vdso.so.1 =>  (0x00007ffc769f1000)

    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f21ce933000)

    libcap.so.2 => /lib64/libcap.so.2 (0x00007f21ce72e000)

    libacl.so.1 => /lib64/libacl.so.1 (0x00007f21ce524000)

    libc.so.6 => /lib64/libc.so.6 (0x00007f21ce163000)

    libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f21cdf02000)

    libdl.so.2 => /lib64/libdl.so.2 (0x00007f21cdcfd000)

    /lib64/ld-linux-x86-64.so.2 (0x00007f21ceb62000)

    libattr.so.1 => /lib64/libattr.so.1 (0x00007f21cdaf8000)

    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f21cd8dc000)


这里我们可以看到ls依赖在libselinux.so.1 => /lib64/; libcap.so.2 => /lib64/等等。


media

media是媒介目录,默认是空目录,比方说我插上U盘,那么它就可以自动的放在media目录下。


mnt

mnt是个临时的挂载目录,默认也是空的,我们可以临时把光驱或者硬盘挂载在这个目录下面去


run 目录存放:进程产生的临时文件,重启关机文件会消失的!

srv 目录存放:服务产生的文件,一般为空.sys 目录存放:系统内核相关的文件(平时用不到的)

tmp 系统的临时目录,任何用户都可以在tmp下操作

usr 目录存放:系统用户所用得到的一些文件

var 目录存放:进程服务产生的一些临时文件缓存


ls命令

ls的具体用法,都有哪些参数选项


ls -l:就可以把这个目录的文件详细的列出来

[root@ask-02 ~]# ls -l

总用量 4

-rw-------. 1 root root 1422 12月 12 08:01 anaconda-ks.cfg

系统目录结构/ls命令/alias命令_系统目录结构;ls命令;alias命令系统目录结构/ls命令/alias命令_系统目录结构;ls命令;alias命令_02

-rw-------  =  权限

1                =  文件数量

root           =  用户

root           =  用户所属组

1422         =   文件大小

12月12 08:01  =  时间日期

anaconda-ks.cfg  =  文件名


ls -i:查看目录或者文件的inode号

[root@ask-02 ~]# ls -i

33582987 anaconda-ks.cfg

系统目录结构/ls命令/alias命令_系统目录结构;ls命令;alias命令系统目录结构/ls命令/alias命令_系统目录结构;ls命令;alias命令_04

33582987   是这个文件的inode号,

inode号是唯一的,多个文件可以同时用相同inode号


ls -la:显示这个目录下的所有文件包括隐藏文件(文件名前加“点”的就是隐藏文件)

[root@ask-02 ~]# ls -la

总用量 28

dr-xr-x---.  3 root root  147 12月 13 21:50 .

dr-xr-xr-x. 17 root root  245 12月 15 03:14 ..

-rw-------.  1 root root 1422 12月 12 08:01 anaconda-ks.cfg

-rw-------.  1 root root 1757 12月 15 16:37 .bash_history

-rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout

-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile

-rw-r--r--.  1 root root  176 12月 29 2013 .bashrc

-rw-r--r--.  1 root root  100 12月 29 2013 .cshrc

drwx------.  2 root root   61 12月 15 15:45 .ssh

-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc


ls -lta:以时间的顺序排列

[root@ask-02 ~]# ls -lta

总用量 28

-rw-------.  1 root root 1757 12月 15 16:37 .bash_history

drwx------.  2 root root   61 12月 15 15:45 .ssh

dr-xr-xr-x. 17 root root  245 12月 15 03:14 ..

dr-xr-x---.  3 root root  147 12月 13 21:50 .

-rw-------.  1 root root 1422 12月 12 08:01 anaconda-ks.cfg

-rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout

-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile

-rw-r--r--.  1 root root  176 12月 29 2013 .bashrc

-rw-r--r--.  1 root root  100 12月 29 2013 .cshrc

-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc


ls -ld:和ls -l 的却别就在-l会列出目录下的子文件,加了d就只会显示目录本身

[root@ask-02 ~]# ls -l /

总用量 16

lrwxrwxrwx.  1 root root    7 12月 12 07:58 bin -> usr/bin

dr-xr-xr-x.  4 root root 4096 12月 12 08:04 boot

drwxr-xr-x. 19 root root 3160 12月 16 00:22 dev

drwxr-xr-x. 77 root root 8192 12月 16 01:38 etc

drwxr-xr-x.  3 root root   17 12月 16 01:38 home

lrwxrwxrwx.  1 root root    7 12月 12 07:58 lib -> usr/lib

lrwxrwxrwx.  1 root root    9 12月 12 07:58 lib64 -> usr/lib64

drwxr-xr-x.  2 root root    6 11月  5 2016 media

drwxr-xr-x.  2 root root    6 11月  5 2016 mnt

drwxr-xr-x.  2 root root    6 11月  5 2016 opt

dr-xr-xr-x. 98 root root    0 12月 16 00:22 proc

dr-xr-x---.  3 root root  147 12月 13 21:50 root

drwxr-xr-x. 21 root root  580 12月 16 00:59 run

lrwxrwxrwx.  1 root root    8 12月 12 07:58 sbin -> usr/sbin

drwxr-xr-x.  2 root root    6 11月  5 2016 srv

dr-xr-xr-x. 13 root root    0 12月 16 00:22 sys

drwxrwxrwt.  8 root root  233 12月 16 00:59 tmp

drwxr-xr-x. 13 root root  155 12月 12 07:58 usr

drwxr-xr-x. 19 root root  267 12月 16 00:22 var

[root@ask-02 ~]# ls -ld /

dr-xr-xr-x. 17 root root 245 12月 15 03:14 /


ll=ls -l  是ls -l 的别名

我们可以同过which命令来查看ll是那个命令的别名

[root@ask-02 ~]# which ll

alias ll='ls -l --color=auto'

    /usr/bin/ls


alias命令

alias别名命令,我们可以通过which命令查看命令是有别名,比如,ls和ll这些命令都是有别名的,which是用来查看

一个文件所在的路径的。


[root@ask-02 ~]# which ll

alias ll='ls -l --color=auto'

    /usr/bin/ls

[root@ask-02 ~]# which ls

alias ls='ls --color=auto'

    /usr/bin/ls

[root@ask-02 ~]# which man

/usr/bin/man

[root@ask-02 ~]# which yum

/usr/bin/yum


这里我们可以看到有些命令前面有alias 有些则没有,alias的意思就表示该命令是由ls命令加一个选项这样的组合形成的一个新的命令

如果我们不想使用别名,那我们可以直接使用绝对路径命令,那么它列出来的目录就没有颜色的了


[root@ask-02 ~]# /usr/bin/ls /

bin  boot  dev    etc  home  lib    lib64  media  mnt  opt    proc  root  run  sbin  srv  sys  tmp  usr  var


那我们想看有哪些命令是有别名的呢,我们可以通过alias来查看

[root@ask-02 ~]# 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来自定义一个命令,打个比方我们将ask设置为ls -lha

[root@ask-02 ~]# alias ask='ls -lha'

[root@ask-02 ~]# ask

总用量 28K

dr-xr-x---.  3 root root  147 12月 13 21:50 .

dr-xr-xr-x. 17 root root  245 12月 15 03:14 ..

-rw-------.  1 root root 1.4K 12月 12 08:01 anaconda-ks.cfg

-rw-------.  1 root root 1.8K 12月 15 16:37 .bash_history

-rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout

-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile

-rw-r--r--.  1 root root  176 12月 29 2013 .bashrc

-rw-r--r--.  1 root root  100 12月 29 2013 .cshrc

drwx------.  2 root root   61 12月 15 15:45 .ssh

-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc


这样输入ask就等于输入ls -lha是一样的了,同时我们也可以通过which命令来看下ask

[root@ask-02 ~]# which ask

alias ask='ls -lha'

    /usr/bin/ls


如果我们想要取消掉刚才我们所创建的那个命令,我们可以使用unalias来取消

[root@ask-02 ~]# unalias ask

[root@ask-02 ~]# ask

-bash: ask: 未找到命令


这样我们运行ask就不生效了。