1. linux shell腳本中如何將bin目錄下以字母b開頭的文件屬性分行輸入到一個文本文件中去
ls -l b*|awk '{print($9 " " $3 " " $1)}' >test.txt
2. 在命令行模式下執行命令
輸入命令按下enter鍵就會開始執行,如果輸入的命令很長,可以使用反斜杠來轉義enter符號,使命令連續到下一行。
在linux環境中大小寫是不同的
1.顯示日期和事件的命令:date
如果想要輸出特定格式的日期和事件需要帶上參數
例如:date +%Y/%m/%d
date +%H:%M
2.顯示日歷的命令:cal
cal的基本能語法:cal [[month] year]
可以顯示某年的日歷:例如,cal 2009
可以顯示某年某月的日歷:例如,cal 9 2009
3.計算器命令:bc
輸入bc命令就進入bc這個軟體的工作環境,就可以像在windows中一樣進行加減乘除,
+加法,-減法,*乘法,/除法,^指數,%余數。
bc默認是輸出整數的,如果要輸出全部小數,就必須執行scale=number,其中number就是小數點後的位數。
要離開bc,需要輸入quit才能離開bc軟體環境。
1.tab鍵:用於補全命令或者補全文件
2.ctrl+c:用於中斷目前正在運行的命令
3.ctrl+d:表示鍵盤輸入結束,也可以用來代替exit的輸入。
在命令行中直接按下兩次tab鍵,可以看到總共有多少個命令可以供當前用戶使用。
可以使用man 命令名來查看命令的具體用法。
其中man是manual的縮寫。
數據同步寫入磁碟中:在關機前可以使用命令sync將內存中尚未被更新的數據就會被寫入硬碟中。
關機命令:shutdown、reboot、halt、poweroff
系統執行等級:
run level 0:關機
run level 3:純命令行模式
run level 5:含有圖形界面模式
run level 6:重啟
可以使用init命令來切換各種模式,例如想要關機的話,也可以使用init 0。
Linux文件屬性
ls -al 列出所有的文件,-al表示列出所有的文件詳細的許可權和屬性。
例如
[1] [2] [3] [4] [5] [6] [7]
[許可權] [連接] [所有者][用戶組][文件容量] [修改日期] [文件名]
drwxr-x--- 4 root root 4096 Sep 8 14:06 .gconfd
-rwxr-xr-x 1 root root 1024 Jan 3 11:01 install.log
1.第一列文件的類型與許可權
第一列由10個字元組成:
第一個字元代表這個文件是目錄、文件或者鏈接文件等
其中d表示目錄,
-表示是文件
l表示是連接文件
接下來的字元中,以三個字元為一組,均是rwx的組合,其中r表示可讀,w表示可寫,x表示可執行。如果沒有相應的許可權就用-表示。
這三組分別表示的許可權是:
第一組為」文件所有者的許可權「
第二組為」同用戶組的許可權「
第三組為」其他非本用戶組的許可權「
2.第二列表示有多少個文件名連接到此節點上
3.第三列表示這個文件或目錄的所有者賬號
4.第四列表示這個文件所屬的用戶組
5.第五列表示這個文件的大小,默認單位為B
6.第六列表示這個文件的創建日期或這個文件的修改日期。
7.第七列表示這個文件名
改變文件屬性和許可權:
chgrp(change group):改變文件的所屬用戶組
chown(change owner):改變文件所有者
chmod:改變許可權,許可權的設置有兩種方式,使用數字或者符號來進行許可權的更改。
數字類型改變許可權:
使用數字分別代表各個許可權,其中:
r:4
w:2
x:1
owner、group、others三種身份各自有自己的rwx許可權,三個許可權的分數需要累加。例如
owner = rwx = 4 + 2 + 1=7
group = rwx = 4 + 2 + 1 = 7
others = --- = 0 + 0 + 0 = 0
那麼這個文件的許可權數字就是770
符號類型改變許可權:
使用u,g,o分別代表user、group、others三種身份的許可權,a表示所有身份
例如:
一個文件的許可權為:-rwxr-xr-x
user:有可讀、可寫、可執行的許可權
group:有可讀、可執行的許可權
others:有可讀、可執行的許可權
可以使用命令 chmod u=rwx,go=rx install.log
給install.log文件的所有用戶增加寫許可權
chmod a+w install.log
給install.log文件的所有用戶去掉可執行許可權
chmod a-x install.log
Linux下文件沒有所謂的擴展名,一個linux文件能不能被執行,與文件名沒有一點關系,而是許可權中有x,就代表這個文件可以被執行。
通常會以適當的擴展名來表示文件是什麼種類的。例如, .sh表示腳本或批處理文件, .Z、 .tar、 .tar.gz、 .zip、 .tgz都表示壓縮文件。
FHS(Filesystem Hierarchy Standard)標准用於讓用戶能夠了解到已安裝的軟體通常放置在哪個目錄下。FHS根據文件系統使用的頻繁與否和是否允許用戶隨意改動,而將目錄定義成四種交互作用的形態。分別如下:
可分享的 不可分享的
不變的:/usr(軟體放置處)、/opt(第三方軟體) /etc(配置文件)、/boot(開機與內核文件)
可變動的: /var/mail(用戶郵件信箱) /var/run(程序相關)、/var/lock(程序相關)
/var/spool/news(新聞組) /var/lock(程序相關)
可分享的:可以分享給其他系統掛載使用的目錄,所以包括可執行文件與用戶的郵件等數據,是能夠分享給網路上的其他主機掛載用的目錄。
不可分享的:自己機器上運行的設備文件或者程序有關的socket文件等,不適合分享給其他主機。
不變的:數據不經常變動。
可變動的:數據經常變動
根目錄(/):是整個系統最重要的目錄,不僅所有其他目錄是由根目錄衍生出來的,而且根目錄與開機、還原、系統修復等操作有關。根目錄所在的分區越小越好,並且應用程序所安裝的軟體最好不要與根目錄在同一個分區。
開機過程中僅有根目錄會被掛載,其他的分區會在開機完成之後才會持續進行掛載,因此根目錄下與開機過程有關的目錄就不能夠與根目錄放到不同的分區去。有如下這些目錄:
/etc:配置文件
/bin:重要執行文件
/dev:所需要的設備文件
/lib:執行文件所需的函數庫與內核所需的模塊
/sbin:重要的系統執行文件
/usr(UNIX software resource)unix操作系統軟體資源,所有系統默認的軟體都會放置在該目錄下,因此這個目錄有點類似與windows下的「C:Windows」和「C:Program files」。
/var 放置一些緩存、登錄文件以及某些軟體運行所產生的文件。
相對路徑和絕對路徑:
絕對路徑:由根目錄/開始寫起的文件名或目錄名稱。
相對路徑:相對於當前路徑
.:或者./表示當前路徑
..:或者../表示上層目錄
幾個特殊的目錄
. 代表此層目錄
.. 代表上層目錄
~ 代表「目前用戶身份」所在的主文件夾
~account 代表account這個用戶的主文件夾
幾個常見的處理目錄的命令
cd:切換目錄
剛登錄時會回到自己的主文件夾,主文件夾有一個代表符號就是~,cd ~會回到個人的主文件夾中,僅輸入cd和輸入cd ~相同。
pwd:顯示當前目錄
pwd [-p] 其中-p表示顯示當前路徑,而不是使用連接路徑。加上-p可以讓我們取得正確的目錄名稱。
mkdir:創建一個新目錄
mkdir [-mp] 目錄名稱,其中m參數表示配置文件夾的許可權。p參數表示遞歸創建所需要的所有目錄
rmdir:刪除一個空目錄
rmdir [-p] 目錄名,其中p參數表示連同上層空的目錄一起刪除。要刪除的目錄中必定不能存在其他的目錄或文件。
執行文件路徑的變數:$PATH
例如查看文件屬性的命令是ls,而ls完整的文件名是/bin/ls,為什麼我們可以在任何地方執行ls這個命令呢,這是因為環境變數PATH的幫助。當我們輸入ls的時候,系統會依照PATH的設置去每個PATH定義的目錄中查找文件名為ls的可執行文件,如果在PATH定義的目錄中含有多個文件名為ls的可執行文件,那麼先查詢到的同名命令先被執行。
默認情況下,如果用戶創建文件,則默認沒有可執行許可權(x),只有r、w這兩個選項,即默認許可權是-rw-rw-rw(666)
默認情況下,如果用戶創建目錄,則默認所有許可權均開放,即為drwx-rwx-rwx(777)
unmask的分數是指「該默認值需要拿掉的許可權」,例如上面的022表示用戶沒有被拿掉任何許可權,用戶組和其他被拿掉了寫的許可權。
如何使用unmask修改新建文件的默認許可權,直接在unmask後面加上分數就好了
比如:
···
unmask 002 就表示用戶和用戶組的讀寫許可權不被拿掉,其他會被拿掉寫的許可權
···
2.與用戶或用戶組名有關的參數
-uid n 其中n表示數字,即用戶的ID,也稱為UID
-gid n 其中n表示數字,即用戶組名的ID,也稱為GID
-user name 其中name為用戶的賬號名稱
-group name 其中name為用戶組名
-nonuser 表示尋找文件的所有者不存在在/etc/passwd中的文件
-nongroup 表示尋找文件的所有用戶組不存在於/etc/group中的文件
例如:
3.與文件許可權及名稱有關的參數
-name filename 查找文件名為filename的文件
-size [+-] SIZE 查找比size大(+)或小(-)的文件
-type TYPE表示查找文件類型為TYPE的文件
-perm mode表示查找文件許可權剛好等於mode的文件
-perm -mode表示查找文件許可權必須全部包括mode的許可權的文件
例如 查找文件許可權為-rwxr--r--的文件,即許可權744,那麼文件許可權為-rwxr-xr-x(755)的文件也會被列出來,因為-rwxr-xr-x的屬性包括了-rwxr--r--的屬性
-perm +mode表示查找文件許可權包含任一mode的許可權的文件,例如查找-rwxr-xr-x,但是另一個文件屬性包括-rw-------的文件也會被列出來,因為它有-rw屬性存在
4.其他可進行的操作
-exec command :其中command表示其他命令,-exec表示接其他命令來處理查詢的結果
-print 表示將結果列印在屏幕上
vi和vim的區別是vim是vi的高級版本
為什麼要學vim
1.所有的linux like 系統都會內置vi文本編輯器,而其他的文本編輯器不一定有
2.很多軟體的編輯介面都會主動調用vi
3.vim有程序編輯的能力,可以主動以字體顏色辨別語法的正確性,方便設計
vi的使用:
vi有三種模式:一般模式、編輯模式、命令行模式
一般模式:使用vi打開一個文件的時候就進入了一般模式,在這個模式中可以按左右鍵移動游標,可以刪除字元或刪除整行,也可以復制粘貼你的文件數據。但是不可以編輯文件。
編輯模式:在一般模式下按下「i 、I、o、O、a、A、r、R」等任何一個字母才會進入編輯模式,按esc退出編輯模式
命令行模式:在一般模式下,輸入「:、/、?」就進入了,命令行模式,在這個模式下可以進行讀取、保存文件,離開vi等操作。
編輯牧師和命令行模式之間是不可以切換的。
一般模式切換到命令行模式可用的按鈕
:w 表示將編輯的內容寫入到硬碟中
:w! 表示如果文件屬性為 只讀時,強制寫入該文件
:q表示離開vi
:q!表示如果文件有修改過,不保存強制退出,
:wq表示保存後離開
vim的用法和vi完全一樣
管道命令僅會處理standard out,對於standard error output會予以忽略
管道命令必須要能夠接收來自前一個命令的數據成為standard input繼續處理才行
選取命令:cut,grep
1.cut -d 『分隔符』 -f field
cut -c 字元范圍
-d表示分隔符
-f表示與-d分隔符一起使用,表示取分割後的第幾段
-c表示以字元為單位取出固定字元區間
以「行」為單位進行處理的選取
例如:
2.grep
grep [-acinv] [--color=auto] '查找的字元串' filename
其中
-a表示將binary文件以text文件的放肆查找數據
-c表示計算找到「查找字元串」的次數
-i表示忽略大小寫的不同
-n表示輸出行號
-v表示反向選擇,即顯示出沒有『查找字元串』內容的那一行。
--color=auto表示將找到的關鍵字部分加上顏色
例如:
首先學習一下grep命令的一些高級參數
grep [-A] [-B] [--color=auto] 『搜索字元串』 filename
其中:
-A :後面可加數字,表示after的意思,除了列出該行外,後續的n行也列出來。
-B :後面可加數字,表示before的意思,除了列出該行外,前面的n行也列出來。
--color=auto表示將選取的數據添加顏色
grep是一個很常用的命令,grep在數據中查找一個字元串時,是以整行為單位來進行數據的選取的。假如一個文件有10行,其中有兩行具有你查找的字元串,則將那兩行顯示在屏幕上,其他的丟棄。
例如
1.查找特定的字元
2.利用中括弧[]來查找集合字元
[]裡面不論有幾個字元,它都只代表某「一個」字元
3.行首與行尾字元^$
^ 出現在[]之外表示定位在首行,^ 出現在[]中表示方向選擇
4.任意一個字元.與重復字元*
.(小數點):代表一定有一個任意字元
*(星號):代表重復前一個字元0到無窮次的意思
例如:
5.限定連續RE字元范圍{}
因為符號{}在shell中是有特殊意義的,因此必須要使用轉義字元來讓它失去特殊意義才行。
例如
^word 表示待查找的字元word在首行
word$ 表示待查找的字元在結尾
.(小數點)表示一定有一個任意字元的字元
表示轉義字元,將特殊符號的特殊意義去掉
*表示重復零個或無窮多個前一個字元
[list]表示從字元集合list中找出想太選取的一個字元
[n1-n2]表示從字元集中查找想要選取的字元范圍
[^n1-n2]表示從字元集中查找不要的字元串或范圍
{n,m}表示連續n到m個前一個字元,若為{n}表示連續n個前一個字元,{n,}表示連續n個以上前一個字元。
sed命令可以將數據進行替換、刪除、新增、選取特定行等
sed [-nefr] [動作]
其中
-n表示使用安靜模式,在一般sed用法中,所有來自STDIN的數據一般都會被列出在屏幕上,但如果加上-n參數後,則只有經過sed特殊命令處理的那一行才會被列出來。
-e表示直接在命令行模式上進行sed的動作編輯
-f表示直接將sed的動作寫在一個文件內
-r表示sed的動作支持的是擴展型的正則表達式,默認是基礎型的正則表達式
-i表示直接修改讀取的內容,而不是由屏幕輸出
動作說明:
[n1[,n2]] function
n1,n2:不一定會存在,一般代表選擇進行動作的行
function 有下面的參數
a表示新增,a後面可以接字元串,而這些字元串會在新的一行出現(目前的下一行)
c表示替換,c的後面可以接字元串,這些字元串可以替換n1,n2之間的行
d表示刪除
i表示插入,i後買呢可以接字元串,而這些字元串會在新的一行出現(目前的上一行)
p表示列印,將某個選擇的數據列印出來,通常會和參數-n一起運行
s表示替換,可以直接進行替換工作,sed 『s/要被替換的字元串/新的字元串/g'
例如
awk是非常棒的數據處理工具。
awk '條件類型1{動作1} 條件類型2{動作2} 條件類型3{動作3}....' filename
awk主要是處理每一行的欄位內的數據,而默認的欄位的分隔符是空格鍵或[tab]鍵。
例如
awk內置變數有:
例如:
awk的邏輯運算符
例如:
我們發現上面會輸出第一行奇怪的數據,是因為當讀入第一行的時候,變數之間還是以空格鍵進行分隔的,所有,我們雖然定義了FS=":",但是卻在第二行後開始生效,我們可以利用BEGIN這個關鍵字。
使用awk進行計算統計
例如
格式輸出中,在printf的格式設置中,務必加上
,才能進行分行
在awk中變數可以直接使用,不用加上$符號
crontab進行工作調度
crontab [-u username] [-l | -e | -r]
-u表示只有root才能進行這個任務
-e表示編輯crontab的工作內容
-l表示查閱crontab的工作內容
-r表示刪除crontab的所有工作內容
例如
其中由6個欄位組成
分別表示的意義是:
分鍾 小時 日期 月份 周 命令
0-59 0-23 1-31 1-12 0-7 命令
其中周的0和7都表示星期日
表示任意時刻
,(逗號)表示分隔時段的意思,例如0 3,6 * * * commond,表示在3和6時執行
-(減號)表示一段時間范圍,例如20 8-12 * * * commond,表示8到12時之間每小時的20分執行。
/n(斜線)表示每隔n單位間隔的意思,例如 /5 * * * * commond,表示每隔5分鍾執行一次。
執行crontab -e這個crontab其實是/usr/bin/crontab這個執行文件。
scp -r 源文件路徑 root@ip:目標文件路徑
3. linux的grep查詢命令
grep默認只能識別基本的正則表達式,如果需要高級的,需要這樣:
grep -E 'A.*B|B.*A' filename
可以找到符合要求的,或者使用awk:
awk '/A/&&/B/' filename
4. linux 輸入長命令行 會無緣無故的回到行開始,本來應該在下一行繼續的!
建議你把長的命令行切成幾段,分行寫。在哪裡切斷,問題不大,關鍵是要在切斷處,加上「backslash」符號,即\
5. linux 只安裝openbox 怎麼進入桌面
Openbox
默認的自動啟動
腳本文件
位於:
/etc/xdg/openbox/autostart.sh
你可以在建立自己的自動啟動腳本時參考
使用下列命令來建立一個自己的
autostart.sh
文件:
vim
~/.config/openbox/autostart.sh
比如,要開機即載入面板程序
Pypanel,可以加入下面的內容:
pypanel
&
如果要加入多個程序,則分行寫即可。
6. Linux基本命令-2021-0717
[root@localhost ~]# ls -l
總用量 44
-rw------. 1 ---- root ---- root --------1207 1 月14 18:18 anaconda-ks.cfg
許可權--引用計數 所有者 -- 所屬組--- 大小-- 文件修改時間 文件名
ls [選項] [文件名或目錄名]
選項:
-a :顯示所有文件
--color=when:支持顏色輸出
-d :顯示目錄信息,而不是目錄下的文件
-h :人性化顯示﹐按照我們習慣的顯示文件大小
-i :顯示文件的i節點號
-l:長格式顯示
pwd 命令是查詢當前所在的目錄的絕對路徑
選項:
-L (默認值)列印環境變數"$PWD"的值,可能為符號鏈接。
-P 列印當前工作目錄的物理位置。
mkdir 是創建目錄的命令
選項:
-Z:設置安全上下文,當使用SELinux時有效;
-m或--mode:建立目錄的同時設置目錄的許可權;
-p或--parents:若所要建立目錄的上層目錄目前尚未建立,則會一並建立上層目錄;
rmdir 是刪除空目錄的命令
-p: 遞歸刪除目錄
touch 是 創建空文件或修改文件的時間戳
[root@localhost ~]# touch [選項] 文件名
-a:或--time=atime或--time=access或--time=use 只更改存取時間;
-c:或--no-create 不建立任何文件;
-d:<時間日期> 使用指定的日期時間,而非現在的時間;
-f:此參數將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題;
-m:或--time=mtime或--time=modify 只更該變動時間;
-r:<參考文件或目錄> 把指定文件或目錄的日期時間,統統設成和參考文件或目錄的日期時間相同;
-t:<日期時間> 使用指定的日期時間,而非現在的時間;
--help:在線幫助;
--version:顯示版本信息。
stat 是查看文件詳細信息的命令,而且可以看到文件的這三個時間戳
選項:
-L:支持符號連接;
-f:顯示文件系統狀態而非文件狀態;
-t:以簡潔方式輸出信息;
cat 命令用來查看文件內容
選項:
-A: 相當於-vET 選項的整合,用於列出所有隱藏符號
-E: 列出每行結尾的回車符$
-n: 顯示行號
-T: 把 Tab 鍵用^I顯示出來
-v: 列出特殊字元
more 是分屏顯示文件的命令
less 是分行顯示文件的命令
用less命令顯示文件時,用PageUp鍵向上翻頁,用PageDown鍵向下翻頁。要退出less程序,應按Q鍵。
選項:
-e:文件內容顯示完畢後,自動退出;
-f:強制顯示文件;
-g:不加亮顯示搜索到的所有關鍵詞,僅顯示當前顯示的關鍵字,以提高顯示速度;
-l:搜索時忽略大小寫的差異;
-N:每一行行首顯示行號;
-s:將連續多個空行壓縮成一行顯示;
-S:在單行顯示較長的內容,而不換行顯示;
-x<數字>:將TAB字元顯示為指定個數的空格字元。
head 是用來顯示文件開頭的命令
選項:
-c --bytes=[-]NUM 顯示前NUM位元組;如果NUM前有"-",那麼會列印除了文件末尾的NUM位元組以外的其他內容。
-n, --lines=[-]NUM 顯示前NUM行而不是默認的10行;如果NUM前有"-",那麼會列印除了文件末尾的NUM行以外的其他行。
-q, --quiet, --silent 不列印文件名行。
-v, --verbose 總是列印文件名行。
-z, --zero-terminated 行終止符為NUL而不是換行符。
tail 是用來顯示文件末尾的命令
選項:
-c, --bytes=NUM 輸出文件尾部的NUM(NUM為整數)個位元組內容。
-f, --follow[={name|descript}] 顯示文件最新追加的內容。「name」表示以文件名的方式監視文件的變化。
-F 與 「--follow=name --retry」 功能相同。
-n, --line=NUM 輸出文件的尾部NUM(NUM位數字)行內容。
--pid=<進程號> 與「-f」選項連用,當指定的進程號的進程終止後,自動退出tail命令。
-q, --quiet, --silent 當有多個文件參數時,不輸出各個文件名。
--retry 即是在tail命令啟動時,文件不可訪問或者文件稍後變得不可訪問,都始終嘗試打開文件。使用此選項時需要與選項「--follow=name」連用。
-s, --sleep-interal=<秒數> 與「-f」選項連用,指定監視文件變化時間隔的秒數。
-v, --verbose 當有多個文件參數時,總是輸出各個文件名。
ln 是用來為文件創建鏈接的命令
[root@localhost ~]# ln [選項] 源文件 目標文件
選項:
-s: 建立軟鏈接文件。如果不加「-s」選項,則建立硬鏈接文件
-f: 強制。如果目標文件已經存在,則刪除目標文件後再建立鏈接文件
-d, -F, --directory 創建指向目錄的硬鏈接(只適用於超級用戶)
-f, --force 強行刪除任何已存在的目標文件
-i, --interactive 覆蓋既有文件之前先詢問用戶
-L, --logical 取消引用作為軟鏈接的目標
-n, --no-dereference 把軟鏈接的目的目錄視為一般文件
-P, --physical 直接將硬鏈接到軟鏈接
-r, --relative 創建相對於鏈接位置的軟鏈接
-s, --symbolic 對源文件建立軟鏈接
硬鏈接特徵:
源文件和硬鏈接文件擁有相同的 Inode 和 Block
修改任意一個文件,另一個都改變
刪除任意一個文件,另一個都能使用
硬鏈接標記不清,很難確認硬鏈接文件位置,不建議使用
硬鏈接不能鏈接目錄
硬鏈接不能跨分區
軟鏈接特徵:
軟鏈接和源文件擁有不同的 Inode 和 Block
兩個文件修改任意一個,另一個都改變
刪除軟鏈接,源文件不受影響;刪除源文件,軟鏈接不能使用
軟鏈接沒有實際數據,只保存源文件的 Inode,不論源文件多大,軟鏈接大小不變
軟鏈接的許可權是最大許可權 lrwxrwxrwx.,但是由於沒有實際數據,最終訪問時需要參考源文
件許可權
軟鏈接可以鏈接目錄
軟鏈接可以跨分區
軟鏈接特徵明顯,建議使用軟連接
rm 是強大的刪除命令,不僅可以刪除文件,也可以刪除目錄
[root@localhost ~]# rm [選項] 文件或目錄
選項:
d:直接把欲刪除的目錄的硬連接數據刪除成0,刪除該目錄;
-f:強制刪除文件或目錄;
-i:刪除已有文件或目錄之前先詢問用戶;
-r:遞歸處理,將指定目錄下的所有文件與子目錄一並處理;
--preserve-root:不對根目錄進行遞歸操作;
-v:顯示指令的詳細執行過程。
cp 是文件或目錄用於復制的命令
[root@localhost ~]# cp [選項] 源文件 目標文件
選項:
-a:此參數的效果和同時指定"-dpR"參數相同;
-d:當復制軟鏈接時,把目標文件或目錄也建立為軟鏈接,並指向與源文件或目錄連接的原始文件或目錄;
-f:強行復制文件或目錄,不論目標文件或目錄是否已存在;
-i:覆蓋既有文件之前先詢問用戶;
-l:對源文件建立硬連接,而非復制文件;
-p:保留源文件或目錄的屬性;
-r:遞歸處理,將指定目錄下的所有文件與子目錄一並處理;
-s:對源文件建立軟鏈接,而非復制文件;
-u:使用這項參數後只會在源文件的更改時間較目標文件更新時或是名稱相互對應的目標文件並不存在時,才復制文件;
-S:在備份文件時,用指定的後綴「SUFFIX」代替文件的默認後綴;
-b:覆蓋已存在的文件目標前將目標文件備份;
-v:詳細顯示命令執行的操作。
mv 是用來對文件或目錄重新命名,或者將文件移動至其他目錄
[root@localhost ~]# mv [選項] 源文件 目標文件
選項:
-b:當文件存在時,覆蓋前,為其創建一個備份;
-f:若目標文件或目錄與現有的文件或目錄重復,則直接覆蓋現有的文件或目錄;
-i:互動式操作,覆蓋前先行詢問用戶,如果源文件與目標文件或目標目錄中的文件同名,則詢問用戶是否覆蓋目標文件。用戶輸入」y」,表示將覆蓋目標文件;輸入」n」,表示取消對源文件的移動。這樣可以避免誤將文件覆蓋。
--strip-trailing-slashes:刪除源文件中的斜杠「 / 」;
-S<後綴>:為備份文件指定後綴,而不使用默認的後綴;
--target-directory=<目錄>:指定源文件要移動到目標目錄;
-u:當源文件比目標文件新或者目標文件不存在時,才執行移動操作。
[root@localhost ~]# ls -l install.log
-rw-r--r--. 1 root root 24772 1 月 14 18:17 install.log
第一列的許可權位如果不計算最後的「.」,則共有 10 位。
第 2~4 位代表文件所有者的許可權。
chmod 用來變更文件或目錄的許可權
[root@localhost ~]# chmod [選項] 許可權模式 文件名
選項:
-c, --changes:當文件的許可權更改時輸出操作信息。
--no-preserve-root:不將'/'特殊化處理,默認選項。
--preserve-root:不能在根目錄下遞歸操作。
-f, --silent, --quiet:抑制多數錯誤消息的輸出。
-v, --verbose:無論文件是否更改了許可權,一律輸出操作信息。
--reference=RFILE:使用參考文件或參考目錄RFILE的許可權來設置目標文件或目錄的許可權。
-R, --recursive:對目錄以及目錄下的文件遞歸執行更改許可權操作。
用戶身份
首先,讀、寫、執行許可權對文件和目錄的作用是不同的。
目錄的可用許可權其實只有以下幾個。
chown 是修改文件和目錄的所有者和所屬組的命令
[root@localhost ~]# chown [選項] 所有者:所屬組 文件或目錄
選項:
-c或——changes:效果類似「-v」參數,但僅回報更改的部分;
-f或--quite或——silent:不顯示錯誤信息;
-h或--no-dereference:只對軟鏈接的文件作修改,而不更改其他任何相關文件;
-R或——recursive:遞歸處理,將指定目錄下的所有文件及子目錄一並處理;
-v或——version:顯示指令執行過程;
--reference=<參考文件或目錄>:把指定文件或目錄的擁有者與所屬群組全部設成和參考文件或目錄的擁有者與所屬群組相同;
普通用戶不能修改文件的所有者,哪怕自己是這個文件的所有者也不行
普通用戶可以修改所有者是自己的文件的許可權
chgrp 是修改文件和目錄的所屬組的命令
[root@phato ~]# chgrp [選項] 所屬組 文件或目錄
-R 遞歸式地改變指定目錄及其下的所有子目錄和文件的所屬的組
-c或——changes:效果類似「-v」參數,但僅回報更改的部分;
-f或--quiet或——silent:不顯示錯誤信息;
-h或--no-dereference:只對符號連接的文件作修改,而不是該其他任何相關文件;
-H如果命令行參數是一個通到目錄的軟鏈接,則遍歷軟鏈接
-R或——recursive:遞歸處理,將指令目錄下的所有文件及子目錄一並處理;
-L:遍歷每一個遇到的通到目錄的軟鏈接
-P:不遍歷任何符號鏈接(默認)
-v或——verbose:顯示指令執行過程;
--reference=<參考文件或目錄>:把指定文件或目錄的所屬群組全部設成和參考文件或目錄的所屬群組相同;
umask 是顯示或設置創建文件的許可權掩碼。我們需要先了解一下新建文件和目錄的默認最大許可權。
我們在這里按照許可權字母來講解 umask 許可權的計算方法。我們就按照默認的 umask 值是 022來分別計算一下新建文件和目錄的默認許可權吧。
7. Linux系統通配符與ls命令的功能及用法
文件通配符
* 匹配零個或多個字元
? 匹配任何單個字元
~ 當前用戶家目錄
~mage 用戶mage家目錄
~+ 當前工作目錄
~- 前一個工作目錄
[0-9] 匹配數字范圍
[a-z]:字母(或的關系)就是表示中括弧中的某一個字元
[A-Z]:字母
[a-c]:a A b B c
[A-C]:A b B c C,也就是[]在裡面匹配字母時是以aAbB...這樣排序的
[wang] 匹配列表中的任何的一個字元
[^wang] 匹配列表中的所有字元以外的字元
{}花括弧用來匹配一組用逗號分隔的字元串中的任一個。
左花括弧之前的所有字元稱為前文(preamble),右花括弧之後的所有字元稱為後文(preamble)。
前文和後文都是可選的。花括弧中不能包含不加引號的空白符
預定義的字元類:man 7 glob(通配符)
[:digit:]:任意數字,相當於0-9
[:lower:]:任意小寫字母[:lower:] 這個只相當於a-z,表示的時候必須要在加上中括弧
[:upper:]: 任意大寫字母
[:alpha:]: 任意大小寫字母
[:alnum:]:任意數字或字母
[:blank:]:水平空白字元
[:space:]:水平或垂直空白字元
[:punct:]:標點符號
[:print:]:可列印字元
[:cntrl:]:控制(非列印)字元
[:graph:]:圖形字元
[:xdigit:]:十六進制字元
ls命令的功能:
列出當前目錄的內容或指定目錄
ls命令的用法:
ls [options] [files_or_dirs]
示例:
ls -a 包含隱藏文件
ls -l 顯示額外的信息
ls -r 倒轉排序或者可以說是逆序排列
ls -R 目錄遞歸通過(遞歸會進入到子目錄)
ls -ld 目錄和符號鏈接信息
ls -1 文件分行顯示(列顯示)
ls –S 按從大到小排序(按文件的大小排序)
ls –t 按mtime排序(按文件的修改時間排序)
ls –u 配合-t選項,顯示並按atime從新到舊排序
ls –U 按目錄存放順序顯示(以創建文件的次序進行顯示)
ls –X 按文件後綴排序
ls -d 列出目錄本身並不顯示內容
ls -h 單位換算
ls -I --ignore(忽略)=PATTERN(模式)按著規定的模式去隱藏不進行顯示
實例:
1、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現至少一位數
字的文件或目錄
ls -d /var/l*[0-9]*[[:lower:]]
2、顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的文件或目錄
ls -d /etc/[0-9]*[^0-9]
3、顯示/etc/目錄下以非字母開頭,後面跟了一個字母及其它任意長度任意字元
的文件或目錄
ls -d /etc/[^[:alpha:]][[:alpha:]]*
4、顯示/etc/目錄下所有以rc開頭,並後面是0-6之間的數字,其它為任意字元
的文件或目錄
ls -d /etc/rc[0-6]*
5、顯示/etc目錄下,所有以.d結尾的文件或目錄
ls -d /etc/*.d
6、顯示/etc目錄下,所有.conf結尾,且以m,n,r,p開頭的文件或目錄
ls -d /etc/[mnrp]*.conf
7、只顯示/root下的隱藏文件和目錄
ls -d /root/.*
ls -aI "[^.]*" 當前目錄為/root
l. ls -d .* --color=auto 當前目錄為/root
8、只顯示/etc下的非隱藏目錄
ls -d /etc/*/
8. 怎樣在Linux中輸入命令
看你是哪個Linux桌面版本了,一共就有兩條命令,首先按你鍵盤上的Alt
+
F2打開運行框,輸入gnome-terminal,如果沒有執行成功的話,可以改輸入terminal,彈出來的黑色或白色的框框就是終端了.
9. 怎樣解決在Linux下寫的文本到了Windows xp下記事本打開後所有內容擠在一行的現象
這個是 Unix 和 Windows 的換行符表示不一樣導致的。
Windows 下面用 ultraedit 就行了,記事本不好用的。
或者 Linux 下面找一個 unix2dos (或者類似的名字吧,很久沒用了)。這個程序可以把 unix 文本文件格式轉換為 windows 的文本格式。
其實這種 UNIX 換行格式,貌似*只有*記事本不支持,寫字板、word、IE 貌似都是支持的。
10. Linux中的qt編程如何分行提取txt文檔中的數據
QFile file("in.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
process_line(line);
}
如果要指定某行 加個if判斷就行了