系统目录结构上下
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
-rw------- = 权限
1 = 文件数量
root = 用户
root = 用户所属组
1422 = 文件大小
12月12 08:01 = 时间日期
anaconda-ks.cfg = 文件名
ls -i:查看目录或者文件的inode号
[root@ask-02 ~]# ls -i
33582987 anaconda-ks.cfg
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就不生效了。