查看文件編碼
在Linux中查看文件編碼可以通過以下幾種方式:
1.在Vim中可以直接查看文件編碼
:set fileencoding
即可顯示文件編碼格式。
如果你只是想查看其它編碼格式的文件或者想解決用Vim查看文件亂碼的問題,那麼你可以在
~/.vimrc 文件中添加以下內容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
這樣,就可以讓vim自動識別文件編碼(可以自動識別UTF-8或者GBK編碼的文件),其實就是依照fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ASCII)編碼打開。
文件編碼轉換
1.在Vim中直接進行轉換文件編碼,比如將一個文件轉換成utf-8格式
:set fileencoding=utf-8
2. iconv 轉換,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile
比如將一個UTF-8 編碼的文件轉換成GBK編碼
iconv -f GBK -t UTF-8 file1 -o file2
iconv -f gbk -t utf8 linux常用命令.txt > linux常用命令.txt.utf8
文件名編碼轉換:
從Linux 往 windows拷貝文件或者從windows往Linux拷貝文件,有時會出現中文文件名亂碼的情況,出現這種問題的原因是因為,windows的文件名 中文編碼默認為GBK,而Linux中默認文件名編碼為UTF8,由於編碼不一致,所以導致了文件名亂碼的問題,解決這個問題需要對文件名進行轉碼。
在Linux中專門提供了一種工具convmv進行文件名編碼的轉換,可以將文件名從GBK轉換成UTF-8編碼,或者從UTF-8轉換到GBK。
首先看一下你的系統上是否安裝了convmv,如果沒安裝的話用:
yum -y install convmv
安裝。
下面看一下convmv的具體用法:
convmv -f 源編碼 -t 新編碼 [選項] 文件名
常用參數:
-r 遞歸處理子文件夾
--notest 真正進行操作,請注意在默認情況下是不對文件進行真實操作的,而只是試驗。
--list 顯示所有支持的編碼
--unescap 可以做一下轉義,比如把%20變成空格
比如我們有一個utf8編碼的文件名,轉換成GBK編碼,命令如下:
convmv -f UTF-8 -t GBK --notest utf8編碼的文件名
這樣轉換以後"utf8編碼的文件名"會被轉換成GBK編碼(只是文件名編碼的轉換,文件內容不會發生變化)
② 關於Linux下的文本文件格式轉換問題。
這個獲取第4列:
awk '{print $4}' a.txt
這個輸出:第1列[ ]第4列[ ]第5列 - (中間是tab相隔)
awk '{printf("%s\t%s\t%s\n", $1, $4, $5)}' a.txt
cut 默認以tab鍵為欄位分隔版符,從man page中的這句話權可以看出:
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
awk 則不區分tab還是空格,其 man page中有如下描述:
Fields ...... In the special case that FS is a single space, fields are separated by runs of spaces and/or tabs and/or newlines. ......
FS The input field separator, a space by default. See Fields, above.
③ 在LINUX下如何修改文件類型
d
目錄文件。
l
符號鏈接(指向另一個文件,類似於瘟下的快捷方式)。
s
套接字文件。
b
塊設備文件,二進制文件。
c
字元設備文件。
p
命名管道文件。
-
普通文件,或更准確地說,不屬於以上幾種類型的文件。
重點注意的是普通文件,在查看文件類型的時候使用file命令和ll命令結合來查看文件的類型
設備文件分為block
device
driver和character
device
drive兩類。character
device
drive又被稱為字元設備或裸設備raw
devices;
block
device
driver通常成為塊設備。而block
device
driver是以固定大小長度來傳送轉移資料
;character
device
driver是以不定長度的字元傳送資料
。且所連接的devices也有所不同,block
device大致是可以隨機存取(random
access)資料的設備,如硬碟機或光碟機;而character
device剛好相反,依循先後順序存取資料的設備,如印表機
、終端機等皆是。
1.字元設備只能以位元組為最小單位訪問,而塊設備以塊為單位訪問,例如512位元組,1024位元組等
2.塊設備可以隨機訪問,但是字元設備不可以
3.字元和塊沒有訪問量大小的限制,塊也可以以位元組為單位來訪問
the
type
printed
will
usually
contain
one
of
the
words
text
(the
file
contains
only
printing
characters
and
a
few
common
control
characters
and
is
probably
safe
to
read
on
an
ascii
terminal),
executable
(the
file
contains
the
result
of
compiling
a
program
in
a
form
understandable
to
some
unix
kernel
or
another),
data
meaning
anything
else
(data
is
usually
`binary'
or
non-printable).
any
file
that
cannot
be
identified
as
having
been
written
in
any
of
the
character
sets
listed
above
is
simply
said
to
be
``data''.