1. linux 怎麼修改shell的字元屬性
查看文件編碼file命令
file
ip.txt
查看文件編碼file命令
file
ip.txt
ip.txt:
UTF-8
Unicode
text,
with
escape
sequences
一、利用iconv命令進行編碼轉換文件內容編碼轉換
iconv命令用於轉換指定文件的編碼,默認輸出到標准輸出設備,亦可指定輸出文件.
用法:
iconv
[選項...]
[文件...]
有如下選項可用:
輸入/輸出格式規范:
-f,
--from-code=名稱
原始文本編碼
-t,
--to-code=名稱
輸出編碼
信息:
-l,
--list
列舉所有已知的字元集
輸出控制:
-c
從輸出中忽略無效的字元
-o,
--output=FILE
輸出文件
-s,
--silent
關閉警告
--verbose
列印進度信息
-?,
--help
給出該系統求助列表
--usage
給出簡要的用法信息
-V,
--version
列印程序版本號
例子:
iconv
-f
utf-8
-t
gb2312
aaa.txt
>bbb.txt
這個命令讀取aaa.txt文件,從utf-8編碼轉換為gb2312編碼,其輸出定向到bbb.txt文件.
你可照著上面的命令格式,改改試試。
2. linux操作系統的shell命令有哪些
1 文件與目錄操作命令
1.1文件內容查詢命令 grep、fgrep、egrep
語法:grep[選項][查找模式][文件名1,文件名2,……]
選項:
-E 每個模式作為一個擴展的正則表達式對待
-F 每個模式作為一組固定字元串對待,而不作為正則表達式
-i 比較時不區分大小寫
-l 顯示首次匹配匹配串所在的文件名並用換行符將其分開。當在文件中多次出現匹配串時,不重復顯示次文件名;
-x 只顯示整行嚴格匹配的行
1.2文件查找命令 find、locate
語法:
find 起始目錄 尋找條件 操作以名稱和文件屬性查找
選項: -name『字串『 查找文件名匹配所給字串的所有文件,字串內可用通配符*、?、[]。
-lname『字串『 查找文件名匹配所給字串的所有符號鏈接文件,字串內可用通配符*、?、[]。
-gid n 查找屬於ID號為n的用戶組的所有文件。
-uid n 查找屬於ID號為n的用戶的所有文件。
-group『字串『 查找屬於用戶組名為所給字串的所有的文件。
-user『字串『 查找屬於用戶名為所給字串的所有的文件。
-path『字串『 查找路徑名匹配所給字串的所有文件,字串內可用通配符*、?、[]。
-perm 許可權 查找具有指定許可權的文件和目錄,許可權的表示可以如711、644。
-type x 查找類型為 x的文件,
語法:locate 相關字
1.3文件的復制、刪除和移動命令 文件復制命令
[選項] 源文件或目錄 目標文件或目錄
選項:
- a 通常在拷貝目錄時使用
-d 拷貝時保留連接
-f 刪除已經存在的目標文件而不提示
-i 和f選項相反
-p 此時cp除復制源文件內容外,還將其修改的時間和訪問許可權也復制到新文件中
-r 若給出的源文件是一目錄文件,此時cp將遞歸復制該目錄下的所有的子目錄和文件,此時目標文件必須為一個目錄名;
-l 不作拷貝,只是鏈接文件文件移動命令
mv[選項] 源文件或目錄 目標文件或目錄
-i 互動式操作
-f 禁止互動式操作文件刪除命令
[選項] 文件…
-f 忽略不存在的文件,從不給出提示
-r 指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除
-i 進行互動式刪除 1.4文件鏈接命令
ln [選項] 目標 [鏈接名] 或 ln [選項] 目標 目錄
選項:
- s 建立符號鏈接
1.5目錄的創建和刪除命令 mkdir 創建一個目錄
語法: [選項] dirname
選項: - m 對新建目錄設置存取許可權
-p 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄。
rmdir 刪除空目錄
語法: rmdir [選項] dirname
選項:
- p 遞歸刪除目錄dirname,當子目錄刪除後其父目錄為空時,也一同被刪除。
1.6改變工作目錄,顯示目錄內容命令
1、改變工作目錄: cd [directory]
2、顯示當前工作的目錄的絕對路徑: pwd
3、顯示目錄內容: ls [選項] [目錄或是文件]
選項:
- a 顯示指定目錄下所有子目錄與文件,包括隱藏文件;
-c 按照文件的修改時間排序
-C 分成多列顯示各項
-d 如果參數是目錄,只顯示其名稱而不顯示其下的個文件
-F 在目錄名後面標記「/」,可執行文件後面標記「*」,符號鏈接後面標記「@」,管道(或FIFO)後面標記「|」,socket文件後面標記「=」。
-l 以長格式來顯示文件的詳細信息
-L 若指定的名稱為一個符號鏈接,則顯示鏈接所指向的文件
-t 顯示時按修改時間而不是名字排序
-u 顯示時按文件上次存取的時間而不是名字排序
4、改變文件或目錄的訪問許可權命令chmod [who] [+| - | = ] [mode] 文件名?
Who選項:
- u表示用戶,即文件和目錄的所有者
-g表示同組用戶
-o(other)表示其他用戶
-a (all)表示所有用戶
操作符號: + 添加某個許可權 - 取消某個許可權 = 賦予給定許可權並取消其他所有的許可權(如果有的話)
mode 選項:
- r 可讀
-w 可寫
-x 可執行 chgrp [-R] group filename? 改變目錄或文件所屬的組
chown [-Rv] 用戶或組 文件
1.7備份與壓縮命令
1、tar命令 為文件和目錄創建檔案語法:
tar [主選項+輔助選項] 文件或者目錄 : u 主選項
-c 創建新的檔案文件。如果用戶想備份一個目錄或是一些文件,則選此項
-r 把要存檔的文件追加到檔案文件的末尾
-t 列出檔案文件的內容,查看已經備份了哪些文件;
-u 更新文件
-x 從檔案文件中釋放文件;
-u 輔助選項
-b 該選項為磁帶機設定的,其後跟一位數字,用來說明區塊的大小,系統預設值為20
-f 使用檔案文件或設備,這個選項通常是必選的
-k 保存已經存在的文件。例如把某個文件還原,在還原的過程中,遇到相同的文件,不會進行覆蓋;
-m 在還原文件時,把所有文件的修改時間設定為現在;
-M 創建多卷的檔案文件,以便在幾個磁碟中存放;
-v 詳細報告tar處理的文件信息
-w 每一步都要求確認
-z 用gzip來壓縮/解壓縮文件
2、gzip命令 壓縮/解壓縮命令
語法:gzip [選項] 壓縮(解壓縮)的文件名
選項:
-c 將輸出寫到標准輸出上,並保留原有文件
-d 將壓縮文件解壓
-l 顯示每個壓縮文件的詳細信息
-r 遞歸式地查找指定目錄並壓縮其中的所有文件或者是解壓縮
-t 測試、檢查壓縮文件是否完整
-v 對每一個壓縮和解壓的文件,顯示文件名和壓縮比
3、unzip 命令 用MS windows下的壓縮軟體winzip壓縮的文件在linux系統下展開
語法:unzip [選項] 壓縮文件名.zip
選項: -x 文件列表 解壓縮文件,但不包括指定的file文件
-v 查看壓縮文件目錄,但不解壓
-t 測試文件有無損壞 ,但不解壓
-d 目錄 將壓縮文件解到指定目錄下
-z 只顯示壓縮文件的註解
-n 不覆蓋已經存在的文件
-o 覆蓋已經存在的文件且不要求用戶確認
-j 不重建文檔的目錄結構,把所有文件解壓到同一目錄下
1.8在LINUX環境下運行DOS命令 linux系統提供了一組稱為mtools的可移植工具,可以讓用戶輕松地從標準的DOS軟盤上讀寫文件和目錄。
mcd 目錄名 改變MSDOS目錄 m 源文件 目標文件 在MSDOS和UNIX之間復制文件;
mdel 目錄名 刪除MSDOS目錄 mdir 目錄名 顯示MSDOS目錄 mformat 驅動器號 在低級格式化的軟盤上創建MSDOS文件系統 rnlabel 驅動器號 產生MSDOS卷標 mmd 目錄名 刪除MSDOS目錄 mren 源文件 目標文件 重新命名已存在的MSDOS文件 mtype 文件名 顯示MSDOS文件的內容
2 設備管理命令
1)linux採用下面的形式定義一個IDE硬碟:/dev/hd[drive][partition]
2)SCSI硬碟使用同樣的機製表示: /dev/sd[drive][partition]
3)對於一般的LINUX分區,可以用mkfs將其格式化並生成文件系統,命令如下: mk2fs –c ;
4)裝載文件系統:
mount –t ext2 [-o optioms] partition mountpiont 其中,
-t為指定裝載文件系統的類型;
-o指定一些選項,如只讀ro,可讀可寫rw等等; partition定義分區名稱; mountpiont定義文件系統被裝載的目錄名稱。
5)裝載CD-ROM文件系統:mount –t iso9660 –r /dev/cdrom /mnt/cdrom
6)裝載軟碟機文件系統: CODE:[Copy to clipboard]mount –t msdos –rw /dev/fd0 /dev/mnt/floppy
7)卸載文件系統 CODE:[Copy to clipboard]umount /mnt/cdrom 磁帶設備的安裝要注意以下幾點:
1、 首先要選擇一個唯一的SCSI ID號,然後再將設備鏈接到適當的位置
2、 選擇驅動程序。
3、 生成設備文件。SCSI磁帶設備的主要設備號是9,次要設備號是0。設備文件名通常是/dev/nrst0(不支持回繞的磁帶設備)或/dev/nst0(支持回繞的磁帶設備) 用 ls /dev/*rst* 檢查磁帶設備文件是否存在,如果不存在,用 mknod –m 666 /dev/nrst0 c 9 9 mknod –m 666 /dev/rst0 c 9 0 生成
4、 可以對塊長度、緩存、磁帶密度等參數進行一些設置,例如 mt setblk 20 將塊長度指定為20 mt setblk 0 指定塊程度沒有限制
5、 通過檢查系統的啟動信息可以確定系統是否識別了新的磁帶設備。用dmesg命令,查看是否有以下類似的信息: aha274x:target 4now synchronous at 4.4Mb/s Vendor:TANDBERG Model:TDC 3800 Rev: =05: Type: Sequential-Access ANSI SCSI revision: 02 Detected scsi tape st0 at scsi0, id4, lun0 Scsi : detected 1 SCSI tape 1 SCSI crom 1 SCSI disk total
3 軟體包管理命令
3.1軟體安裝的步驟 在LINUX系統上安裝軟體的步驟有:
1、 查找所要安裝軟體的源文件
2、 把源文件解開放到一個目錄中,命令如下: tar zxvf <源文件名>;
3、 針對本操作系統配置源文件。可以是編輯make文件或其他文件,也可能是運行該軟體自帶的自動配置工具,如./configure
4、 make源文件,通常是運行make命令,即執行 make
5、 安裝二進制文件和其他支撐文件,運行命令: make install
6、 最後,完成所有其他必須的配置
3.2軟體包管理命令 QUOTE: rpm –ivh <軟體包>; // 安裝指定的軟體包,並在安裝過程中用#表示安裝的進度 rpm –Uvh <軟體包>; // 更新一個已經存在的或還沒安裝好的軟體包,並刪除所有該軟體包的舊版本。 rpm –e //卸載一個rpm軟體包 rpm –qa // 查看系統中已經安裝的軟體包 rpm –q <軟體包>; // 查看系統中某個軟體包的版本號; rpm –qlp <軟體包>; //列出某個軟體包中的所有文件 rpm –qf <軟體包>; //找出一個文件屬於哪個軟體包
4 LINUX系統常用命令
4.1 與系統管理有關的命令 Wall (Write All) 對全部已 登錄的用戶發送信息,用戶可以先反要發送的信息寫好存入一個文件中,然後輸入: # wall < FileName 例:Wall 『Thank you !』 Write 向某一用戶發送信息。 Write xxq hello 輸入Ctrl+C組合即可終止 Shutdown命令 Shutdown [選項] [時間] [警告信息]
-k 並不真正關機,而只是發出警告信息給所有的用戶。
-r 關機後立即重新啟動。
-h 關機後不重新啟動。
-f 快速關機,啟動時跳過fsck。
-n快速關機,不經過init程序。
-c 取消一個已經運行的shutdown 例:系統馬上關機:Shutdown –h now Free命令查看當前系統內存的使用情況, CODE:[Copy to clipboard]Free [-b] [-k] [-m] CODE:[Copy to clipboard]-b 以位元組為單位顯示。
-k 以K位元組為單位顯示。
-m 以M位元組為單位顯示。 Uptime QUOTE: 顯示系統已經運行了多長的時間:現在時間、系統已經運行的時間、目前有多少登錄用戶、系統在過去的1分鍾、5分鍾和15分鍾內的平均負載。
4.2與用戶有關的命令 Passwd命令設置、更換用戶口令。
Passwd [用戶名] Su 使一個普通的用戶具有超級用戶的權利,離開可用EXIT命令。 4.3其它命令 Echo命令在顯示器上顯示一段文字,一般起到一個提示的作用。
echo [-n] 字元串 Cal命令顯示某年某月的日歷。
cal [選項] [月[年]]
選項的含義:
-j 顯示也給定月中的每一天是一年中的和幾天(從1月1日算起)。
-y 顯示也整年的日歷。 Date命令 date命令的功能是顯示和設置系統日期和時間。 4.4磁碟管理 磁碟空間管理 df命令檢查文件系統的磁碟空間佔用局部。
Df [選項]
-a 顯示所有文件系統的磁碟使用情況,包括0塊(block)的文件系統,如/proc文件系統。
-k 以K位元組為單位顯示。
-i 顯示i節點信息,而不是磁碟塊。
- t 顯示各指定類型的文件系統的磁碟空間使用情況。
-x 列出不是某一指定類型文件系統的磁碟窨使用情況(與t相反)。
-T 顯示文件系統類型。 命令 的英文原意為disk usage,含義為顯示磁碟空間的使用情況。功能是統計目錄(或文件)所佔磁碟空間的大小。
[選項] [Names…]
-s 對每人Names 參數只給也佔用的數據塊總數。
-a 遞歸地顯示指定目錄中各文件用子孫目錄中的各文件佔用的數據塊總數。
-b 以位元組為單位列也磁碟窨使用情部(預設以K位元組為單位)
-k 以1024位元組為單位列也磁碟空間使用情況。
-c 最後再加上一個總計(系統預設)
-l 計算所有的文件大小,對硬鏈接文件,則計算多次。
-x 跳過在不同文件系統上的目錄不予統計。 dd命令把指定的輸入文件拷貝到指定的輸出文件中,並且在拷貝的過程中可以進行格式轉換。
語法: dd 〔選項〕 if =輸入文件(或設備名稱)。 of =輸出文件(或設備名稱)。 ibs = bytes 一次讀取bytes位元組,即讀入緩沖區的位元組數。 skip = blocks 跳過讀入緩沖區開頭的ibs*blocks塊。 obs = bytes 一次寫入bytes位元組,即寫 入緩沖區的位元組數。 bs = bytes 同時設置讀/寫緩沖區的位元組數(等於設置obs和obs)。 cbs = bytes 一次轉換bytes位元組。 count = blocks 只拷貝輸入的blocks塊。 conv = ASCII 把EBCDIC碼轉換為ASCII碼。 conv = ebcdic 把ASCII碼轉換為EBCDIC碼。 conv = ibm 把ASCII碼轉換為alternate EBCDIC碼。 conv = blick 把變動位轉換成固定字元。 conv = ublock 把固定們轉換成變動位 conv = ucase 把字母由小寫變為大寫。 conv = lcase 把字母由大寫變為小寫。 conv = notrunc 不截短輸出文件。 conv = swab 交換每一對輸入位元組。 conv = noerror 出錯時不停止處理。 conv = sync 把每個輸入記錄的大小都調到ibs的大小(用ibs填充)。 fdformat命令低級格式化軟盤。
format [-n] device QUOTE: -n 格式化後不做檢驗
4.5常用的網路命令 FTP命令 Telnet命令。
Netstat命令
-a 顯示所有的scoket,包括正在監聽和。
-c 每隔1秒就重新顯示一遍,直到用戶中斷它。
-i 顯示所有網路介面的信息,格式同」ifconfig –e」
-n 以網路IP地址代替名稱,顯示也網路連接情形。
-r 顯示核心路由表,格式同」route –e:。
-t 顯示TCP協議的連接情況。
-u 顯示UDP協議的連接情況。
-v 顯示正在進行的工作。 nslookup命令。 finger命令,功能是查詢用戶的信息。 ping命令。(用戶和組的管理可以使用工具:TurboUserCfg或是XturboUserCfg。)
4.6有關進程的命令。 進程和啟動 at [-V] [-q] [-f文件名] [-mldbv]時間 at –c 作業 [作業….] AT命令啟動的進程系統只執行一次。 batch [-V] [-q 隊列] [-f 文件名] [-mv] [時間] 在系統負載較小時,資源比較空閑時執行。 cron命令按一定的時間間隔執行命令。 crontab命令用於安裝、刪除或列出用於驅支cron後台進程的表格。進程查看
who命令。 w命令是一個比who命令更強大的命令 w
–[husfV] [user] -h 不顯示標題。
-u 當列出當前進程和CPU時間時忽略用戶名。
-s 使用短模式。不顯示登錄時間JCPU和PCPU時間。
-f 切換顯示FROM項,也就是遠程主機名項。
-V 顯示版本信息。 user 只顯示指定用戶的情況。 ps命令。
-e 顯示所有進程。
-f 全格式
-h 不顯示標題。
-l 長格式。
-w 寬輸出。 a 顯示終端上所有進程,包括其他用戶的進程。 r 只顯示正在運行的進程。 x 顯示沒有控制終端的進程。 top 命令動態顯示系統當前的進程和其他狀況。 5系統的啟動過程。
3. Linux:用shell如何實現讀取一個字元串的第n個字元呢
代碼如下:
str="/home/gateman"
if [ ${str:0:1} = "/" ]; then
echo "yes'
fi
${str:0:1} 中0表示從第幾個字元開始,1表示截取多長。
Shell是一種腳本語言,那麼,就必須有解釋器來執行這些腳本,常見的腳本解釋器有:
bash:是Linux標准默認的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的縮寫,內部命令一共有40個。
sh:由Steve Bourne開發,是Bourne Shell的縮寫,sh 是Unix 標准默認的shell。
另外還有:ash、 csh、 ksh等。
(3)linuxshell字元操作擴展閱讀
Linux shell 截取字元變數的前8位:
實現方法有如下幾種:
expr substr 「$a」 1 8
echo $a|awk 『{print substr(,1,8)}』
echo $a|cut -c1-8
echo $
expr $a : 『(.\).*』
echo $a|dd bs=1 count=8 2>/dev/null
按照指定要求分割:
比如獲取後綴名
ls -al | cut -d 「.」 -f2
小結:shell對應字元串的處理方法很多,根據需求靈活選擇。
在做shell批處理程序時候,經常會涉及到字元串相關操作。有很多命令語句,如:awk,sed都可以做字元串各種操作。 其實shell內置一系列操作符號,可以達到類似效果,大家知道,使用內部操作符會省略啟動外部程序等時間,因此速度會非常的快。
4. Linux的shell編程中,如何將一段字元串進行截取
簡單介紹下Shell字元串截取的詳細方法,如截取指定字數、按指定的字元串截取、按指定要求分割。
一、Linux shell 截取字元變數的前8位,有方法如下:
5. linux shell編程,字元串操作。希望實現如下功能:
str1="1.txt 2.txt 3.txt 4.txt a.txt"
str2="2.txt a.txt"
for i in $str2
do
str1=$(echo $str1|sed "s/${i}//g")
done
echo "STR1: $str1"
6. linux在shell下如何將字元串寫入文件
可以使用echo命令將文本流導向標准輸出,然後再使用>符號重新定向標准輸出到文件。
用法示例:
將字元串"hello world"寫入文件file.txt中
$ echo "hello world" > file.txt
然後再嘗試用cat命令從讀取文件並寫入到標准輸出,可以看到字元串已經成功寫入文件。
$ cat file.txt
7. linux shell怎麼查找文件中指定字元串,並把該字元串和下一行的內容寫到另一個文件中
有兩種寫入方式:
1、grep
-i
"aaa"
-A
1
1.txt
|
grep
-v
-e
"--"
>2.txt
grep 指令用於查找內容包含指定的範本樣式的文件,如果發現某文件的內容符合所指定的範本樣式,預設grep指令會把含有範本樣式的那一列顯示出來。若不指定任何文件名稱,或是所給予的文件名為「-」,則grep指令會從標准輸入設備讀取數據。
2、awk
'/aaa/{getline
var;print
$1"\n"
var}'
1.txt
>2.txt
awk語言的最基本功能是在文件或者字元串中基於指定規則瀏覽和抽取信息,awk抽取信息後,才能進行其他文本操作。完整的awk腳本通常用來格式化文本文件中的信息。
linuxshell中引號的使用方法:
shell使用引號(單引號/雙引號)和反斜線("\")用於向shell解釋器屏蔽一些特殊字元,反引號(")對shell則有特殊意義。
如:abc="how
are
you"
(bash/pdksh)
set
abc
=
"how
are
you"
(tcsh)
這個命令行把三個單片語成的字元串how
are
you作為一個整體賦值給變數abc.
abc1='@LOGNAME,how
are
you!'
(bash/pdksh)
set
abc1='$LOGNAME,how
are
you!'
(tcsh)
abc2="$LOGNAME,how
are
you!"
(bash/pdksh)
set
abc2="$LOGNAME,how
are
you!"
(tcsh)。
8. Linux shell腳本中連接字元串的方法
這篇文章主要介紹了Linux
shell腳本中連接字元串的方法,大家參考使用吧
如果想要在變數後面添加一個字元,可以用一下方法:
代碼如下:
$value1=home
$value2=${value1}"="
echo
$value2
把要添加的字元串變數添加{},並且需要把$放到外面。
這樣輸出的結果是:home=,也就是說連接成功。
又如:
代碼如下:
[root@localhost
sh]#
var1=/etc/
[root@localhost
sh]#
var2=yum.repos.d/
[root@localhost
sh]#
var3=${var1}${var2}
[root@localhost
sh]#
echo
$var3
/etc/yum.repos.d/
9. Linux下shell 腳本文件字元處理的問題 , 請大神們指點啦
#!/bin/bash
line=`cat$1|awk'{print$2}'|sort-n|uniq|wc-l`
foriinseq`1$line`
do
x=`cat$1|awk'{print$2}'|sort-n|uniq-c|awk'{print$1}'|head-$i|tail-1`
y=`cat$1|awk'{print$2}'|sort-n|uniq-c|awk'{print$2}'|head-$i|tail-1`
if[$x-gt1];then
if[`cat$1|grep$y`=='gdm'];then
sed-i'/gdm/d'$1
fi
fi
done
10. linux shell 處理字元串
#!/bin/bash
str="X:abcdefghijklmn"
str=${str:2}#去除X:
str=${str//\//}#替換所有為/
echo"${str}/"
我看得很清楚,但懷疑你寫錯了。
確認下:最後的jklmn需要變為klmn嗎?如果是,那我要改。
Bash中的字元串處理,參考:
http://bbs.chinaunix.net/thread-201843-1-1.html
看完,你基本就不需要再問此類問題了。