shell与常用命令
虛擬控制臺(tái)
一臺(tái)計(jì)算機(jī)的輸入輸出設(shè)備就是一個(gè)物理的控制臺(tái) ;
如果在一臺(tái)計(jì)算機(jī)上用軟件的方法實(shí)現(xiàn)了多個(gè)互不干擾獨(dú)立工作的控制臺(tái)界面,就是實(shí)現(xiàn)了多個(gè)虛擬控制臺(tái);
Linux終端的工作方式是字符命令行方式,用戶通過鍵盤輸入命令進(jìn)行操作,可以通過Linux終端對(duì)系統(tǒng)進(jìn)行控制。
Linux 終端
Linux終端其實(shí)就是用戶與操作系統(tǒng)之間的一個(gè)接口,用戶通過終端與操作系統(tǒng)進(jìn)行交互.Linux終端包括Shell字符界面終端、圖形界面終端及其他用戶界面的終端;
shell
什么是shell
Shell是一個(gè)作為用戶與linux系統(tǒng)間接口的程序,它允許用戶向操作系統(tǒng)輸入需要執(zhí)行的命令,返回執(zhí)行結(jié)果
。在Linux中可有多種Shell,可用多個(gè)Shell,一個(gè)用戶同一時(shí)刻只能用一個(gè)Shell。
Shell的種類 :
- ash: 是貝爾實(shí)驗(yàn)室開發(fā)的Shell,bsh是對(duì)ash的符 號(hào)鏈接。
- bash: 是GNU的Bourne Again Shell,是GNU操作系 統(tǒng)上默認(rèn)的Shell。sh以及bash2都是對(duì)它的符 號(hào)鏈接。
- tcsh: 是Berkeley UNIX C Shell。csh是對(duì)它的符號(hào) 鏈接。
- ksh: Korn Shell的語法與Bourne Shell相同,同時(shí)具 備了C Shell的易用特點(diǎn)。
- zsh : Korn Shell 的一個(gè)增強(qiáng)版本,具備bash Shell 的許多特點(diǎn)。
GNU工具中的使用的是:bash。bash作為/bin/sh被默認(rèn)安裝。大多數(shù)Linux發(fā)行版中,Shell程序/bin/sh實(shí)際上是對(duì)程序/bin/bash的一個(gè)鏈接
echo $SHELL #查看當(dāng)前使用Shellchsh -l #查看系統(tǒng)支持的Shell列表chsh -s /path/to/shell username #更改Shell/bin/bash --version #查看bash版本Shell命令的基本格式是:
命令名 [選項(xiàng)] <參數(shù)1> <參數(shù)2> ……
功能&特點(diǎn)
- 命令自動(dòng)補(bǔ)齊(tab鍵)
兩下tab - 歷史記錄查看(鍵盤上下鍵)
上下翻看歷史輸入命令/ctrl + r - shell提示符(#, $)
#:超級(jí)管理員root的命令提示符
$: 其他用戶的命令提示符
- 輸入輸出重定向(>, >>, <)
在Linux中每一個(gè)程序的執(zhí)行,都有輸入、輸出和錯(cuò)誤輸出;Linux系統(tǒng)中所有的設(shè)備都是以文件的形式存在(鍵盤、鼠標(biāo)、顯示器…);系統(tǒng)啟動(dòng)時(shí)自動(dòng)打開了三個(gè)文件描述符
… < 文件
輸入重定向wc -l < list.txt
… > 文件
輸出重定向 覆蓋原有內(nèi)容ls > out.txt
… >> 文件
追加重定向 文件末尾添加echo abc >> out.txt
高級(jí)重定向
- 管道(|)
作用:把前一個(gè)命令的輸出作為下一個(gè)命令的輸入
符號(hào): |
例子:
ls /var/log | grep log | wc -l
Linux文件命令
文件概述
文件是Linux用來存儲(chǔ)信息的基本結(jié)構(gòu),它是被命名的存儲(chǔ)在某種介質(zhì)上的一組信息的集合。
Linux中所有內(nèi)容都以文件的形式保存,分為:
- 普通文件
- 目錄文件
- 設(shè)備文件
文件的成分:無論文件是一個(gè)程序、一個(gè)文檔、一個(gè)數(shù)據(jù)庫、一個(gè)目錄,都有以下同樣的結(jié)構(gòu)
Linux目錄
目錄文件也包含數(shù)據(jù),它與普通文件的差別是:內(nèi)核對(duì)這些數(shù)據(jù)進(jìn)行結(jié)構(gòu)化處理,它是由成對(duì)的“i節(jié)點(diǎn)號(hào)/文件名”構(gòu)成的列表。
- 當(dāng)把文件添加到一個(gè)目錄中時(shí),該目錄的尺寸會(huì)增大,以便容納新文件名。
- 當(dāng)刪除文件時(shí),目錄的尺寸并不減小,而是內(nèi)核對(duì)該目錄項(xiàng)做上特殊標(biāo)記,以便下次添加一個(gè)文件時(shí)重新使用它
工作目錄:用戶登錄到Linux系統(tǒng)后,每時(shí)每刻都處在某個(gè)目錄之中,此目錄被稱為“工作目錄” 或“當(dāng)前目錄”
用戶主目錄(Home Directory):是系統(tǒng)管理員在增加用戶時(shí)為該用戶建立起來的目錄,每個(gè)用戶都有自己的主目錄。 使用符號(hào)~表示
絕對(duì)路徑是指從“根”開始的路徑,也稱為完全路徑;
cd /usr/local/bin
相對(duì)路徑是指從用戶工作目錄開始的路徑。
cd /usr
cd local/bin
特殊目錄
- “.”代表該目錄自己,
- “…”代表該目錄的父目錄,
- 對(duì)于根目錄,“.”和“…”都代表其自己
隱藏文件
以.開頭的都是隱藏文件
Linux文件屬性
Linux文件種類
- 普通文件( regular file ) :[ - ]
純文字文件(ascii) 或 二進(jìn)制文件(binary) - 目錄文件 (directory): [ d ]
- 鏈接文件 (link):[ l ]
- 設(shè)備文件 (device):
區(qū)塊 (block) 設(shè)備文件:[ b ];
字符 (character) 設(shè)備文件:[ c ]。
- 管道文件(Pipe): [ p ]
- Socket文件(Socket): [ s ]
ls
顯示目錄與文件操作命令
ls [-a] [-l] [-i] [-t] [-S] [-d][-R]
- -a all 列出所有,包括隱藏文件
- -l long 長(zhǎng)格式
- -i inode節(jié)點(diǎn)
- -t time排序
- -S size排序
- -d directory 只顯示目錄,而不是顯示其下的內(nèi)容
- -R recursive 顯示指定目錄及子目錄下的內(nèi)容
cd
切換工作目錄命令cd
cd <dirName>
pwd
顯示當(dāng)前路徑命令pwd
cp
mv
cat
文件查看和連接命令
cat [選項(xiàng)] <file1> <file2> …
[-n] : 給每行編號(hào)
[-b] : 給每行編號(hào),除了空白行
cat -n file1 /usr/local/file2
more
less
head
tail
mkdir
創(chuàng)建目錄命令
mkdir [-p] <dirName>…
-p 中間路徑不存在,會(huì)自動(dòng)創(chuàng)建
rmdir
刪除空目錄命令
rmdir [-p] <dirName>
-p 刪除路徑中的空目錄
touch
rm
locate/slocate
文件定位命令
locate [選項(xiàng)] <search string>
建立所有文件以及路徑的數(shù)據(jù)庫,快速從系統(tǒng)數(shù)據(jù)庫中查找指定的內(nèi)容
先要更新數(shù)據(jù)庫 updatedb
find
查找文件或者目錄命令
find [path…] [expression][-name][-perm][-size][-user][-type][-exec]
find /etc -name “*.conf” find . -type f -exec ls -l ‘{}’ \;ln
ln [選項(xiàng)] <source> <dest>
[-s] 軟鏈接
- 硬鏈接(hard link):給文件一個(gè)副本(別名),同時(shí)建立兩者之間的連接關(guān)系,修改其中一個(gè),與其連接的文件同時(shí)被修改,如果刪除其中一個(gè),其余的文件不受影響。磁盤上只有一份數(shù)據(jù)。硬鏈接是存在同一個(gè)文件系統(tǒng)中。
- 軟鏈接(symbolic link):軟鏈接的方式則是產(chǎn)生一個(gè)特殊的文件,該文件的內(nèi)容是指向另一個(gè)文件的位置。它只是一個(gè)快捷方式,刪除了源文件,這個(gè)連接文件就沒用了。軟鏈接可以跨越不同的文件系統(tǒng)。
chmod
- 作用:改變指定目錄或文件的權(quán)限。
- 語法:chmod [選項(xiàng)] mode文件名或目錄
該命令語法中mode代表權(quán)限設(shè)定字串,格式如下:
chown
- 作用:改變指定目錄或文件的所屬用戶、所屬組。
- 語法:chown [選項(xiàng)] 用戶名[:組名] 文件名或目錄
- root權(quán)限
- [-R] : 遞歸遍歷
chgrp
- 作用:改變指定目錄或文件的所屬組。
- 語法:chgrp [選項(xiàng)] 組名 文件名或目錄
- [-R] :遞歸遍歷
cut
- 作用:從指定文件中過濾或提取特定內(nèi)容,并顯示在當(dāng)前屏幕上。
- 提取/etc/passwd文件中的第1,3,5列
- 將/etc/passwd文件從第2個(gè)字母至第5個(gè)字母的內(nèi)容提取出來
wc
默認(rèn)統(tǒng)計(jì)文件內(nèi)的行/字和字節(jié)數(shù)
wc [-l](lines)[-w](words)[-m](chars)[-c](bytes) 文件路徑
可以與管道結(jié)合使用
sort
排序
sort [-r](reverse)[-u](unique)[-f](nocase) 文件路徑
可以與管道結(jié)合使用
tr
文件處理工具
tr [選項(xiàng)] [字符串1] [字符串2]
常用選項(xiàng)/參數(shù)含義如下。
-d:刪除字符串1中所有輸入字符。
tar
tar [選項(xiàng)] 壓縮文件名 文件或目錄
tar后綴:cvf xvf (c:create v:view f:file)
tar.gz后綴:zcvf zxvf z:gzip
tar cvf/zcvf a.tar /tmp/a tar xvf/zxvf a.tar -C /tmp/b (指定目錄解壓,默認(rèn)解壓路徑為當(dāng)前目錄)gzip
打包文件(文件夾不行)[gz后綴]
[-d](解壓)[-r] (遞歸)[-v] (view)[-t] (test)
unzip
zip后綴
[-x](解壓)[-v][-t][-d](指定目錄)
echo
cal
可以用戶顯示公歷(陽歷)日歷如只有一個(gè)參數(shù),則表示年份(1-9999),如有兩個(gè)參數(shù),則表示月份和年份:
常用參數(shù):
-3 顯示前一月,當(dāng)前月,后一月三個(gè)月的日歷 -m 顯示星期一為第一列 -j 顯示在當(dāng)前年第幾天 -y [year]顯示當(dāng)前年[year]份的日歷date
顯示或設(shè)定系統(tǒng)的日期與時(shí)間。
date +%Y-%m-%d
which #查看命令路徑
which 是在 PATH 就是指定的路徑中,搜索某個(gè)系統(tǒng)命令的位置,并返回第一個(gè)搜索結(jié)果。使用 which 命令,就可以看到某個(gè)系統(tǒng)命令是否存在,以及執(zhí)行的到底是哪一個(gè)位置的命令。
-n 指定文件名長(zhǎng)度,指定的長(zhǎng)度必須大于或等于所有文件中最長(zhǎng)的文件名。whereis #查看命令路徑
whereis 命令只能用于程序名的搜索,而且只搜索二進(jìn)制文件(參數(shù)-b)、man說明文件(參數(shù)-m)和源代碼文件(參數(shù)-s)。如果省略參數(shù),則返回所有信息。whereis 及 locate 都是基于系統(tǒng)內(nèi)建的數(shù)據(jù)庫進(jìn)行搜索,因此效率很高,而find則是遍歷硬盤查找文件。
- b 定位可執(zhí)行文件。 - m 定位幫助文件。 - s 定位源代碼文件。 - u 搜索默認(rèn)路徑下除可執(zhí)行文件、源代碼文件、幫助文件以外的其它文件。grep
強(qiáng)大的文本搜索命令,grep(Global Regular Expression Print) 全局正則表達(dá)式搜索。
grep 的工作方式是這樣的,它在一個(gè)或多個(gè)文件中搜索字符串模板。如果模板包括空格,則必須被引用,模板后的所有字符串被看作文件名。搜索的結(jié)果被送到標(biāo)準(zhǔn)輸出,不影響原文件內(nèi)容。
命令格式:
grep [option] pattern file|dir
常用參數(shù):
awk
AWK 是一種處理文本文件的語言,是一個(gè)強(qiáng)大的文本分析工具。
awk [選項(xiàng)] '腳本命令' 文件名
cat filename | awk -F: ‘{print $n}’ cat /etc/passwd | awk -F: ‘{pirnt $1}’ awk -F: ‘{print $n}’ /etc/passwdseq
sed 利用腳本來處理文本文件
- 全局替換
sed -i 's/old_str/new_str/g' /path/to/file
直接編輯文件選項(xiàng)-i,會(huì)匹配file文件中每一行的第一個(gè)old_str替換為new_str
- 指定位置插入
sed -i 'line_number a insert_content' /path/to/file
yum
yum( Yellow dog Updater, Modified)是一個(gè)在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端軟件包管理器。
基于 RPM 包管理,能夠從指定的服務(wù)器自動(dòng)下載 RPM 包并且安裝,可以自動(dòng)處理依賴性關(guān)系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。
yum 提供了查找、安裝、刪除某一個(gè)、一組甚至全部軟件包的命令,而且命令簡(jiǎn)潔而又好記。
yum install | remove | list | search
Linux 用戶
用戶分類
超級(jí)用戶
root,根用戶,類似Windows中的超級(jí)管理員賬戶,有最高的權(quán)限,可以對(duì)Linux做任何操作。
普通用戶
受限的權(quán)限,普通用戶沒有對(duì)系統(tǒng)的完全控制權(quán),而且用戶之間私人的資源是相互隔離的。
特殊用戶
與系統(tǒng)和程序服務(wù)相關(guān)的用戶(shutdown、mail、mysql……)。
默認(rèn)情況下,這些特殊用戶是無法登錄的,如果給這些用戶授權(quán)登陸口令后,就可以使用這些用戶登錄系統(tǒng)。(為了安全,一般不授權(quán)口令)
一般shell被設(shè)定為:/sbin/nologin 無法登陸shell
用戶信息文件
/etc/passwd
每一行存儲(chǔ)一個(gè)用戶的賬號(hào)信息
#用戶名:加密密碼:用戶ID:用戶組ID:用戶信息:用戶主目錄: 登錄Shell tak:x:1000:1000::/home/tak:/bin/bash超級(jí)用戶root的UID是0,系統(tǒng)用戶的UID在100以內(nèi),而普通用戶的UID從500開始往上編號(hào)(CentOS 7是1000開始)
口令文件
/etc/shadow
每一行存儲(chǔ)一個(gè)用戶的登錄密碼信息,加密。只有root用戶才能讀取這個(gè)文件
用戶名:加密口令:上次更新時(shí)間:允許更改時(shí)間:要求更改時(shí)間:取消口令之前的警告時(shí)間:取消和停用之間的時(shí)間:賬戶口令的天數(shù):賬戶終止時(shí)間:特殊標(biāo)志
組信息
/etc/group
每一行記錄系統(tǒng)中的用戶組信息
組名:密碼字段:用戶組ID:用戶名列表
用戶名列表用逗號(hào)分隔多個(gè)用戶名(只顯示附加用戶)
用戶管理/命令
增加用戶: useradd [選項(xiàng)] <newusername>
-
d :指定用戶主目錄,默認(rèn)情況下,將會(huì)在/home目錄下新建一個(gè)與用戶名相同的用戶主目錄。
-
s :指定用戶登錄時(shí)使用的shell,默認(rèn)的shell為/bin/bash。
-
g :指定用戶歸屬的組名。默認(rèn)地,每當(dāng)創(chuàng)建一個(gè)新用戶的時(shí)候,一個(gè)與用戶名相同的組就會(huì)被創(chuàng)建,而這個(gè)用戶就是該組的成員。
-
G <組列表>:在Linux系統(tǒng)中,一個(gè)用戶可以屬于一個(gè)組,也可以屬于多個(gè)組,其中用戶在初始化時(shí)屬于的組稱為主組(主組只能有1個(gè))。如果要讓用戶屬于其它的組,應(yīng)該使用選項(xiàng)-G <組列表>。
-
u :指定新用戶的UID。
修改密碼
設(shè)置和修改口令 :passwd [用戶名]
只有超級(jí)用戶可以使用“passwd 用戶名”修改其他用戶的口令,普通用戶只能用不帶參數(shù)的passwd命令修改自己的口令
刪除用戶
刪除用戶的命令為userdel,該命令的格式為:userdel <用戶名>
- r:刪除用戶的同時(shí)刪除用戶的全部用戶主目錄
修改用戶屬性
usermod [-g<主組名> -G <組名> -d <用戶主目錄> -s <用戶shell>] <username>
增加用戶組
groupadd <新組名>
刪除用戶組
groupdel <組名> (沒有用戶作為主組時(shí))
修改組成員
直接編輯/etc/group文件,將用戶名寫到對(duì)應(yīng)的組名的后面。
總結(jié)
以上是生活随笔為你收集整理的shell与常用命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到抓蜜蜂什么意思
- 下一篇: leetcode 525. 连续数组