系統目錄結構上下
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就不生效了。