導航:首頁 > 文件教程 > shell讀取文件中數據類型

shell讀取文件中數據類型

發布時間:2024-12-13 09:54:24

① shell判斷文件是否是二進制

普通文件類型
linux中最多的一種文件類型, 包括 純文本文件(ASCII);二進制文件(binary);數據格式的文件(data);各種壓縮文件.第一個屬性為 [-]《Linux就該這么學》一起來學習,希望對你有幫助。

1 file命令 # file 文件名

[root@xiaochen ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII English text

2stat 命令# stat 文件名

stat 命令 查看文件ctime atime mtime

# stat anaconda-ks.cfg
? File: 『anaconda-ks.cfg』
? Size: 2592 ? ? ? Blocks: 8 ? ? ? ? ?IO Block: 4096 ? regular file
Device: 803h/2051d Inode: 33574996 ? ?Links: 1
Access: (0600/-rw-------) ?Uid: ( ? ?0/ ? ?root) ? Gid: ( ? ?0/ ? ?root)
Access: 2018-09-20 05:57:35.329041552 +0800
Modify: 2018-09-20 05:57:35.334041552 +0800
Change: 2018-09-20 05:57:35.334041552 +0800
?Birth: -
[root@master ~]# stat /dev/null
? File: 『/dev/null』
? Size: 0 ? ? ? ? Blocks: 0 ? ? ? ? ?IO Block: 4096 ? character special file
Device: 5h/5d Inode: 5930 ? ? ? ?Links: 1 ? ? Device type: 1,3
Access: (0666/crw-rw-rw-) ?Uid: ( ? ?0/ ? ?root) ? Gid: ( ? ?0/ ? ?root)
Access: 2019-01-21 16:27:54.255000135 +0800
Modify: 2019-01-21 16:27:54.255000135 +0800
Change: 2019-01-21 16:27:54.255000135 +0800
?Birth: -

② shell 腳本裡面從一個文本裡面讀出一個數字,如何轉換成整數我需要用這個數字進行加減乘除

可以參考下面幾種方法:

法一:

echo ${var%.*} #這個是直接去除小數點及後面所有內容,只用於bash

法二:

echo $var | awk -F. '{print $1}' #以小數點為分隔符取第一個欄位

法三:

echo $var | awk '{print int($0)}' #awk中可直接使用C函數取整

(2)shell讀取文件中數據類型擴展閱讀:

shell腳本

shell script是利用shell的功能所寫的一個程序,這個程序是使用純文本文件,將一些shell的語法與指令寫在裡面,然後用正規表示法,管道命令以及數據流重導向等功能,以達到我們所想要的處理目的。

更明白地來說,shell script就像早期dos年代的.bat,最簡單的功能就是將許多指令匯整寫一起,讓使用者很容易地就能夠一個操作執行多個命令。

③ linux 里命令ls -l 後,文件類型許可權後面的數字什麼意思比如-rw------ 1 root 11 02-05 05:14

[root@localhost ~]# ls -l

總計 152

-rw-r--r-- 1 root root 2915 08-03 06:16 a

-rw------- 1 root root 1086 07-29 18:35 anaconda-ks.cfg

…………………………………………

第1行:總計(total)

Total後面的數字是指當前目錄下所有文件所佔用的空間總和。使用ls –lh可查看,也可使用ls –alh查看

第1欄位: 文件屬性欄位

-rw-r--r-- 1 root root 762 07-29 18:19 exit

文件屬性欄位總共有10個字母組成;第一個字元表示文件類型。

-表示該文件是一個普通文件

d表示該文件是一個目錄,字母"d",是dirtectory(目錄)的縮寫

注意:目錄或者是特殊文件,這個特殊文件存放其他文件或目錄的相關信息

l表示該文件是一個鏈接文件。字母"l"是link(鏈接)的縮寫,類似於windows下的快捷方式

b的表示塊設備文件(block),一般置於/dev目錄下,設備文件是普通文件和程序訪問硬體設備的入口,是很特殊的文件。沒有文件大小,只有一個主設備號和一個輔設備號。一次傳輸數據為一整塊的被稱為塊設備,如硬碟、光碟等。最小數據傳輸單位為一個數據塊(通常一個數據塊的大小為512位元組)

c表示該文件是一個字元設備文件(character),一般置於/dev目錄下,一次傳輸一個位元組的設備被稱為字元設備,如鍵盤、字元終端等,傳輸數據的最小單位為一個位元組

p表示該文件為命令管道文件。與shell編程有關的文件

s表示該文件為sock文件。與shell編程有關的文件

鏈接文件分為硬鏈接或符號鏈接兩種。

硬鏈接:多個指向同一文件。硬鏈接文件大小完全相同,如有多個硬鏈接,所鏈接的文件只是一個文件大小。

同一個文件所有的文件都是等價的,操作系統不區分鏈接創建的先後順序,若一個文件存在兩個鏈接,那麼除去一個文件還可以通過另外一個文件來訪問該文件,也可以除去創建鏈接時用到的文件,但只要還有一個鏈接存在,就可通過該連接訪問文件。

符號鏈接(軟鏈接):建立一個獨立的文件,這個文件會讓數據的讀取指向它鏈接的文件內容。類似windows快捷方式。

第1欄位後9個字母表示該文件或目錄的許可權位。

r表是讀 (Read) 、w表示寫 (Write) 、x表示執行 (eXecute)

前三個表示文件擁有者的許可權,中間三個表示文件所屬組擁有的許可權,最後三個表示其他用戶擁有的許可權。

SUID和GUID解析:

s:4;g:2;o:1

4777即rwsrwxrwx。6777即rwsrwsrwx

第2欄位:文件硬鏈接數

-rw-r--r-- 1 root root 762 07-29 18:19 exit

如果一個文件不是目錄,此時這一欄位表示這個文件所具有的硬鏈接數

第2欄位的值為1,說明文件exit只有exit這一個文件名。即只有一個指向該鏈接的硬鏈接。

如果使用ln,做一個指向該文件的硬鏈接再查看該文件,該文件的第2欄位就會變成2

[root@localhost ~]# ln exit aexit

[root@localhost ~]# ls -l

總計 160

-rw-r--r-- 2 root root 762 07-29 18:19 aexit

-rw-r--r-- 2 root root 762 07-29 18:19 exit

此時exit 和aexit稱為互為硬鏈接。同指向一個文件,無論是修改哪一個文件,另一個里也做相應的變化,即同一文件的不同文件名

互為硬鏈接的文件具有相同的文件節點。

[root@localhost ~]# ls -i aexit exit

162302 aexit 162302 exit

軟鏈接設置格式:

Ln –s 源文件 目標鏈接文件

# ln -s exit bexit

# ls -l

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

-rw-r--r-- 1 root root 762 07-29 18:19 exit

注意:軟鏈接時文件節點號不一樣;

[root@localhost ~]# ls -i bexit exit

161765 bexit 162302 exit

如果知道一個文件有多個文件名(鏈接文件)如何查找他的其他文件名的路徑?

使用ls -i 獲得其節點號,find查找。

[root@localhost ~]# ls -i /etc/sysconfig/network-scripts/ifcfg-eth0

452946 /etc/sysconfig/network-scripts/ifcfg-eth0 #節點號為 452946

[root@localhost ~]# find /etc -inum 452946

/etc/sysconfig/network-scripts/ifcfg-eth0

第2欄位: 鏈接佔用的節點

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

該欄位文件佔用一個節點,屬於軟鏈接(符號鏈接)

如果是目錄,則第2欄位表示該目錄所含子目錄的個數

新建空目錄,此目錄的第二欄位就是2,表示該目錄下有兩個子目錄。

因為每一個目錄都有一個指向它本身的子目錄"." 和指向它上級目錄的子目錄"..",此默認子目錄是隱藏的。

每次在目錄下新建一個子目錄,該目錄第2欄位的值就增1,但是新建一個普通文件該欄位值不增加。

第3欄位:文件(目錄)擁有者

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

該欄位表示該文件擁有者是誰。只有文件的擁有者才具有改動文件屬性的權利。root具有改動任何文件屬性的權利。對於目錄,只有擁有該目錄的用戶,或者具有寫許可權的用戶才有在目錄下創建文件的權利。

如果某一用戶被刪除,而該用戶家目錄還存在,ls -l 查看該文件將顯示一個代表用戶存在前ID號的數字。

創建用戶test,將其加入wang用戶組,su切換:

[root@localhost ~]# useradd test

[root@localhost ~]# usermod -g wang test #創建用戶test,並將其加入到用戶組wang中

[root@localhost ~]# su test

[test@localhost root]$ cd /home/test

[test@localhost ~]$ touch testing

[test@localhost ~]$ ls -l testing

-rw-r--r-- 1 test wang 0 08-03 18:02 testing #最後用ls -l 看到第三欄位的文件擁有者為test

[test@localhost ~]$ su root #刪除用戶test

[root@localhost ~]# userdel test

[root@localhost ~]# cd /home/test #進入test的家目錄,查看剛剛創建的文件testing。

[root@localhost test]# ls -l

總計 4

-rw-r--r-- 1 504 wang 0 08-03 18:02 testing

第三欄位變成數字,此數字是原用戶test的ID號。因為文件系統對每個文件記錄文件所有者的ID,而非用戶名。

第4欄位:文件(目錄)擁有者所在的組

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

一個用戶可以加入很多個組,但是其中有一個是主組,就是顯示在第4欄位的名稱。

useradd -g指定該用戶所在的主組,-G指定其他組

Useradd –g 組名 用戶名

第5欄位: 文件所佔用的空間(以位元組為單位)

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

第5欄位表示文件大小,如果是目錄,表示該目錄大小。注意是目錄本身大小,而非目錄及其下面的文件的總大小。

第6欄位:文件(目錄)最近訪問(修改)時間

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

可通過touch修改創建時間 # touch exit

把exit創建時間修改當前時間,文件還有最後訪問時間,最後修改時間等屬性。

可以用ls其它參數顯示出來。

第7欄位:文件名

lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

如果是符號鏈接,會有"->"符號,跟著它指向的文件名

閱讀全文

與shell讀取文件中數據類型相關的資料

熱點內容
win10如何卸載黑蘋果系統更新 瀏覽:349
如何轉移文件到s6edge 瀏覽:480
思源ps教程 瀏覽:655
數控網紋加工怎麼編程 瀏覽:729
收藏里的網站是什麼 瀏覽:940
蘋果6寫不了簡訊怎麼辦 瀏覽:650
黑色背景文件怎麼設置ps 瀏覽:850
如何刷微信零錢 瀏覽:69
自解壓文件會報錯 瀏覽:300
淘寶程序員p7 瀏覽:597
找到桌面文件路徑 瀏覽:225
win10更改朝鮮語言 瀏覽:356
微信文件傳輸助手圖片保存在哪裡 瀏覽:755
瑞昱驅動安裝完點哪個文件是安裝 瀏覽:896
word目錄寬度 瀏覽:524
用要求用戶名和密碼的寬頻連接來連接 瀏覽:517
如何快速剔除同一日期的相同數據 瀏覽:735
工控主機編程選哪個cpu 瀏覽:214
打開文檔微信發文件 瀏覽:210
九十級版本所以攻擊力 瀏覽:944

友情鏈接