4.命令歷史
history:查看命令歷史
-c:清空命令歷史
-d:OFFSET[n]:刪除指定位置的命令
-w:保存命令歷史至歷史文件
命令歷史的使用技巧:
!n:執行命令歷史中的第n條命令
!-n:執行命令歷史中倒數第n條命令
!!:執行上一條命令
!string:執行命令歷史中最近一個以指定字符串開頭的命令
!$:引用前一個命令的最後一個參數
[root@Kevin ~]# nano /tmp/inittab
[root@Kevin ~]# nano !$
nano /tmp/inittab
Esc,.:先按Esc,放開,再按點,一樣引用前一個命令的最後一個參數
二,基本文件管理
1.ls
ls是"List"的意思,列出指定路徑下的文件。
ls -l:長格式顯示
-h:作單位換算,將byte換算成K,M,G等.
-a:列出全部文件,包括以.開頭的隱藏文件
-d:列出目錄自身屬性
-i:index node,inode每個文件都有一個數字標識符,就是inode.也能夠稱爲索引節點號,-i 就是顯示索引節點號.
-t:以時間前後順序顯示結果
[root@Kevin ~]# ls -l
drwxr-xr-x. 2 root root 4096 Nov 4 23:10 bash
在ls -l命令所列出的文件屬性中,各字段含義以下:
-:普通文件(f)
d:目錄文件
b:塊設備文件(block)
c:字符設備文件(character)
l:符號連接文件(symbolic link file)
p:命令管道文件:(pipe)
s:套接字文件(socket)
文件權限:9位,每3位一組,每一組:rwx(讀[read],寫[write],執行[execute],)
表示有多少個文件名鏈接到此節點(inode),即鏈接數
文件的屬主(owner)
文件的屬組(group)
文件大小(size)
,單位是字節(byte)
文件名
2.mkdir
mkdir是"make directory"的意思,新建目錄
[root@Kevin ~]#mkdir aming ##建立一個名文aming的目錄
[root@Kevin ~]#mkdir a b c ##依次在當前目錄建立a b c三個同級目錄
[root@Kevin ~]#mkdir -p aa/bb/cc ##遞歸建立aa bb cc目錄,aa目錄包含bb,bb目錄包含cc
3.rmdir
rmdir是"remove directory"的意思,刪除目錄,用法同上,-p選項略有不一樣
[root@Kevin ~]#rmdir -p aa/bb/cc ##會遞歸刪除目錄aa bb cc,可是前提是目錄都爲空,若是不爲空就沒法刪除。
4.rm
rm是"remove"的意思,意爲刪除
rm -r:遞歸刪除
-f:強制刪除,不提示
-rf:遞歸併強制刪除,不提示
5.cp cp
cp是"copy"的意思,意爲複製
# cp -r aaa/bbb . ##將aaa下的bbb目錄複製到當前目錄,加上
-r參數能夠複製目錄
# ls
2.txt aaa bbb
# cp aaa/1.txt ./2.txt ##將1.txt複製到當前目錄並重命名爲2.txt
# ls
2.txt aaa
6.mv
mv是"move"的意思,意爲移動,至關於windows中的剪切
[root@Kevin aa]# mv aaa/bbb . ##將aaa目錄下的bbb目錄移動到當前目錄下
[root@Kevin aa]# ls
1.txt 2.txt aaa bbb
[root@Kevin aa]# mv 2.txt 3.txt ##將文件2.txt重命名爲3.txt
[root@Kevin aa]# ls
1.txt 3.txt aaa bbb
7.touch
#touch a ##建立文件a,若是文件a已存在,則會更改文檔的日期時間,包括存取時間和更改時間。固然對目錄也有效。
三,查看文本經常使用命令
查看文本經常使用的命令有cat、tac、more、less、head、tail、od等
- cat:由第一行開始顯示文件內容。
- tac:從最後一行開始顯示,能夠看出tac是cat的。
- more:一頁一頁地顯示文件內容。
- less:與more相似,可是比more更好的是,它能夠往前翻頁!
- head:只看頭幾行。
- tail:只看結尾幾行。
- od:以二進制的方式讀取文件內容!
1.cat:concatenate,鏈接並顯示文本內容。
]# cat -n /etc/issue ##顯示行號,跟內容無關,只是對顯示內容編號
1 CentOS release 6.4 (Final)
2 Kernel \r on an \m
3
對於Linux系統而言,全部文本文件行結束符是$,而windows的結束符是$+Enter.
]# cat -E /etc/issue ##顯示換行符
CentOS release 6.4 (Final)$
Kernel \r on an \m$
$
- 這裏若是直接輸入cat,沒接參數的話,從標準輸入讀取內容,並顯示到標準輸出,須要用Ctrl+C中斷。
- 若是輸入命令,輸入一半不想執行,也能夠用Ctrl+C中斷,而不用刪回從新輸入。
- 若是在終端中輸入的話,想查看輸出的上下文,能夠按Shift+page up/page down,不過若是文件比較大的話,由於內存控制,會顯示不完。
2.tac:反向顯示文本。
[root@Kevin ~]# tac /etc/issue
Kernel \r on an \m
CentOS release 6.4 (Final)
- 與cat相反,tac是由最後一行到第一行反向在屏幕上顯示出來的。
3.more:分頁顯示文本,向後翻。
[root@Kevin ~]# more /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6f
#
# For more information about this file, see the man pages man(1)
# and man.conf(5).
#
# This file is read by man to configure the default manpath (also used
--More--(5%)
- 空格鍵(space):表明向下翻頁;
- Enter:表明向下滾動一行;
- /字符串:表明在這個顯示內容當中,向下查詢"字符串"這個關鍵字;
- :f:馬上顯示出文件名以及目前顯示的行數;
- q:表明馬上離開more,再也不顯示該文件內容;
- b或者Ctrl+b:表明往回翻頁,不
4.less:分頁顯示文本;翻到最後不會退出,要按q退出。
- PageDown:向下翻動一頁;也可使用空格,space;也可使用f
- PageUp:向上翻動一頁;也可使用b或Ctrl+b
- /字符串:向下查詢"字符串"的功能;
- ?字符串:向上查詢"字符串"的功能;
- n:重複前一個查詢(與/或?有關);
- N:反向重複前一個查詢(與/或?有關);
- q:離開
- j:向下滾動一行
- k:向上滾動一行
- shift+G,最下面
- shift+g,最上面
5.head:查看前n行(默認n=10)
]# head /etc/inittab ##默認顯示前10行
]# head -n 20 /etc/inittab ##顯示前20行,也能夠直接head -20 /etc/inittab
]# head -n -100 /etc/inittab ##後面100行不顯示,只顯示前面的內容。
6.tail:顯示後n行(默認n=10)
]# tail -f /var/log/messages ##持續監測messages文件,不退出,等待顯示後續追加至此文件的新內容,Ctrl+C結束
Aug 18 19:56:10 Kevin NetworkManager[1367]: <info> (eth0): device state change: 2 -> 3 (reason 40)
Aug 18 19:56:10 Kevin kernel: e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
Aug 19 03:52:34 Kevin kernel: pickup[4695]: segfault at 0 ip (null) sp bfeb1aac error 14 in libm-2.12.so[12a000+28000]
Aug 19 04:23:53 Kevin kernel: e1000: eth0 NIC Link is Down
Aug 19 04:23:53 Kevin NetworkManager[1367]: <info> (eth0): carrier now OFF (device state 3)
Aug 19 04:23:53 Kevin NetworkManager[1367]: <info> (eth0): device state change: 3 -> 2 (reason 40)
Aug 19 04:23:53 Kevin NetworkManager[1367]: <info> (eth0): deactivating device (reason: 40).
Aug 19 04:23:59 Kevin kernel: e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
Aug 19 04:23:59 Kevin NetworkManager[1367]: <info> (eth0): carrier now ON (device state 2)
Aug 19 04:23:59 Kevin NetworkManager[1367]: <info> (eth0): device state change: 2 -> 3 (reason 40)
]# tail -n +100 /etc/man.config ##若是不知道有幾行,想列出100行之後的內容
四,文本處理
文本處理經常使用命令:cut、join、sed、awk
1.cut:
-d:指定字段分隔符,默認是空格
-f:指定要顯示的字段
[root@Kevin ~]# cut -d: -f1,7 /etc/passwd ##顯示以:分割的第一個和第七個字段
root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin
lp:/sbin/nologin
]# cut -d: -f1-3 /etc/passwd ##顯示第一個字段到第三個字段
]# cut -d" " -f1-3 a.txt ##以空格爲分隔符,顯示第一個字段到第三個字段
五,文本排序
1.sort:默認按ASCII表排序,其中-f參數忽略大小寫
~]# sort sort.test ##按ASCII表排序
022
21234
213
232
~]# sort -n sort.test ##按數值大小排序
022
34
34
213
~]# sort -n -r sort.test ##按數值大小,而且降序排序
32423
21234
4546
3435
~]# sort -t: -k3 /etc/passwd ##-t:指定字段分隔符,-k指定以哪一個字段爲準
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
~]# sort -n -u sort.test ##其中,-u指unique,相同項只顯示一次,即去掉重複項
022
34
213
232
3435
2.uniq:就是unique的意思
~]# sort 1.txt
022
21234
213
232
~]# uniq sort.test ##未作排序,重複項不顯示,可是隻限於相鄰的重複項
32423
213
~]# uniq -c sort.test ## 顯示文件中行重複的次數
~]# uniq -d sort.test ## 只顯示重複的行
六,文本統計
1.wc(word count)
~]# wc /etc/fstab ##這裏意思是15行,78個單詞,779個字節
15 78 779 /etc/fstab
~]# wc -l /etc/fstab ##顯示行數
15 /etc/fstab
~]# wc -w /etc/fstab ##顯示單詞數
78 /etc/fstab
~]# wc -c /etc/fstab ##顯示字節數
779 /etc/fstab
~]# wc -m /etc/fstab ##顯示字符數,其實這裏字節就是字符
779 /etc/fstab
~]# wc -L /etc/fstab ##最長的一行包含93個字符
93 /etc/fstab
七,字符處理命令
1.tr:轉換或刪除字符, tr[option]... SET1[SET2]
[root@Kevin ~]# tr 'abc' 'ABc' ##轉換字符abc爲ABc
abc
ABc
account
Account
begin
Begin
[root@Kevin ~]# tr 'a-z' 'A-Z' < /etc/passwd ##將passwd文件中,a到z的全部字母轉換成大寫
[root@Kevin ~]# tr -d 'ab' ##刪除出如今字符集中的ab,若是直接tr -d就是刪除字符集中全部字符
aaaaaaabvc
vc
bfdsffa
fdsff
ab
aaaaaaabbbbc
c
split 切割大文件
[root@kevin ~]#split -b70k 2.txt ##將2.txt文件按大小分割成N個文件,每一個文件72k,默認命名爲xaa xab xac....
[root@kevin ~]#split -l500 2.txt kevin ##將2.txt文件按行切割成N個文件,每一個文件500行,命名爲kevinaa kevinab kevinac...
文件查找:
locate:
locate 數據庫由另外一個 叫作 updatedb 的程序建立。
這個數據庫不是持續更新的,若是新建立的文件去用locate查找,是找不到的,由於沒有更新updatedb數據庫,這時候需用手動更新一下.
非實時,模糊匹配,查找是根據全系統文件數據庫進行的;
updatedb:
手動生成文件數據庫
[root@www ~]# locate passwd |head -5 ##依據updatedb,能夠手動更新updatedb
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/lib64/security/pam_passwdqc.so
[root@www ~]# updatedb ##手動更新updatedb,updatedb並非實時更新的
默認天天凌晨4點自動更新.
1.文件的操做命令:
ls -ld 目錄
du -sh 查看目錄和文件大小
touch 建立一個文件
mkdir ---mkdir aaa/ppp/ccc -p 遞歸建立目錄
cat 命令: -n 查看文件時,把行號也顯示到屏幕上
-A 顯示全部東西出來,包括特殊字符
tac命令:用來把文件的內容顯示在屏幕上,只不過是先顯示最後一行,而後是倒數第二行,最後顯示的是第一
行。倒敘顯示
more 也是用來查看一個文件的內容,後面直接跟文件名,當文件內容太多,一屏幕不能佔下,而你用 ‘cat’ 確定是看不前面的內容的,那麼使用 ‘more’ 就能夠解決這個問題了。當看完一屏後按空格鍵繼續看下一屏。但看完全部內容後就會退出。若是你想提早退出,只需按 ‘q’ 鍵便可。
less做用跟more同樣,後面直接跟文件名,但比more好在能夠上翻,下翻。空格鍵一樣能夠翻頁,而按 ‘j’ 鍵能夠向下移動(按一下就向下移動一行),按 ‘k’ 鍵向上移動。在使用more和less查看某個文件時,你能夠按一下 ‘/’ 鍵,而後輸入一個word回車,這樣就能夠查找這個word了。若是是多個該word能夠按 ‘n’ 鍵顯示下一個。另外你也能夠不按 ‘/’ 而是按 ‘?’ 後邊一樣跟word來搜索這個word,惟一不一樣的是, ‘/’ 是在當前行向下搜索,而 ‘?’ 是在當前行向上搜索。
head命令:若是加 -n 選項則顯示文件前n行。
tail命令:加-n 選項則顯示文件最後n行。
加-f動態顯示文件最後十行。
cp -r 表示拷貝目錄(拷貝目錄必須加-r) cp 來源文件 目標文件
test1 拷貝成test2 cp test1 test2
etho abc >filename # >符號表示重定向 把前面命令輸出的類容寫入後面的文件中
>>追加寫入 >刪除寫入
(一個 ‘>>’ 這個符號跟前面介紹的 ‘>’ 的做用都是重定向,即把前面輸出的東西輸入到後邊的文件中,只是 ‘>>’ 是追加的意思,而用 ‘>’ 若是文件中有內容則會刪除文件中內容,而 ‘>>’ 則不會。)
cp -d 鏈接軟鏈接硬鏈接 軟鏈接跟window快捷方式類是
mv ---mv /home/yuananqin /home/piao 把yuananqin移動到piao中
mv /home/yuananqin/123.txt
mv 來源文件 目標文件
若是目標文件不存在既把:來源文件更名成目標文件名稱
cat -n filename //顯示幾行
cat -A filename//顯示全部東西包括特殊符號
rmdir 只能刪除目錄不能刪除文件
rm -r跟rmdir同樣 -rf不須要提示才加f
/bin/rm -r aaa 使用絕對路徑 which rm .. alias
環境變量 PATH
which 用來查找某個命令的絕對路徑
[root@localhost ~]# which rmdir
/bin/rmdir
host ~]# which rm alias rm='
[root@loca
lrm -i'
/bin/rm
h ls alias ls='ls --color=au
[root@localhost ~]# whi
cto'
/bin/ls
rm和ls 是兩個特殊命令,使用alias命令作了別名 。咱們使用rm 實際使用的事"rm -i"
ls實際使用的事「ls --color=auto」‘alias’ 能夠設置命令的別名也能夠設置文件的別名
[root@localhost ~]# echo $PATH//etho表示打印的意思$表示後面鏈接的是變量
設置環境變量
[root@localhost ~]# PATH=$PATH:/root
修改Linux的PATH方法有三(添加用戶的路徑到PATH):
方法一: 直接在命令行中輸入:#PATH=$PATH:/etc/apache/bin。這種方法只對當前會話有效,也就是說每當登出或註銷系統後,PATH設置就會恢復原有設置。
方法二: 修改/etc/profile文件。在/etc/profile文件的適當位置添加PATH=$PATH:/etc/apache/bin (注意:=即等號兩邊不能有任何空格)。這種方法最好,除非你手動強制修改PATH的值。不然將不會被改變。
方法三: 修改用戶目錄下的.bash_profile:vi ~/.bash_profile,把用戶想添加的路徑添加到PATH後面。這種方法只針對用戶起做用。 注意:若採用修改profile文件的方法改變PATH,則必須從新登陸才能生效,如下方法可簡化工做: 若是修改了/etc/profile,那麼編輯結束後執行source profile 或執行點命令:./profile,PATH的值就會當即生效了。這個方法的原理是再執行一次/etc/profile shell腳本,注意若是用sh /etc/profile是不行的,由於sh是在子shell進程中執行的,即便PATH改變了也不會反映到當前環境中,可是source是在當前shell進程中執行的,因此咱們能看到PATH的改變。
linux文件屬性和目錄管理:
用ls –l 查看當前目錄下的文件時,共顯示了9列內容(用空格劃分列)node
第1列,包含有該文件類型和所屬主、所屬組以及其餘用戶對該文件的權限。共11位有的文件是10位,沒有最後面的一位。 其中第一位用來描述該文件的類型。linux
‘d’ 表示該文件爲目錄;ios
‘-‘ 表示該文件爲普通文件;shell
‘l’ 表示該文件爲連接文件(linux file),上邊提到的軟連接即爲該類型;數據庫
‘b’ 表示該文件爲塊設備,好比 /dev/sda 就是這樣的文件。apache
‘c’ 表示該文件爲串行端口設備,例如鍵盤、鼠標。vim
‘s’ 表示該文件爲套接字文件(socket),用於進程間通訊。windows
第2列,表示爲連接佔用的節點(inode), [1] 爲目錄時,一般與該目錄底下還有多少目錄有關係。bash
第3列,表示該文件的所屬主。網絡
第4列,表示該文件的所屬組。
第5列,表示該文件的大小。
第6列、第7列和第8列爲該文件的最近的修改日期,分別爲月份日期以及時間,也就是所謂的mtime.
第9列,文件名。
更改文件的權限
文件權限 drwxr-xr-x
第一列表示文件類型
l 連接文件 b塊設備文件 c字符文件 p管道文件 s套接字文件 -普通文件
後9段每三段一組 擁有者 擁有組 其餘人權限 r w x讀寫執行
對於目錄 具備x說明能夠進入cd目錄 ,rx 具備 cd 和ls讀出目錄, wx rm mv
rw 對於目錄沒有意義
chmod u g o 表示 擁有者, 擁有組, 其餘other
chmod u=rwx filename
chmod g=x filename
chmod o=rwx filename
chmod ugo=r filename//組合模式
chmod u+w filename //加模式
chmod u-r filename
chmod o+x password
r 4 w 2 x 1
chmod 744 filename
更改文件的所屬主 chown
語法: chown [ -R ] 帳戶名 文件名或者 chown [ -R ] 帳戶名:組名 文件名
-R選項只做用於目錄,做用是級聯更改,即不只更改當前目錄,連目錄裏的目錄或者文件所有更改。
chown user filename 更改文件的全部主
chown :usergroup filename 更改文件所屬組
chown yuananqin:piao password 更改擁有者和擁有組
umask語法: umask xxx (這裏的xxx表明三個數字)
1)若用戶創建爲普通文件,則預設 ‘沒有可執行權限’, 只有’rw’兩個權限。最大爲666 (‘-rw-rw-rw-‘).
2)若用戶創建爲目錄,則預設全部權限均開放,即777 (‘drwxrwxrwx’).
umask數值表明的含義爲,上邊兩條規則中的默認值(文件爲666,目錄爲777)須要減掉的權限。因此目錄的權限爲 'rwxrwxrwx' - '----w--w-' = 'rwxr-xr-x',普通文件的權限爲 'rw-rw-rw-' - '----w--w-' = 'rw-r--r--'. umask的值是能夠自定義的,好比設定umask 爲 002,你再建立目錄或者文件時,默認權限分別爲 'rwxrwxrwx' - '-------w-' = 'rwxrwxr-x' 和 'rw-rw-rw-' - '-------w-' = 'rw-rw-r--'.
umask 0022 後三位 文件最高權限666? 目錄最高權限777
建立一個文件默認權限是:擁有者-可讀可寫6 擁有組 -可讀4 其餘 -可讀4
建立一個目錄默認權限是:擁有者-可讀可寫可執行7 擁有組 -可讀可執行5 其餘 -可讀可執行5
umask 能夠在 /etc/bashrc 裏面更改,預設狀況下,root的umask爲022,而通常使用者則爲002
超級權限
一個文件都有一個全部者, 表示該文件是誰建立的. 同時, 該文件還有一個組編號, 表示該文件所屬的組, 通常爲文件全部者所屬的組. 若是是一個可執行文件, 那麼在執行時, 通常該文件只擁有調用該文件的用戶具備的權限. 而setuid, setgid 能夠來改變這種設置.
setuid: 設置使文件在執行階段具備文件全部者的權限. 典型的文件是 /usr/bin/passwd. 若是通常用戶執行該文件, 則在執行過程當中, 該文件能夠得到root權限, 從而能夠更改用戶的密碼.
setgid: 該權限只對目錄有效. 目錄被設置該位後, 任何用戶在此目錄下建立的文件都具備和該目錄所屬的組相同的組.
sticky bit: 該位能夠理解爲防刪除位. 一個文件是否能夠被某用戶刪除, 主要取決於該文件所屬的組是否對該用戶具備寫權限. 若是沒有寫權限, 則這個目錄下的全部文件都不能被刪除, 同時也不能添加新的文件. 若是但願用戶可以添加文件但同時不能刪除文件, 則能夠對文件使用sticky bit位. 設置該位後, 就算用戶對目錄具備寫權限, 也不能刪除該文件.
下面說一下如何操做這些標誌:
操做這些標誌與操做文件權限的命令是同樣的, 都是 chmod. 有兩種方法來操做,
1) chmod u+s temp -- 爲temp文件加上setuid標誌. (setuid 只對文件有效)
chmod g+s tempdir -- 爲tempdir目錄加上setgid標誌 (setgid 只對目錄有效)
chmod o+t temp -- 爲temp文件加上sticky標誌 (sticky只對目錄有效)
2) 採用八進制方式. 對通常文件經過三組八進制數字來置標誌, 如 666, 777, 644等. 若是設置這些特殊標誌, 則在這組數字以外外加一組八進制數字. 如 4666, 2777等. 這一組八進制數字三位的意義以下,
abc
a - setuid位, 若是該位爲1, 則表示設置setuid
b - setgid位, 若是該位爲1, 則表示設置setgid
c - sticky位, 若是該位爲1, 則表示設置sticky
也就是說,若是有特殊權限時,第一位數字能夠是0,1(--t),2(-s-),3(-st),4(s--),5(s-t),6(ss-),7(sst)
設置完這些標誌後, 能夠用 ls -l 來查看. 若是有這些標誌, 則會在原來的執行標誌位置上顯示. 如
rwsrw-r-- 表示有setuid標誌
rwxrwsrw- 表示有setgid標誌
rwxrw-rwt 表示有sticky標誌
那麼原來的執行標誌x到哪裏去了呢? 系統是這樣規定的, 若是原本在該位上有x, 則這些特殊標誌顯示爲小寫字母 (s, s, t). 不然, 顯示爲大寫字母 (S, S, T)
1. ‘which’ 用來查找可執行文件的絕對路徑。
重定向
ls / > ls_out.txt
把根目錄下的文件輸出結果 重定向到 ls_out.txt中。
>重定向符號老是從零開始寫文件,全部若是遇到一個錯誤的重定向會刪除文件
好比 ls /sssd > ls_out.txt
1,高級文件管理
輸入輸出重定向
標準輸入 設備:鍵盤 標記:0
標準輸出 設備:屏幕 標記:1
錯誤輸出 設備:屏幕 標記:2
echo "aminglinux" > aming.log 輸出重定向
echo "study.lishiming.net" >> aming.log 追加
cat < /etc/passwd 將文件內容讀出作cat命令的輸入
若是我想把一個程序的輸出存放到單獨的一個文件中,那麼咱們在這個流程中該如何介入呢?
其實很簡單,只是用標記符來控制輸出的目標就能夠了,例如
ls
/etc/passwd aaa.txt
> out.file 2> err.file 將標準輸出與錯誤輸出分別定向到文件
ls
/etc/passwd aaa.txt
&> all.file 將錯誤輸出和標準輸出合併定向到文件
ls /etc/passwd aaa.txt
>/dev/null 2>&1 將錯誤輸出和標準輸出合併定向到系統黑洞
ls -l /bin/usr &> ls-output.txt
注意重定向的順序安排很是重要。標準錯誤的重定向必須老是出如今標準輸出重定向以後,
要否則它不起做用
經過重定向輸出結果到一個特殊的
叫作 「/dev/null」 的文件。這個文件是系統設備,叫作位存儲桶,它能夠接受輸入,而且對輸
入不作任何處理。
/dev/null /dev/zero 介紹
/dev/null 是系統的黑洞
/dev/zero 是系統的零發生器
dd if=/dev/zero of=/root/big_file bs=10 count=1M
wc 計算文件的行數,單詞數,字節數
# wc /etc/passwd
40 59 1800 /etc/passwd
# wc -l /etc/passwd
40 /etc/passwd
# wc -w /etc/passwd
59 /etc/passwd
# wc -c /etc/passwd
1800 /etc/passwd
#
grep正則介紹
^ 行首
$ 行尾
v 取反
n 顯示行號
c 統計行數
diff
對比兩文件的差別
d 刪除了(delete) -a 新增了(append) -c 改變了(change)
cp /etc/passwd passwd1
刪幾行 改幾行 加幾行看看效果
diff /etc/passwd passwd1
uniq 對文件去重
uniq -c file 顯示file文件中重複的行出現的次數
uniq -d file 只顯示重複的行,沒重複的不顯示
cut 按列提取文件
-d 指明列分隔符 -f 選擇輸出的區域 -c 指定字符位置
# cut -d: -f 1,7 /etc/passwd |head -n 2
root:/bin/bash
bin:/sbin/nologin
# cut -c 1-3,6-9 /etc/passwd |head -n 2
tr 字符的刪除替換
-d 刪除
# tr -d : < /etc/passwd |head -n 2
替換
# tr 'abc' 'ABC' < /etc/passwd |head -n 2
# tr 'abc' 'A
' < /etc/passwd |head -n 2
# tr 'a-z' 'A-Z' < /etc/passwd |head -n 2
sort 排序輸出
默認按首字符從頭到尾的順序排序
-r 逆序
-n 按數字排序
-t 指明分隔符 與 -k 連用
-k 按指定的域排序
#
sort -t: -k 3 /etc/passwd
| 管道妙用
將上一個命令的標準輸出,傳遞給下一個命令作標準輸入
cat /etc/passwd | head -n 3 | cut -d: -f 1,3,7 |sort -rt: -k 2 |tr [a-z] [A-Z]
xargs
前面咱們學習了管道,管道只是讓後面的命令從前一個命令獲取輸入
那咱們要創建一個/etc/passwd第一域(用戶名)的目錄的話,只利用管道就沒法實現了
# cut -d: -f 1 /etc/passwd |head -n 5 | mkdir
mkdir: 缺乏操做數
請嘗試執行「mkdir --help」來獲取更多信息。
# cut -d: -f 1 /etc/passwd |head -n 5 | xargs mkdir
# ls
adm bin daemon lp root
查找文件
which 搜索命令的位置 搜索的源是$PATH
# which ls
alias ls='ls --color=tty'
/bin/ls
#
which cat
locate 搜索全部文件 搜索的源始updatadb庫 庫按期更新 因此不能搜到最新的資料
locate passwd | head -n 3
find 搜索真實文件系統,搜索方式多樣
find .
-type 類型 f d l p c b
-name 名稱 能夠通配
-size 大小 +1M 大於1M,-1M 小於1M,1M 等於1M
-user 文件擁有者
-group文件屬組
-perm 權限 有+ -時0是通配;
+表明(或)三組權限匹配其中之一;好比 r-x 知足r-- --x r-x 三個都成立
-表明(與)三組權限同時匹配; 好比 r-xr-xr-x 知足r----xr-x 也算成立
-o 或
-not 非
-ls 詳細信息
-exec CMD {} \; -ok CMD {} \;
-mtime +3 從當天向歷史天數推算的第三天前(三天前 不包含第三天)
-atime -3 從當前向歷史天數推算的前三天至當天這個段範圍
-ctime 3 從當天向歷史天數推算的第三天
與管道連用 | xargs
cat 能夠捕捉鍵盤輸入當沒有任何參數跟隨的時候, 因此能夠用從定向捕捉鍵盤輸入到文本中。
ctrl +d
1,怎麼查看命令幫助
ls --help
man ls
百度搜索或google搜索,例如:ls命令詳解
2,基本文件管理,經過從【查,建,刪,改】四個維度介紹了不一樣的命令。
查:(ls,cat,more,less,head,tail,rev,tac)
ls -a 查看目錄中全部的文件,包括隱藏文件(以.開頭的)
ls -l 查看目錄中文件的詳細信息
ls -t 以時間前後順序顯示結果
ls -h 顯示文件大小
ls -d 查看目錄信息
ls -i 顯示inode節點
cat 查看文件文件,只顯示最後一頁,例如cat /etc/passwd
more 分屏顯示,按空格鍵翻頁,沒法前翻
less 可上下滾動查看文件內容
head 默認只顯示前10行
head -20 /etc/passwd 顯示前20行
tail 默認顯示最後10行
tail -20 /etc/passwd 顯示最後20行
rev 使文件內容左右顛倒
tac 使文件內容先後顛倒
建:(mkdir ,touch,vim)
mkdir aminglinux 建立一個aminglinux目錄
mkdir a b c 依次在當前目錄下建立a b c 同級目錄
mkdir -p aa/bb/cc 遞推建立aa bb cc目錄,aa目錄包含bb,bb目錄包含cc
刪:(cp, mv,rm)
cp a b 將文件a複製一份成b
cp -r 複製目錄,默認不加-r只能複製文件
mv 移動或更名
rm 刪除文件
rm -r 刪除目錄,默認不加-r只能刪除文件
rm -f 強制刪除,不提示
3,用戶管理 (增刪改切)
用戶都存儲哪些信息? /etc/passwd
用戶名 密碼控位鍵 用戶UID 組GID 用戶描述信息 用戶家目錄 用戶shell
linux系統是支持多用戶的系統
用戶分爲三種以UID來區分
超級用戶 UID = 0 在系統中擁有至高無上的權限.
系統用戶 UID 1-499 bin,ftp,mail等,不具有登陸系統的權利,倒是系統運行不可缺乏的.
普通用戶 UID 500以上 管理員創建的用戶.密碼和權限都由管理員制定.
useradd user1 建立用戶user1
-u UID
-d 家目錄
-g GID
-c 用戶描述信息
passwd user1 給user1設置密碼
usermod 修改用戶屬性命令
-u UID
-d 家目錄
-g GID
-s 指定用戶shell
userdel
-r 刪除用戶及用戶家目錄
su 切換用戶
以root用戶切換其餘用戶則不須要密碼
而其餘用戶作任何切換都須要密碼
su -
加 - 與不加 - 的區別
登陸後檢查
whoami 查看當前用戶身份
who 查看登陸本機用戶及來源ip
w 查看登陸用戶在作什麼
id 查看用戶和查看用戶所屬的組
users 都有哪些登陸用戶
退出登錄
exit 退出登錄shell
---------------------------------------------------------------------------------------------------------------------
1. 救援模式
如果真機,須要有安裝光盤或者U盤,重啓進入bios調成光驅啓動,選擇 ‘Rescue installed system’
語言咱們默認,鍵盤類型也默認
Rescue Method 也保持默認
是否在使用rescue模式的時候啓用網絡,這個根據實際狀況,在這裏阿銘選擇NO(使用tab鍵)
三種模式能夠選擇:shell 模式會直接進入命令行,能夠進行的操做有編輯文件、修改用戶密碼等; fakd 是診斷模式; reboot 會直接重啓; 選擇第一個shell模式
執行一個命令:chroot /mnt/sysimage
2. Linux啓動過程
BIOS加電自檢,找啓動介質則找到MBR
找到MBR後,則根據bootloader(grub)設置找到內核所在位置
執行Linux內核映像代碼,檢測和加載硬件驅動
驅動加載完成後,內核把主動權交給了init
init會根據系統設定的運行級別作系統初始化
/etc/init/rcS.conf
exec /etc/rc.d/rc.sysinit -> 激活交換分區,檢查磁盤,加載硬件模塊以及其它一些須要優先執行任務
exec /etc/rc.d/rc $RUNLEVEL ($RUNLEVEL == 3)
/etc/rc.d/rc3.d/
/etc/rc.d/rc.local
創建終端:6個tty和1個圖形
用戶登陸
3. 命令ls
-l 詳細信息
-a 查看隱藏的文件或目錄
-d 只看目錄自己,不列出目錄下面的文件和目錄
-t 以時間前後排序
5. cd命令
cd 後面不加東西,就是進入到當前用戶的家目錄
cd ~ 這裏的~符號也表示用戶的家目錄
cd - 切換到上一次所在的目錄
cd . .. 其中.表示當前目錄, ..表示上一級目錄
注意區分絕對路徑,相對路徑概念,其中絕對路徑是從/開始的
6. 環境變量PATH的用法
echo $PATH 能夠查看系統的環境變量PATH的值,使用which命令能夠查看某個命令所在的絕對路徑
PATH=$PATH:/tmp 這樣咱們可使用/tmp/下面的可執行文件做爲命令
讓PATH永久生效的,須要把它加入到/etc/profile 裏,重啓生效,或者直接運行命令:
source /etc/profile
alias設置命令的別名,例如 alias aming='ls -lt'
解除別名使用 unalias aming
讓別名永久生效,須要把設置別名的命令,加入到 ~/.bashrc 裏
7. man 的用法
默認,咱們安裝的CentOS沒有這個命令,須要使用yum工具安裝它: yum install -y man
想查看一個命令的具體用法,就可使用man來查詢一下文檔,好比,man ls 能夠查看ls命令的用法
咱們還可使用man來查看某個配置文件的用法,好比 man passwd
8. 快捷鍵
Ctrl+c 取消命令
Ctrl+z 暫停命令
Ctrl+a 光標到行首
Ctrl+e 光標到行尾
Ctrl+u 刪除光標前全部字符
Ctrl+k 刪除光標後全部字符
Ctrl+l 清屏
Ctrl+d 退出登陸 == exit
Ctrl+s 鎖住命令終端,按任何鍵都不會有反應
Ctrl+q 解鎖命令終端
9. grub密碼
配置文件/etc/grub.conf,這個文件實際上是一個軟鏈接文件(相似於win下的快捷方式),真正的文件是/boot/grub/grub.conf
在hiddenmenu下加入一行(明文):
password 123456
密文:輸入命令
grub-md5-crypt
而後輸入密碼,
編輯/etc/grub.conf,加入:
password --md5 上面的字符串
---------------------------------------------------------------------------------------------------------------------------------------------------------
單引號表明字符串
雙引號
若是你把文本放在雙引號中,shell 使用的特
殊字符,除了 $,\ (反斜槓) ,和 ‘(倒引號)以外,則失去它們的特殊含義,被看成普通字符
來看待。
記住,在雙引號中,參數展開,算術表達式展開,和命令替換仍然有效: