1. linux 字體顏色設置
在linux中,我們在編輯時需要對文檔編輯或者一些信息的顯示加上顏色,增強閱讀的效果
格式: echo -e "\033[字體顏色;字背景顏色m字元串\033[0m"
要顯示什麼顏色,優先是先判斷位置,按語法上來說,應該是先字體色,然後是背景色,但是字體色的地方數值為43,所以判斷為背景的顏色,而在後面的31本應該是背景色,結果數值31位字體的顏色,所以顯示的效果是字體的顏色為紅色,而不是背景紅色,假設這個31是數值41,則表示背景的為紅色,整體的效果就是紅色背景,字體處沒有顏色,為默認的白色,且效果是閃爍。
其中設置顏色的格式為:\033[ ; m …… \033[0m,其中ascii code是對顏色調用的始末.也可以表示為\e[F;Bm…….\e[0m
字背景顏色范圍: 40--49 字顏色: 30--39
例如顯示紅色,其中紅色^[[31mred^[[0m其中^[是在插入編輯模式下按鍵進去額ctr+v+[這三個按鍵輸入的。
假設寫在文檔tt1寫入對應的語句來查看,通過cat tt1驗證效果
^[[31mred^[[0m :表示對應的字是紅色字體,沒有底色,如下截圖
^[[31mred^[[44m:表示紅色字體,底色為紫紅色。假設寫在文檔tt1,後面cat tt1.這個屏幕底色都是藍色,字都是紅色如下截圖
^[[31;44mred^[[0m:表示紅色字體,字和屏幕的底色為藍色,背景沒有底色,和^[[31mred^[[44m效果一樣。如下截圖
^[[31;44mred^[[44m:表示紅色字體,底色都是藍色
在命令行里輸入命令:echo -e '\e[43;31;4mmage\e[0m',得到如下的效果
PS1是Linux終端用戶的一個環境變數,用來說明命令行提示符的設置。在終端輸入命令:echo $PS1,就會輸出PS1的定義:
默認的PS1變數值為 : PS1="[\u@\h \W]$"
PS1的定義中個常用的參數的含義如下:
給PS1賦值如下:
PS1="[\[\e[31;40m\]\u\[\e[37;40m\]@\[\e[34;40m\]\h\[\e[37;40m\] \W]\\$\[\e[0m"
這里需要注意,顏色的結束調用符號,要放在最後面,否則當使用命令history查看歷史命令時,會出現各種異常的顯示
正確的結果得到的結果如下圖
當把結束符調整到$前面,如PS1="[\[\e[31;40m\]\u\[\e[37;40m\]@\[\e[34;40m\]\h\[\e[37;40m\] \W]\[\e[0m\\$",使用history查找的時候出現了如下的異常顯示
注意,這里賦值的時候要用單引號才能得到要的效果,只是單純改變顏色,其他值不改變,如果賦值用雙引號,如下
錯誤寫法:PS1="[\[\e[31;40m\]\u\[\e[37;40m\]@\[\e[34;40m\]\h\[\e[37;40m\]\W]\[\e[0m\$"
得到的效果如下:
如果是root時,提示符為:# ,普通用戶則為:$,但是雙引號後root的提示符為$,是不對的
解決辦法:如果用雙引號,需要再\$前再加一個\,語句如下
PS1="[\[\e[31;40m\]\u\[\e[37;40m\]@\[\e[34;40m\]\h\[\e[37;40m\] \W]\\$\[\e[0m"
賦值為PS1='\[\e[43m\][\[\e[31m\]\u@\[\e[34m\]\h \W]\$\e[0m'
效果如下截圖
這個例子,我們可以明顯看出,\e[顏色值m這個是說明接下來的顏色從這里開始是什麼顏色,\e[0m說明的是顏色的結束位置,
這里需要注意的是,如果沒有通過\[ \]對每一個顏色進行界定,使用過程,如上翻歷史頁,就會出現顯示異常。
將設置好的PS1變數寫到家目錄下的.bashrc 裡面,這樣後面開啟的終端都有效。
$ vim .bashrc
打開後添加一行
PS1="[\[\e[31;40m\]\u\[\e[37;40m\]@\[\e[34;40m\]\h\[\e[37;40m\]\W]\[\e[0m\\$"
保存退出再次登錄時顯示的顏色也會是我們設定的值了。
2. linux腳本 輸出兩個數字,按照數字從小到大排序,比如輸入:31,12,輸出結果就是12,31
[root@localhost ~]# a=""; \
> b=""; \
> tmp=""; \
> read x; \
> a=${x%%,*}; \
> b=${x##*,}; \
> if [ $a > $b ] ; then \
> tmp=$a; \
> a=$b; \
> b=$tmp; \
> fi; \
> echo $a $b
34,12
12 34
[root@localhost ~]#
可以看出我是直接把代碼粘到終端上運行的,所以每一行後都有分號作語句分隔用,然後又用\斷行,其實上面這么多行,是在同一行內。
每行前的 > 是bash shell自動給出,因為它知道代碼還沒輸完。你只要把下面這樣的代碼復制上去也就可以:
a=""; \
b=""; \
tmp=""; \
read x; \
a=${x%%,*}; \
b=${x##*,}; \
if [ $a > $b ] ; then \
tmp=$a; \
a=$b; \
b=$tmp; \
fi; \
echo $a $b
用history命令可以查詢到我確實就相當於輸入在同一行:
1022 a=""; b=""; tmp=""; read x; a=${x%%,*}; b=${x##*,}; if [ $a > $b ] ; then tmp=$a; a=$b; b=$tmp; fi; echo $a $b
1023 history
[root@localhost ~]#
3. linux centos7.4 php7.1.31安裝
yum -y install gcc-c++
groupadd httpd
useradd -g httpd httpd
yum install libxml2 -y
yum install libxml2-devel -y
yum install libcurl-devel -y
yum -y install libjpeg-devel libpng-devel
//字體
yum install freetype-devel -y
yum -y install openssl openssl-devel
yum -y install php-mcrypt limcrypt libmcrypt-devel
tar -zxvf php-7.0.1.tar.gz
./configure --prefix=/usr/local/php --with-iconv --with-zlib --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --enable-ftp --with-jpeg-dir --with-freetype-dir --with-png-dir --enable-fpm --with-fpm-user=httpd --with-fpm-group=httpd --with-pdo-mysql --with-mysqli --with-mcrypt=/usr/local/ --enable-opcache=no
make && make install
配置環境變數
export PATH=$PATH:/usr/local/php/bin
export PATH=$PATH:/usr/local/php/sbin
然後立馬生效,執行
source /etc/profile
cp php.ini-proction /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
修改php.ini
vi /usr/local/php/lib/php.ini
date.timezone = "Asia/Shanghai"
4. linux c編程 16行和31行的sta和&sta是指什麼
wait函數的原型是 pid_t wait (int * status);
其中status是參數,用於收集子進程結束的信息(這些信息以後可能會用,不收集參數可以設為空指針),就是你前面fork得到的子進程。這里只是換成了sta。16行定義了該變數,31行根據原型來看,要用的是一個指向改變數的指針,所以用了&sta,以後要查看收集的東西看看sta這個變數的內容就知道了
5. Linux的介紹與應用
體系結構主要分為用戶態的內核態。所謂內核本質上是一段管理計算機硬體設備的程序。所謂用戶態上層應用程序的活動空間。內核必須為上層應用提供資源,CPU,存儲,IO資源,這被稱為系統調用,系統調用是不能被簡化的操作,其他復雜調用都是多個系統調用組合的結果。
我們要查看所有的系統調用,可以使用命令
所得到的列表如下
其中 2 代表的意思是系統調用, 3 指的是公共庫函數。公共庫函數是封裝系統調用,一組定義好的系統調用的組合。
Shell 是指一種應用程序,這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統內核的服務。
Linux 的 Shell 常見的有:
在指定目錄下查找文件。
find + 路徑 + -name + 「文件名」
之上的命令使用遞歸查找的方式查找到了 test 文件。如果我們想全局搜索則使用
當然find指令也支持表達式如果要查找所有以test開頭的問題,查找方式可以使用
* 表示通配符,可以實現模糊查詢。
如果要忽略大小寫查詢可以使用
對於grep使用過Linux的人基本都有接觸過。下面列舉一下grep的一些常用操作。
Linux系統用戶是根據用戶ID來識別的,默認ID長度為32位,用戶ID限制在60000以下。
linux系統中的用戶組(group)就是具有相同特性的用戶(user)集合,通過組可以更加方便的管理用戶,每個組擁有一個GroupID,每個用戶屬於一個主組,屬於一個或多個附屬組,一個用戶最多有31個附屬組。
Linux許可權是操作系統用來限制對資源訪問的機制,許可權一般分為讀、寫、執行。系統中每個文件都擁有特定的許可權、所屬用戶及所屬組,通過這樣的機制來限制哪些用戶或用戶組可以對特定文件進行相應的操作,Linux許可權授權,默認是授權給三種角色,分別是user、group、other(其他用戶)。
test目錄詳解如下:
d 表示目錄,同一位置如果為-則表示普通文件;
rwxr-xr-x 表示三種角色的許可權,每三位為一種角色,依次為u,g,o許可權,如上則表示user的許可權為rwx,group的許可權為r-x,other的許可權為r-x;
2表示文件夾的鏈接數量,可理解為該目錄下子目錄的數量;
4096表示該文件夾占據的位元組數;
+、-、=代表加入、刪除和等於對應許可權
授予用戶、組、其他人對test目錄擁有rwx許可權
撤銷用戶、組、其他人對test目錄擁有x許可權
Linux許可權可以將rwx用二進制來表示,其中有許可權用1表示,沒有許可權用0表示。
Linux許可權用二進制顯示如下:
rwx=111
r-x=101
rw-=110
r--=100
依次類推,轉化為十進制,對應十進制結果顯示如下:
rwx=111=4+2+1=7
r-x=101=4+0+1=5
rw-=110=4+4+0=6
r--=100=4+0+0=4
得出結論,用r=4,w=2,x=1來表示許可權。
所以我們有時候使用
為文件賦予所有許可權。
除了普通許可權,Linux還有三個特殊許可權
6. Linux文件系統操作命令
Linux文件系統操作命令大全
Linux命令有很多,那麼Linux文件系統操作命令又有哪些呢?下面我為你介紹!
文件系統操作命令:
1. cat:可以顯示文件的內容(經常和more搭配使用),或將多個文件合並成一個文件。
2. chgrp:用來改變文件或目錄所屬的用戶組,命令的參數以空格分開的要改變屬組的文件列表,文件名支持通配符,如果用戶不是該文件的所有者,則不能改變該文件的所屬組。
3. chmod:用於改變文件或目錄的訪問許可權,該命令有兩種用法:一種是使用圖形化的方法,另一種是數字設置法。
4. chown:用來將指定用戶或組為特定的所有者。用戶可以設置為用戶名或用戶ID,組可以是組名或組ID。特定的文件是以空格分開的可以改變許可權的文件列表,文件名支持通配符。
5. clear:用來清除終端屏幕。
6. cmp:用來比較兩個文件的大小。
7. cp:()可以將文件或目錄復制到其他目錄中,就如同Dos下的命令一樣,功能非常強大。在使用cp命令時,只需要指定源文件名或目標目錄即可。
8. cut:用來移除文件的部分內容。
9. diff:用來找出兩個文件的不同之處。
10. : 用來顯示磁碟的剩餘空間的大小。
11. file:用來顯示文件的類型。
12. find:用來在目錄中搜索文件,並執行指定的操作。
13. head:只查看文件的頭幾行內容,而不必瀏覽整個文件。
14. ln:可以在文件之間創建鏈接,實際上是給某個文件指定一個訪問它的別名。
15. less:用法與more類似,可以查看超過一屏的文件內容,不同的是less除了可以按空格鍵向下顯示文件外,還可以利用方向鍵來滾動顯示文件,要結束瀏覽,只要在less的提示符“:”後按Q即可。
16. locate:可用於查找文件,且比find命令的搜索速度快。
17. ls(list):用來顯示當前目錄中的文件和子目錄列表。
18. mkdir(make directory):建立子目錄。
19. more:用於顯示內容超過一屏的文件,為了避免文件內容顯示瞬間就消失,可以使用more命令讓文件顯示滿一屏時暫停,在按下任意鍵的時候繼續顯示下一屏的內容。
20. rmkdir(remove directory):用來刪除“空”的子目錄或無用的目錄文件。
21. mv(move):可以將文件以及目錄移到其他位置,或更改文件以及目錄的名稱。
22. pico:可指定文本的編輯方式。
23. pwd(print working directory):可顯示用戶當前所在的目錄。
24. rm:用來刪除系統中過時或無用的文件,可以刪除目錄中的文件或目錄本身,對於鏈接文件,原有文件保持不變。
25. sort:將文本文件自動分類。
26. stat:用於顯示文件或文件系統的狀態。
27. Strings:顯示文件中要列印的字元串。
28. tail:輸出文件的結尾。
29. touch:改變文件的時間戳。
30. umask:用於啟動bash shell。
31. uniq:移除已分類文件中的重復文本行。
32. vi:啟動vi文本編輯器。
33. wc:顯示文件中位元組、片語合文本行的數目。
34. whereis:查找特定目錄下的原始程序,二進製程序或用戶手冊等文件的位置。
35. man:如果用戶對某個命令想了解更詳細的話,可使用此命令。
36. dd:復制一個文件。
37. df:查看一個文件系統的磁碟空間使用情況。
38. edquoat:設置用戶與用戶組的磁碟空間限制,即Windows系統中的配額。
39. fdformat:格式化軟盤。
40. fdisk:執行Linux下的`磁碟分區。
41. mkfs:建立一個Linux文件系統。
42. mkswap:創建一個Linux交換分區。
43. mount:掛載一個文件系統。
44. quota:限制和顯示用戶可用的磁碟空間。
45. swapon,swapoff:啟用或取消設備和文件的交換頁。
46. quotaon,quotaoff:啟用或取消quota限制。
47. umount:取消文件系統的裝備。
系統管理命令
1. finger:查詢用戶信息,也能查看默認的用戶環境。
2. ftp:標準的文件傳輸協議的用戶介面,是在網路上傳輸文件最簡單有效的方法。
3. host:用於DNS查詢。
4. hostname:用於顯示或設置系統的主機名。
5. ifconfig:用於配置網卡介面。(可以使用down或up參數來禁用或啟用某個網卡介面)
6. mail:發送和接收郵件。
7. netstat:顯示網路連接、路由表和網路介面信息,用戶可以知道目前那些網路連接正在運行。
8. ping:此命令用於測試本計算機和網路上其它的計算機是否相連。
9. rlogin:遠程登陸命令,該命令與telnet命令很相似,允許用戶啟動遠程系統的交互會話。
10. rcp:rcp(remote file )命令是遠程文件復制命令,該命令用於在計算機之間復制文件,有兩中格式,一種格式用於文件動文件的復制,另一種用於把文件或目錄復制到其他文件目錄中。
11. route:此命令用於顯示或設置IP路由表。
12. tcpmp:此命令用於測試網路的通信量。
13. talk:此命令可用於事項網路用戶的適時交談,但是必須將雙方系統的信息加入各自的/etc/hosts文件中,以相互識別。
14. telnet:此命令用於通過網路登陸遠程計算機,如同操作本地計算機一樣。
15. wall:wall(write all)命令可以用於發送消息給登陸本機的用戶。在發送消息時,可直接輸入要發送的消息,也可以把文件當成消息發送。
16. wget:此命令用於Linux環境下從Internet上下載文件,支持http和ftp協議,支持代理伺服器和斷點連續傳功能,能夠遞歸遠程主機上的目錄,查找合乎要求的的文件並下載到本地硬碟上。Wget命令可以在後台運行,截獲並忽略hantfup信號,因此用戶退出登陸後,仍可繼續運行。
17. &,bg:&,bg命令是後台執行命令,有時候用戶執行的程序可能要話很多時間,如果放在前台執行,可能無法繼續其他操作,最好將他放在後台執行。
18. fg:fg命令是前台執行命令,如果用戶有程序在後台運行,可以通過fg命令將程序從後台移到前台執行。
19. jobs:此命令用於顯示正在後台執行的任務清單。Bg,fg,jobs命令都屬於bash命令,
20. kill:此命令用於終止一個程序,例如:#[root@rathat9 root]kill 3793
21. ps:此命令用於顯示程序的狀態。
22. top:此命令用於顯示當前CPU進程。
23. at batch atp atrm:這些命令用於排序,檢查或刪除後台運行的任務。
Linux與用戶有關的命令:
1. passwd命令:更改用戶口令。
格式:passwd [用戶名]
2. su命令:可以讓一個普通用戶擁有超級用戶或其他用戶的許可權,也可以讓超級擁護以普通用戶的身份做一些事情。
格式:su[選項][?][使用者賬號]
說明:若沒有指定的使用者賬號,則系統預設值為超級用戶root。該命令中個選項的含義分別為:
-c:執行一個命令後就結束。
-:加了這個減號的目的是使環境變數和欲轉換的用戶相同。
-m:保留環境變數不變。
Linux系統管理命令:
1. wall命令:對全部以登陸的用戶發送信息。
2. write命令:向系統中某一用戶發送信息。
格式:write 用戶賬號 [終端名稱]
3. mesg命令:設定是否允許其他用戶用write命令給自己發送信息。
如果允許輸入命令:mesg y
如果不允許輸入命令:mesg n
4. sync命令:在關閉Linux系統是使用的。Sync是強制把內存中的數據寫回硬碟,以免數據丟失。
5. shutdown命令:可以安全的關閉或重啟Linux它在系統關閉之前給系統上的所有登陸用戶提示一條警告信息。
格式:shutdown [選項][時間][警告信息]
命令中選項的含義:
-k:並不真正關機,而只是發出警告信息給所有用戶。
-r:關機後立即重新啟動。
-h:關機後不重新啟動。
-f快速關機,重新啟動時跳過fsck。
-n:快速關機,不經過init程序。
-c:取消一個已經運行的shutdown。
6. free命令:查看當前系統內存的使用情況,它顯示系統中剩餘及已用的物理內存和交換內存,以及共享內存和被核心使用的緩沖區。
格式:free [-b | -k |-m]
命令中各個選項的含義:
-b:以位元組為單位顯示。
-k:以K位元組為單位顯示。
-m:以兆位元組為單位顯示。
7. uptime命令:顯示系統已經運行了多長時間,它依次顯示下列信息:現在時間、系統已經運行了多長時間、目前有多少登陸用戶、系統在過去的1分鍾、5分鍾和15分鍾內的平均負載。
8. df命令:檢查文件系統的磁碟空間佔用情況。
格式:df [選項]
說明:df命令可顯示所有文件系統對I節點和磁碟塊的使用情況。
命令中各個選項的含義:
-a:顯示所有文件系統的磁碟使用情況,包括0塊(block)的文件系統。
-k:以k位元組為單位顯示。
-i:顯示i節點信息,而不是磁碟塊。
-t:顯示各指定類型的文件系統的磁碟空間使用情況。
-x:列出不是某一指定類型文件系統的磁碟空間使用情況。
-T:顯示文件系統類型。
9. 命令:顯示磁碟空間的使用情況。統計目錄(或文件)所佔磁碟的大小。
格式: [選項] [Names…]
說明:該命令逐級進入指定目錄的每一個子目錄並顯示該目錄佔用文件系統數據塊(1024位元組)的情況。若沒有給出Names,則對當前目錄進行統計。
命令中各個選項的含義:
-s:對每個Names參數只給出佔用的數據塊總數。
-a:遞歸的顯示指定目錄中各文件及子孫目錄中個文件佔用的數據塊數。若既不指定-s,也不指定-a,則顯示Names中的每一個目錄及其中的各子目錄所佔的磁碟塊數。
-b:以位元組為單位列出磁碟空間使用情況(系統預設以k位元組為單位)。
-k:以1024位元組為單位列出磁碟空間的使用情況。
-c:最後再加上一個總計(系統預設設置)。
-l:計算所有的文件大小,對硬鏈接文件,則計算多次。
-x:跳過在不同文件系統上的目錄不予統計。
10. dd命令:把指定的輸入文件拷貝到指定的輸出文件中,並且在拷貝過程中可以進行格式轉換。
格式:dd [選項]
命令中各個選項的含義:
if = 輸入文件(或設備名稱)。
of = 輸出文件(或設備名稱)。
ibs = bytes 一次讀取bytes位元組,及讀入緩沖區的位元組數。
skip = blocks 跳過讀入緩沖區開頭的ibs*blocks塊。
obs = bytes 一次寫入bytes位元組,及寫入緩沖區的位元組數。
bs = bytes 同時設置讀/寫緩沖區的位元組數(等於設置ibs和obs).
cbs = byte 一次轉換bytes位元組。
count = blocks 只拷貝輸入的block塊。
conv = ASCⅡ 把EBCDIC碼轉換為ASCⅡ。
conv = ebcdic 把ASCⅡ碼轉換為EBCDIC碼。
conv = ibm ibm把ASCⅡ碼轉換為alternate EBCDIC碼。
conv = block 把變動位轉換成固定字元。
conv = ublock 把固定位轉換成變動位。
conv = ucase 把字母由小寫轉換為大寫。
conv = lcase 把字母由大寫轉換為小寫。
conv = notrunc 不截短輸出文件。
conv = swab 交換每一對輸入位元組。
conv = noerror 出錯是不停止處理。
conv = sync 把每個輸入記錄的大小都調到ibs的大小(用NUL填充)。
11. fdformat命令:低級格式化軟盤。
格式:format [-n] device
說明:-n 軟盤格式化後不作檢驗。
12. echo命令:在顯示器上顯示一段文字,一般起到一個提示作用。
格式:echo [-n] 字元串
13. cal命令:顯示某年某月的日歷。
格式:cal [選項] [月 [年]]
命令中各個選項的含義:
-j:顯示出給定月中的每一天是一年中的第幾天(從1月1日算起)。
-y:顯示出整年的日歷。
14. date命令:顯示和設置系統日期和時間。
格式:date [選項] 顯示時間格式 (以 + 開頭,後面接格式)
date [選項] 設置時間格式
命令中各個選項的含義:
15. clear命令:清除屏幕上的信息。
Vi的基本命令:
1. 移動游標:
Ctrl + b:上滾一屏
Ctrl + f:下滾一屏
Ctrl + d:下滾半屏
Ctrl + u:上滾半屏
G: 移到文件最後
W:移到下個字的開頭
B:跳至上個字的開頭
2. 刪除
x:刪除當前游標所在後面一個字元
#x:刪除當前游標所在後面#個字元。例如,5x表示刪除5個字元。
dd:刪除當前游標所在行
#dd:刪除當前游標所在後面#行。例如,5dd表示刪除字游標算起的5行。
:l,#d:例如,:1,12d表示刪除自行1至行12的文字
X:刪當前游標的左字元
D:刪至行尾
3. 更改
cw:更改游標處的字到此單字的字尾處
c#w:例如,c3w表示更改3個字
cc:修改行
c:替換到行尾
4. 取代
r:取代游標處的字元
R:取代字元直到按ESC為止
5. 復制
yw:拷貝游標處的字到字尾只緩沖區
P:把緩沖區的資料貼上來
yy:拷貝游標所在之行至緩沖區
#yy:例如:5yy,拷貝游標所在之處以下5行至緩沖區
Linux文件的復制,刪除和移動命令
1.cp命令:該命令的功能是將給出的文件或目錄拷貝到另一文件或目錄中,同MSDOS下的COPY命令一樣,功能十分強大。
語法:cp[選項]源文件或目錄,目標文件或目錄
說明該命令把指定的源文件復制到目標文件或把多個源文件復制到目標目錄中。
該命令的各項選項含義如下:
-a:該選項通常在拷貝目錄是使用。他保留鏈接,文件屬性,並遞歸地拷貝目錄,其作用等於dpr選項的組合。
-d:拷貝是保留鏈接
-f:刪除已經存在的目標文件而不提示。
-I:和 f選項相反,在覆蓋目標文件之前將給出提示要求擁護確認。回答y時目標文件將被覆蓋,是互動式拷貝。
-p:此時cp除復制源文件的內容外,還將把其修改時間和反問許可權也復制到新文件中。
-r;若給出的源文件是一目錄文件,此時cp將遞歸復制該目錄下所有的子目錄和文件。此時目標文件必須為一個目錄名。
-L:不作拷貝,只是鏈接文件。
需要說明的是,為防止用戶在不經意的情況下用cp命令破壞另一個文件,如用戶指定的目標文件名已存在,用cp 命令拷貝文件後,這個文件酒會被新源文件覆蓋,因此,建議用戶在使用cp命令拷貝文件時,最好使用I選項。
2.mv命令:用戶可以使用mv命令來為文件或目錄改名或將文件由一個目錄移入另一個目錄中。該命令如同MS-DOS下的ren 和 move 的組合。
語法:mv[選項]源文件或目錄 目標文件或目錄。
說明:視mv命令中第二個參數類型的不同(是目標文件還是目標目錄),mv命令將文件重命名或將其移至一個新的目錄中。當第二個參數類型是文件時,mv命令完成文件重命名,此時,源文件只能有一個(也可以是源目錄名),他將所給的源文件或目錄重命名為給頂的目標文件名。當第二個參數是已存在的目錄名稱時,源文件或目錄參加參數可以有很多個,mv命令將個參數指定的源文件均移至目標目錄中。在跨文件系統移動文件時,mv先拷貝,再將原有文件刪除,而鏈至該文件的鏈接也將丟失。
命令中各選項的含義為:
-I:交互方式操作。如果mv操作將導致對已存在的目標文件的覆蓋,此時系統詢問是否重寫,要求用戶回答y或n,這樣可以避免誤覆蓋文件。
-f:禁止交互操作。在mv操作要覆蓋某已有的目標文件是不給任何指示,指定此選項後,I選項將不再起作用。
如果所給目標文件(不是目錄)已存在,此時該文件的內容將後備新文件覆蓋,為防止用戶用mv命令破壞另一個文件,使用mv命令移動文件時,最好使用I選項。
3.rm命令:用戶可以用rm命令刪除不需要的文件。該命令的功能問刪除一個目錄中的一個或多個文件或目錄,他也可以將某個目錄及其下的所有文件及子目錄均刪除。對於鏈接文件,只是斷開了鏈接,源文件保持不變。
Rm命令的一般形式為:
Rm [選項]文件……
如果沒有使用-r選項,則rm不會刪除目錄。
該命令的各選項含義如下:
-f:忽略不存在的文件,從不給出提示。
-r:指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除。
-I:進行互動式刪除。
使用rm命令要小心。因為一旦文件被刪除,他是不能被恢復的。為了防止這種情況的發生可以使用I選項倆逐個確認要刪除的文件。如果用戶輸入y,文件將被刪除。如果輸入任何其他東西,文件則不會刪除。
Linux目錄的創建與刪除命令:
1. mkdir命令
功能:創建一個目錄(類似MS-DOS下的md命令)。
語法:mkdir[選項]dir-name
說明:該命令創建由dir-name命名的目錄。要求創建目錄的用戶在當前目錄中(dir-name的父目錄中)具有寫許可權,並且dirname不能是當前目錄中已有的目錄或文件名稱。
命令中個選項的含義為:
-m:對新建目錄設置存取許可權。也可以用chmod命令設置。
-p:可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄。
2. rmdir命令
功能:刪除空目錄。
語法:rmdir[選項]dir-name。/
說明:dir-name表示目錄名。該命令從一個目錄中刪除一個或多個子目錄項。需要特別注意的是,一個目錄被刪除之前必須是空的。Rm-r dir 命令可代替rndir,但是有危險性。刪除某目錄時也必須具有對父目錄的、寫許可權。
命令中個選項的含義為:
-p遞歸刪除目錄dirname,當子目錄刪除後其父目錄為空時,也一同被刪除。如果整個路徑被刪除或者由於某種原因保留部分路徑,則系統在標准輸出上顯示相應的信息。
3. cd命令
功能:改變工作目錄。
語法:cd[directory]
說明:該命令將當前目錄改變至directory所指定的目錄。若沒有指定directory,則回到用戶的主目錄。為了改變到指定目錄,用戶必須擁有對指定目錄的執行和讀許可權。
該命令可以使用通配符(如”*,_”這樣的通配符號)。
4. pwd命令
在Linux層次結構中,用戶可以在被授權的任意目錄下利用mkdir命令創建新目錄,也可以利用cd命令從一個目錄轉換到另一個目錄。然而,沒有提示符來告知用戶目前處於哪一個目錄中。想要知道當前所處的目錄,可以用pwd命令,該命令顯示整個路徑名。
語法:pwd
說明:此命令顯示出當前工作目錄的絕對路徑。
5. ls命令
ls是list的簡寫,其功能為列出目錄的內容。這是擁護最常用的一個命令之一,因為用戶需要不時地查看某個目錄的內容,該命令類似於DOS下的dir命令
語法:ls[選項][目錄或是文件]
對於每個目錄,該命令將列出其中的所有子目錄與文件。對於每個文件,ls將輸出其文件名以及所要求的其他信息。默認情況下,輸出條目按字母順序排序。但未給出目錄名或是文件名時,就顯示當前目錄的信息。
命令中各個選項的含義:
-a:顯示指定目錄下所有子目錄與文件,包括隱藏文件。
-A:顯示指定目錄下所有子目錄與文件,包括隱藏文件。但不列出“.”和“..”.
-b:對文件名中的不可顯示字元用把禁止
linux中所有設備都是以文件的形式顯示
linux下文件的後綴名無實際意義
命令
pwd 顯示路徑
man +命令 列出操作說明
ls -l/-help列出 文件目錄
cd / 目錄做實驗
安裝步驟 configure make make install?
rm -r dl 遞歸刪除目錄
rm -rf 刪除所有目錄
rm -f 加文件名 刪除文件
rmdir +文件地址 刪除文件夾所有和rm -rf功能差不多
touch 加名字 創建新文件
cp 復制 mv 移動 rm 刪除
vi 文本編輯器 輸入a將從命令格式變成輸入格式
head tail 查看前面和後面
find 加位置 加文件名 查找
echo $PATH 查詢路徑
useradd 加名字 添加用戶
userdel 加名字 刪除用戶
su 加用戶名 切換用戶
chmod +x/-x 加文件名 修改文件許可權
chmod 755 加文件名 改變許可權在安裝程序時
grep 加文本字元 加在那個文件 查找字元存在那行
fdisk -l 查看磁碟信息
命令1|命令2|命令三... 管道
ps -ef查看進程
ifconfig linux查看ip
重定向
linux和其它機器之間共享文件vsftp Windows和linux傳輸文件15-17
putty遠程登錄軟體ssh
service iptables off防火牆關閉
tar -xvf 第二層解壓縮
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(註:tar是打包,不是壓縮!)
———————————————
.gz
解壓1:gunzip FileName.gz
解壓2:gzip -d FileName.gz
壓縮:gzip FileName
.tar.gz 和 .tgz
解壓:tar zxvf FileName.tar.gz ./DirName
壓縮:tar zcvf FileName.tar.gz DirName
.tar.bz2
解壓:tar xjf FileName.tar.bz2 ./DirName
壓縮:tar cjf FileName.tar.bz2 DirName
rpm -ivh 加.rpm文件 安裝
安裝sudo apt-get install 軟體名
;7. 如何使linux內核2.6.31支持yaffs2文件系統
下面操作的前提是:內核支持nand flash
一. 下載yaffs2源碼,(我將源碼反正/opt目錄下),並解壓源碼,進入源碼目錄
# tar xzvf yaffs2.tar.gz
# cd yaffs2
二. 為內核添加yaffs2文件系統補丁,執行:
# ./patch-ker.sh c m /..../linux-2.6.31.1 <----c m後面接的是內核源碼所在的目錄
執行完後,在內核源碼fs目錄下就多了一個yaffs2目錄,同時Makefile和Kconfig文件也增加了對yaffs2的配置和編譯條件。
三. 配置內核對yaffs2的支持
這里的配置根據自己的需求,把不用的文件系統都去掉。
#make menuconfig
找到下面的配置:
File systems --->
DOS/FAT/NT Filesystems --->
<*> MSDOS fs support
<*> VFAT (Windows95) fs support
Miscellaneous filesystems --->
<*> YAFFS2 file system support
[*] Autoselect yaffs2 format
配置語言選項:
Native Language support --->
(iso8859-1) Default NLS Option
<*> Codepage 437(United States, Canada)
<*> Simplified Chinese charset(CP936, GB2312)
<*> NLS ISO8859-1 (Latin 1; Western European Language)
<*> NLS UTF-8
現在內核已經支持NandFlash和yaffs2文件系統,重新編譯內核:
#make zImage
將編譯好的內核燒入NandFlash後,再燒入yaffs2文件系統,就可以了。
四. 製作yaffs2根文件系統
1. 環境
(1) 交叉編譯器版本: arm-linux-gcc 4.3.3
(2) Linux環境:redhat enterprise 5.5 (2.6.18-194.el5)
(3) 開發板:TQ2440
2. 編譯busybox
(1) 獲取busybox源碼,放在/opt目錄下,解壓,進入busybox源碼目錄
#tar jxvf busybox-1.17.2.tar.bz2
#cd busybox-1.17.2
#vi Makefile
將164行改為CROSS_COMPILE = arm-linux-
將190行改為ARCH = arm
保存退出進入配置菜單
#make menuconfig 採用默認配置保存推出
#make
#make install
通過上面的步驟,在busybox-1.17.2的根目錄下出現了一個_install目錄,
在該目錄下又有三個目錄文件bin sbin usr和一個鏈接文件 linuxrc。
3. 創建根文件系統必要的目錄
(1)在/opt目錄下創建root_fs目錄
#mkdir root_fs
#cd root_fs
(2)將busybox-1.17.2的根目錄下_install中的bin sbin usr和linuxrc拷貝到root_fs
#cp -rf /opt/busybox-1.17.2/_install/* /opt/root_fs
(3)創建必要的目錄
#mkdir dev etc home lib mnt opt proc root sys tmp var
(4)創建必要的二級目錄
#mkdir usr/lib usr/share
#mkdir etc/rc.d
#mkdir var/lib var/lock var/run var/tmp
4. 創建必要的文件
(1) 獲取庫文件,(交叉編譯工具下的庫文件)到root_fs/lib目錄中
#cp -rf /opt/arm/4.3.3/arm-none-linux-gnueabi/libc/armv4t/lib/*so* lib -a
(2) 將主機etc目錄下的passwd、group、shadow文件拷貝到root_fs/etc目錄下
#cp -f /etc/passwd /etc/group /etc/shadow etc
將目錄/opt/busybox-1.17.2/examples/bootfloppy/etc下的所有文件拷貝到root_fs/etc下。
在這個目錄下有三個文件fstab, inittab, profile和一個目錄init.d,在目錄init.d中有一個文件rcS。
#cp -rf /opt/busybox-1.17.2/examples/bootfloppy/etc/* etc
在目錄etc下創建文件mdev.conf。mdev是?v的一個簡化版本,
我們可以通過文件mdev.conf自定義一些設備節點的名稱或鏈接來滿足特定的需要,但在此處讓它為空。
#touh etc/mdev.conf
(3)創建兩個設備文件dev/console dev/null。
在linux內核源碼文件init/main.c中有打開設備文件dev/console的操作如下:
static noinline int init_post(void)
__releases(kernel_lock)
{
………………………………
if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
printk(KERN_WARNING "Warning: unable to open an initial console.\n");
………………………………
}
內核啟動執行到這里時mdev還沒有構建dev目錄,如果沒有創建設備文件dev/console就將會列印警告
Warning: unable to open an initial console。
在內核啟動的過程中要將產生的一些垃圾信息丟棄就需要空設備dev/null。
#mknod dev/console c 5 1
#mknod dev/null c 1 3
5. 修改文件
在啟動過程中bootloader會傳遞參數init=/linuxrc給內核的main()函數,所以在文件系統被掛載後,
運行的第一個程序是linuxrc,而linuxrc是一個指向/bin/busybox的鏈接文件,也就是說文件系統被掛在後運行的第一個程序是busybox。
Busybox首先會解析文件/etc/inittab,這個文件中存放的是系統的配置信息,這些配置信息指明了接下來將要啟動那些程序。
-------------------------------------------------------------------------------------------------------
(1)修改文件etc/inittab如下
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
說明:
/etc/inittab 文件中每個條目用來定義一個子進程,並確定它的啟動方法,格式如下
:::
:表示這個進程要使用的控制台(即標准輸入、標准輸出、標准錯誤設備)。如果省 略,則使用與init進程一樣的控制台。
:對於Busybox init程序,這個欄位滑意義,可以省略。
:表示init程序如何控制這個子進程,
: 要執行的程序,它可以是可執行程序,也可以是腳本
文件etc/inittab配置條目說明如下:
::sysinit:/etc/init.d/rcS
啟動系統初始化文件/etc/init.d/rcS。欄位sysinit表明文件/etc/init.d/rcS在系統啟動後最先執行,
並且只執行一次,init進程等待它結束才繼續執行其它動作。(腳本文件名一般為rc,後綴S代表單用戶運行級別腳本)
tq2440_serial0::askfirst:-/bin/sh
在串口s3c2410_serial0上啟動askfirst動作的shell。
S3C2410的串口名在/dev下是s3c2410_serialx。askfirst表明init進程先輸出 「Please press Enter to actvie this console」,
等用戶輸入回車鍵之後才啟動-/bin/sh。
::ctrlaltdel:/sbin/reboot
當按下Ctrl+Alt+Delete組合鍵時,init重啟執行程序。欄位ctrlaltdel表明當按下Ctrl+Alt+Delete組合鍵時,執行相應的進程。
::shutdown:/bin/umount -a -r
告訴init在關機時運行umount命令卸載所有的文件系統,如果卸載失敗,試圖以只讀方式重新掛載。
欄位shutdown表明在重啟關閉系統命令時執行相應進程。 ------------------------------------------------------------------------------------------------------------------------------
(2)當解析完文件etc/inittab後就將啟動這些進程,首先要執行的是啟動腳本etc/init.d/rcS。
修改文件etc/init.d/rcS如下:
#! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
/bin/hostname CPEmbed
/sbin/ifconfig lo 127.0.0.1 up
/sbin/ifconfig eth0 192.168.1.8 netmask 255.255.255.0
/sbin/route add default gw 192.168.1.1 eth0
echo "---------------mount all-----------------"
/bin/mount -a
mkdir /dev/pts
/bin/mknod /dev/pts/0 c 136 0
/bin/mknod /dev/pts/1 c 136 1
/bin/mknod /dev/pts/2 c 136 2
/bin/mknod /dev/pts/3 c 136 3
/bin/mknod /dev/pts/4 c 136 4
/bin/mknod /dev/pts/5 c 136 5
/bin/mount -t devpts devpts /dev/pts
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s
/usr/sbin/telnetd &
/usr/sbin/vsftpd &
echo "******************************************"
echo "******************************************"
echo "** Kernel version: linux-2.6.31.1 **"
echo "** Date: 2012.04.12 **"
echo "******************************************"
說明如下:
#! /bin/sh 用busybox的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin //shell命令的搜索路徑
runlevel=S //運行在單用戶模式
prevlevel=N //前一個級別為n表示沒有前一個級別
umask 022 //許可權位掩碼
export PATH runlevel prevlevel //將設置的變數導出到環境中
/bin/hostname CPembed //主機名,CPembed將出現在shell提示符中[root@CPembed/]#
/sbin/ifconfig lo 127.0.0.1 up //啟動lo
/sbin/ifconfig eth0 192.168.1.8 netmask 255.255.255.0 up //配置ip地址
/sbin/route add default gw 192.168.1.1 eth0 //添加默認路由
/bin/mount -a //將文件etc/fstab中指明的文件系統掛載到對應掛載點上
後面的8行是對telnetd的配置
echo /sbin/mdev>/proc/sys/kernel/hotplug //用mdev來處理內核的熱插拔事件。
當有熱插拔事件產生時,內核就會調用位於/sbin目錄的mdev。這時mdev通過環境變數中的ACTION和DEVPATH,
(這兩個變數是系統自帶的)來確定此次熱插拔事件的動作以及影響了/sys 中的那個目錄。接著會看看這個目錄中是否有「dev」的屬性文件,
如果有就利用這些信息為 這個設備在/dev 下創建設備節點文件。
mdev -s //建立dev目錄。以『-s』為參數調用位於/sbin 目錄寫的 mdev(其實是個鏈接,作用是傳遞參數給/bin目錄下的busybox 程序並調用它),mdev掃描 /sys/class 和/sys /block中所有的類設備目錄,如果在目錄中含有名為「dev」的文件,且文件中包含的是設備號,則 mdev 就利用這些信息為這個設備在/dev下創建設備節點文件。一般只在啟動時才執行一次「mdev -s」
/usr/sbin/telnetd & //後台運行telnetd
/usr/sbin/vsftpd & //後台運行vsftpd
------------------------------------------------------------------------------------------------------------------------------
(3)修改文件etc/fstab如下:
#device mount-point type option mp fsck order
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
mdev /dev ramfs defaults 0 0
在系統啟動初始化文件/etc/init.d/rcS中有執行掛載命令/bin/mount -a ,這便是將文件etc/fstab中指定 的文件系統掛載到對應的掛載點上。這些文件系統的掛在是執行mdev -s命令建立dev目錄的前提------------------------------------------------------------------------------------------------------------------------------
(4)在啟動腳本etc/init.d/rcS執行完後將在串口s3c2410_serial0啟動一個shell。Shell啟動過程中會根據文件/etc/profile配置登陸環境。
文件/etc/profile修改如下:
USER=" 'id -un' "
LOGNAME=$USER
PS1='[\u@\h \W]# '
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH
具體說明:
USER="id -un" //獲取用戶名id-un與whoami命令有相同的功能
PS1='[\u@\h \W]# ' //PS1指定sh提示符的格式在本環境下將是[root@cyembed /]#
export USER LOGNAME PS1 PATH 將這些變數導出到環境。
(5)在用戶登錄時將在/etc下尋找三個文件passwd ,shadow, group匹配相關信息。
這三個文件修改如下:
/etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
/etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
ftp:x:50:
nobody:x:99:
/etc/shadow root:$6$hnswPTgxzFaZHlLl$//:14819:0:99999:7:::
bin:*:14715:0:99999:7:::
daemon:*:14715:0:99999:7:::
ftp:*:14715:0:99999:7:::
nobody:*:14715:0:99999:7:::
------------------------------------------------------------------------------------------------------------
6. 製作yaffs2根文件系統鏡像
用天嵌科技提供的yaffs2文件系統鏡像製作工具mkyaffs2image,製作根文件系統鏡像。
#./mkyaffs2image root_fs root_fs.bin
7. 將根文件系統鏡像下載到nand flash並啟動
啟動信息如下:
8. 在Linux 系統中可用ls -al命令列出文件列表, (31) 列出的是一個符號連接文件。 A.
選C
Linux文件的許可權一共10位長度,分為4段
第一個字元顯示的是文件的類型,如下:
9. linux 中,怎樣把31到41行的pl.length 變成pl->length (.變成->) :31.41s/./怎麼寫/
sed 『31,41 s/pl.length/pl->length/g』 file
加上參數-i為修改並保存至文件sed -i 『31,41 s/pl.length/pl->length/g』 file