inode 是什么及絕對路徑和相對路徑和一些目錄相關命令總結

inode是什么

    

    每個分區又分兩個區,元數據區和數據區。

    元數據區主要存儲文件的權限,屬主屬組,時間戳,文件的存儲位置指針….就如一本書有目錄頁和內容頁一樣,目錄頁上的記錄的是內容的頁數,可以通過目錄頁的頁數直接找到內容。而不用從第一頁去往后翻。這就是inode(文件的索引)

     數據區存儲文件內容數據

   每個文件都有一個inode,通過這個inode查找文件,inode中的指針指向文件的數據塊,

   而指針又分為直接指針,間接指針,雙重間接指針,多重間接指針。。。。

   直接指針:直接指向文件存儲位置

   間接指針:當直接指針指向的存儲空間不足以容納文件的大小的時候就采取間接指針指向的數據塊,(假設一個數據塊4k大小,一個指針占用4個    字節,那么一個數據塊可以有1024個指針,而1024個指針可以指向1024個4k大小的數據庫,那么就是1024*4k=4096k)從這個指針數據塊中有N多指    針指向文件數據塊,如此層層擴大以達到存儲大文件的目的

   目錄的inode指針指向的數據塊存儲的是文件名和文件的inode,(也就是可以理解為直接指針指向的數據塊只是存儲文件名和文件inode),通過    間接指針指向的數據塊中存儲的文件本身的inode再從元數據區去指向文件所對應的數據塊,多層目錄間接指針如此多一個循環

絕對路徑和相對路徑

    絕對路徑:

   從根開始(/)完整的文件位置路徑,可用于任何想指定一個文件名的時候

     相對路徑:

   不從根(/)開始,指定相對于當前工作目錄或者某一個目錄的位置,可作為簡短形式指定一個文件名

硬鏈接和軟連接的區別

   硬鏈接是多個文件名共同指向一個文件內容,一個inode各個鏈接可以任意訪問,如果修改了文件內容,則其他鏈接受到影響,就如同一個房間有多個門牌號,一個鏈接刪除了文件內容并不影響其他鏈接的使用。

   軟鏈接只是原始文件的路徑,每個鏈接都有一個inode,但是所有鏈接都是建立在原始文件的基礎上的,如果刪除了所有的軟連接并不影響原始文件,但是如果原始文件被刪除,則所有軟連接都會報錯

文件通配符

*:匹配任意零個或多個字符

?:匹配任意單個字符

~:當前用戶的家目錄

~username:用戶家目錄

~+:當前工作目錄

~-:上一個工作目錄

[0-9]:指定范圍內的一個數字

[a-z]:以小寫a開頭小寫z結尾(中間不區分大小寫)

[A-Z]:以大寫A開頭大寫Z結尾(中間不區分大小寫)

[xxx]:列表中的任何一個字

[^xxx]:列表中的所有字符以外的

預定義的字符類

[:digit:]任意數字,相當于[0-9]

[:lower:]任意小寫字母

[:upper:]任意大寫字母

[:alpha:]任意大小寫字母

[:alnum:]任意數字和字母

[:space:]空格

[:punct:]標點符號

標準輸入和輸出

標準輸入0

標準輸出1

錯誤輸出2

程序:指令+數據

讀入數據

輸出數據

打開的文件都有一個文件描述符號

linux給程序員提供三種io設備,

標準輸入0:默認接受來自鍵盤的輸入

標準輸出1:默認輸出到終端端口

標準錯誤2:默認輸出到終端端口

查看文件狀態

stat:查看文件的元數據

創建空文件和刷新文件時間

touch:刷新時間

-a:刷新atime 訪問時間

-c:刷新改動時間,如果ctime發生改動,則mtime(文件內容的更改時間)也跟隨刷新

復制文件和目錄cp

cp 如果源是一個文件, 目標不存在 則在目標創建一個和源同名的文件,并且把源的內容復制進去,如果目標是目錄而且存在,則在目標目錄下創建一個和源同名的文件,并把內容復制進去

如果源是多個文件 ,目標是文件的話會報錯,如果目標是目錄而且存在,則在目標目錄下創建和源同名的文件,并把內容復制進去

如果源是目錄需要配合-r選項,目標不存在的話就需要創建并且指定命名的目錄并把源目錄總的內容復制進去,如果目標是文件的話就會報錯,如果目標是目錄而且存在的話,就在目標目錄下新建一個和源同名的目錄并把源目錄中的內容復制進去

-i:交互式

-r;-R:遞歸復制目錄及其內部所有內容

-a:歸檔

-d:不復制原文件,只復制鏈接名

–preserv[=ATTR_LIST]

mode: 權限

ownership: 屬主屬組

timestamp:

links

xattr

context

all

p: 等同–preserv=mode,ownership,timestamp

-v: –verbose

-f: –force

命令別名

顯示當前shell進程可用的所有命令別名

]#alias

定義別名name,其相當于指明命令value

]#alias name=value

在命令行中定義的別名,僅對當前shell進程有效,如果想要永久生效,需要定義在配置文件中

僅對當前用戶有效:~/.bashrc

對所有用戶有效:/etc/.bashrc

編輯配置給出的新配置不會立即生效,需要重新登錄或者使用sourec /path/to/config_file 來重新讀取shell進程配置文件

撤銷別名

]#unalias name

如果別名與原名同名,如果要執行原命令,可使用

\cmd

或者是使用絕對路徑(外部命令)

移動和重命名文件

mv

-i:交互式

-f:強制

刪除

rm

-i:交互式

-r:遞歸刪除

-f:強制

目錄操作

tree:顯示目錄樹

-d:只顯示目錄樹

-L level:指定顯示層級數目

mkdir:創建目錄

-p:存在于不報錯,而且自動創建所需的各目錄

-v:顯示過程

-m MODE:創建目錄時直接指定權限

rmdir:刪除目錄

-p:遞歸刪除父目錄

-v:顯示過程

rm -r:遞歸刪除目錄樹

確定文件內容

file:

-b:列出文件辨識結果時,不顯示文件名稱

-c:詳細顯示指令的執行過程,便于排錯或分析序執行

-f:列出文件中文件名的文件類型

-F:使用指定的分隔符替換輸出文件名后默認的“:”分隔符

-i:輸出mime類型的字符串

-L:查看對應的軟連接對應的文件類型

-z:嘗試去解讀壓縮文件

io重定向:改變輸入和輸出的默認位置

把輸出和錯誤重新定向到文件

命令 操作符號 文件名

>把標準輸出定向到文件

2>:把錯誤輸出定向到文件

&>:把所有輸出定向到文件

>此符號輸出會把定向文件的內容覆蓋

可以使用 set -c 禁止覆蓋

但是使用>| 強制覆蓋

使用set +c 允許覆蓋

>>把標準輸入追加到文件

把標準輸出和錯誤輸出重新定向到文件

2>錯誤輸出(覆蓋)

2>>錯誤輸出(追加)

標準輸出和錯誤輸出可以指向不同的文件

cmd > /path/to/file.out 2 > /path/to/file.out

標準輸出和錯誤輸出可以指向相同的文件

&>:覆蓋

&>>:追加

cmd >/path/to/file.out 2> &1(順序很重要)

cmd >/path/to/file.out 2>> &1

():可以合并多個程序的輸出

(cal 2008 ; cal 2016)> all.txt

tr :轉換字符

如 tr 'a-z' 'A-Z' < /etc/issue

發郵件

mail -s haha wang

命令     標題    收件人

作業

1、將/etc/issue文件中的內容轉換為大寫后保存至/tmp/issue.out文件中

[root@daxia ~]# tr 'a-z' 'A-Z' <  /etc/issue > /tmp/issue.out

[root@daxia ~]# cat /tmp/issue.out

\L \N \T

WELCOME ALI

2、將當前系統登錄用戶的信息轉換為大寫后保存至/tmp/who.out文件中

root@daxia ~]# echo `who` | tr 'a-z' 'A-Z' > /tmp/who.out

[root@daxia ~]# cat /tmp/who.out

ROOT :0 2016-07-28 07:54 (:0) ROOT TTY2 2016-07-28 07:58 ROOT PTS/1 2016-07-28 17:36 (10.1.250.14)
3、一個linux用戶給root發郵件,要求郵件標題為”help”,郵件正文如下:
Hello, I am 用戶名,the system version is here,pleasehelp me to check it ,thanks!
操作系統版本信息

[root@daxia ~]# echo "hello,i am `whoami` the system version is here,paleasehelp me to caeck it,thanks! `cat /etc/redhat-release` "| mail -s hi xing

[xing@daxia ~]$ mail

Heirloom Mail version 12.5 7/5/10.  Type ? for help.

"/var/spool/mail/xing": 3 messages 3 new

>N  1 root                  Thu Jul 28 21:44  18/583   "haha"

N  2 root                  Thu Jul 28 21:56  19/651   "haha"

N  3 root                  Thu Jul 28 22:02  18/683   "hi"

& 3

Message  3:

From root@daxia.localdomain  Thu Jul 28 22:02:46 2016

Return-Path: <root@daxia.localdomain>

X-Original-To: xing

Delivered-To: xing@daxia.localdomain

Date: Thu, 28 Jul 2016 22:02:46 +0800

To: xing@daxia.localdomain

Subject: hi

User-Agent: Heirloom mailx 12.5 7/5/10

Content-Type: text/plain; charset=us-ascii

From: root@daxia.localdomain (root)

Status: R

hello,i am root the system version is here,paleasehelp me to caeck it,thanks! CentOS Linux release 7.2.1511 (Core)

&

將/root/下文件列表,顯示成一行,并文件名之間用空格隔開  

[root@centos6 ~]# ls /root |tr "\n" "\040" 

1aA aa anaconda-ks.cfg Desktop f3 install.log install.log.syslog manpages.sh manpages-zh-1.5.1 manpages-zh-1.5.1.tar.gz maxing maxing2016-07-28 公共的 模板 視頻 圖片 文檔 下載 音樂 桌面 [root@centos6 ~]#


原創文章,作者:M20-1馬星,如若轉載,請注明出處:http://www.www58058.com/26904

(0)
M20-1馬星M20-1馬星
上一篇 2016-08-02 10:55
下一篇 2016-08-02 10:55

相關推薦

  • 關于rpm及yum的一些感想

    rpm -ivh PACKAGE_FILE  注意: (1) 不要對內核做升級操作;Linux支持多內核版本并存,因此 ,對直接安裝新版本內核 v rpm {-q嚴格–query} [select-options] [query-options] v [se…

    Linux干貨 2016-08-24
  • SRPM具體使用過程

    SRPM 簡介:SRAM是Source RPM的意思,就是RPM的源代碼的意思,這個SRPM就是沒有經過編譯的源代碼。如果我們想要安裝一個SRPM軟件,那么就必須: 先將該軟件以RPM管理的方式編譯,將SRPM編譯成為RPM文件 然后將編譯完成的RPM文件安裝到Linux系統中。 一.程序包編譯: 程序包編譯安裝: Application-VERSION-r…

    Linux干貨 2016-08-24
  • 第三天作業

    1、列出當前系統上所有已經登錄的用戶的用戶名。注意:同一個用戶登錄多次,則只顯示一次即可 [root@localhost ~]# who | cut -d ' ' -f1 | sort | uniq [root@localhost ~]# who (unknown) :0         &nbsp…

    Linux干貨 2016-08-30
  • Ansible初識

    Ansible概念 ansible是自動化運維工具,基于Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。說…

    2017-07-08
  • 基于通用二進制格式安裝mysql

    實驗環境: Linux主機:centos6.8 mysql二進制格式包:mysql-5.5.52-linux2.6-x86_64.tar.gz 1、解壓包到特定目錄 [root@centos6 ~]# tar xf mysql-5.5.52-linux2.6-x86_64.tar.gz -C /us…

    Linux干貨 2016-10-29
  • 多網卡實驗

    1、虛擬網卡實現一個網卡多個地址     網卡別名多用于虛擬機,可理解為一塊網卡MAC地址對應多個IP地址,這樣比較方便管理,在不需要通過添加網卡的形式就可以使用到新的IP 在此圖可看到     eth1     eth1:100   &n…

    Linux干貨 2016-09-06
欧美性久久久久