轉系統目錄結構/ls命令/alias命令

系統目錄結構上下

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就不生效了。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容