python 筆記22
Ubuntu 介紹
1舰始、Ubuntu 安裝
2、Ubuntu 安裝VMware tools步驟
- 手動在Ubuntu系統(tǒng)中彈出光盤峻堰。
- 點(diǎn)擊虛擬機(jī)菜單【虛擬機(jī)】-【安裝VMware tools】讹开,根據(jù)提示完成下載。
- 下載完后Ubuntu桌面會有一個(gè)文件夾捐名,雙擊進(jìn)入文件夾萧吠,在文件夾中右鍵選擇【在終端中執(zhí)行】。
- 在終端輸入sudo ./wmware-install.pl桐筏,回車纸型,下面的步驟就是不斷選擇yes還有按回車。
- 完成VMware tools 安裝梅忌,重啟Ubuntu系統(tǒng)狰腌,在虛擬機(jī)菜單【查看】-【立即適應(yīng)客戶機(jī)】就可以讓Ubuntu系統(tǒng)自動適應(yīng)電腦屏幕,調(diào)整分辨率牧氮。
安裝VMware tools 的目的就是為了讓分辨率問題不困擾用戶的操作琼腔。
3、Ubuntu目錄結(jié)構(gòu)
桌面打開終端踱葛,雙擊終端窗口上端可以全屏丹莲。
輸入:
ls -l /
回車
獲得以下菜單:
這些就是目錄,在linux下是沒有【文件夾】這種說法的尸诽,所有的文件夾在linux下都叫目錄甥材。
LInux目錄結(jié)構(gòu):
/ : 所有目錄都在
/boot : boot 配置文件、內(nèi)核和其它啟動 時(shí)所需的文件
/etc : 存放系統(tǒng)配置有關(guān)的文件
/home : 存放普通用戶目錄
/mnt : 硬盤上手動 掛載的文件系統(tǒng)
/media : 自動掛載(加載)的硬盤分區(qū)以及類似CD性含、數(shù)碼相機(jī)等可移動介質(zhì)洲赵。
/cdrom : 掛載光盤?
/opt : 存放一些可選程序,如某個(gè)程序測試版本,安裝到該目錄的程序的所有數(shù)據(jù),庫文件都存在同個(gè)目錄下
/root : 系統(tǒng)管理員的目錄商蕴,對于系統(tǒng)來說叠萍,系統(tǒng)管理員好比上帝,他可以對系統(tǒng)做任何操作绪商,比如刪除你的文件苛谷,一般情況下不要使用root用戶。
/bin : 存放常用的程序文件(命令文件)格郁。
/sbin : 系統(tǒng)管理命令腹殿,這里存放的是系統(tǒng)管理員使用的管理程序
/tmp : 臨時(shí)目錄独悴,存放臨時(shí)文件,系統(tǒng)會定期清理該目錄下的文件赫蛇。
/usr : 在這個(gè)目錄下,你可以找到那些不適合放在/bin或/etc目錄下的額外的工具雾叭。比如游戲悟耘、打印工具等。/usr目錄包含了許多子目錄: /usr/bin目錄用于存放程序;/usr/share用于存放一些共享的數(shù)據(jù)织狐,比如音樂文件或者圖標(biāo)等等;/usr/lib目錄用于存放那些不能直接 運(yùn)行的暂幼,但卻是許多程序運(yùn)行所必需的一些函數(shù)庫文件。/usr/local : 這個(gè)目錄一般是用來存放用戶自編譯安裝軟件的存放目錄移迫;一般是通過源碼包安裝的軟件旺嬉,如果沒有特別指定安裝目錄的話,一般是安裝在這個(gè)目錄中厨埋。
/usr/bin/ 非必要可執(zhí)行文件 (在單用戶模式中不需要)邪媳;面向所有用戶。
/usr/include/ 標(biāo)準(zhǔn)包含文件。
/usr/lib/ /usr/bin/和/usr/sbin/中二進(jìn)制文件的庫。
/usr/sbin/ 非必要的系統(tǒng)二進(jìn)制文件堰酿,例如:大量網(wǎng)絡(luò)服務(wù)的守護(hù)進(jìn)程瞳浦。
/usr/share/ 體系結(jié)構(gòu)無關(guān)(共享)數(shù)據(jù)。
/usr/src/ 源代碼,例如:內(nèi)核源代碼及其頭文件绩聘。
/usr/X11R6/ X Window系統(tǒng) 版本 11, Release 6.
/usr/local/ 本地?cái)?shù)據(jù)的第三層次, 具體到本臺主機(jī)。通常而言有進(jìn)一步的子目錄据悔, 例如:bin/、lib/耘沼、share/.
/var : 該目錄存放那些經(jīng)常被修改的文件极颓,包括各種日志、數(shù)據(jù)文件群嗤;
/var/cache/ 應(yīng)用程序緩存數(shù)據(jù)讼昆。這些數(shù)據(jù)是在本地生成的一個(gè)耗時(shí)的I/O或計(jì)算結(jié)果。應(yīng)用程序必須能夠再生或恢復(fù)數(shù)據(jù)骚烧。緩存的文件可以被刪除而不導(dǎo)致數(shù)據(jù)丟失浸赫。
/var/lib/ 狀態(tài)信息。 由程序在運(yùn)行時(shí)維護(hù)的持久性數(shù)據(jù)赃绊。 例如:數(shù)據(jù)庫既峡、包裝的系統(tǒng)元數(shù)據(jù)等。
/var/lock/ 鎖文件碧查,一類跟蹤當(dāng)前使用中資源的文件运敢。
/var/log/ 日志文件校仑,包含大量日志文件。
/var/mail/ 用戶的電子郵箱传惠。
/var/run/ 自最后一次啟動以來運(yùn)行中的系統(tǒng)的信息迄沫,例如:當(dāng)前登錄的用戶和運(yùn)行中的守護(hù)進(jìn)程。現(xiàn)已經(jīng)被/run代替[13]卦方。
/var/spool/ 等待處理的任務(wù)的脫機(jī)文件羊瘩,例如:打印隊(duì)列和未讀的郵件。
/var/spool/mail/ 用戶的郵箱(不鼓勵(lì)的存儲位置)
/var/tmp/ 在系統(tǒng)重啟過程中可以保留的臨時(shí)文件盼砍。
/lib : 目錄是根文件系統(tǒng)上的程序所需的共享庫尘吗,存放了根文件系統(tǒng)程序運(yùn)行所需的共享文件。這些文件包含了可被許多程序共享的代碼浇坐,以避免每個(gè)程序都包含有相同的子程序的副本睬捶,故可以使得可執(zhí)行文件變得更小,節(jié)省空間近刘。
/lib32 : 同上
/lib64 : 同上
/lost+found : 該目錄在大多數(shù)情況下都是空的擒贸。但當(dāng)突然停電、或者非正常關(guān)機(jī)后觉渴,有些文件就臨時(shí)存放在酗宋;
/dev : 存放設(shè)備文件
/run : 代替/var/run目錄,
/proc : 虛擬文件系統(tǒng)疆拘,可以在該目錄下獲取系統(tǒng)信息蜕猫,這些信息是在內(nèi)存中由系統(tǒng)自己產(chǎn)生的,該目錄的內(nèi)容不在硬盤上而在內(nèi)存里哎迄;
/sys : 和proc一樣回右,虛擬文件系統(tǒng),可以在該目錄下獲取系統(tǒng)信息漱挚,這些信息是在內(nèi)存中由系統(tǒng)自己產(chǎn)生的翔烁,該目錄的內(nèi)容不在硬盤上而在內(nèi)存里;
4旨涝、SWAP分區(qū)
當(dāng)系統(tǒng)的物理內(nèi)存不夠用的時(shí)候蹬屹,就需要將物理內(nèi)存中的一部分空間釋放出來,以供當(dāng)前運(yùn)行的程序使用白华。那些被釋放的空間可能來自一些很長時(shí)間沒有什么操作的程序慨默,這些被釋放的空間被臨時(shí)保存到Swap空間中,等到那些程序要運(yùn)行時(shí)弧腥,再從Swap中恢復(fù)保存的數(shù)據(jù)到內(nèi)存中厦取。這樣,系統(tǒng)總是在物理內(nèi)存不夠時(shí)管搪,才進(jìn)行Swap交換虾攻。
sudo cat /proc/sys/vm/swappiness
該值默認(rèn)值是60.
swappiness=0的時(shí)候表示最大限度使用物理內(nèi)存铡买,然后才是 swap空間,
swappiness=100的時(shí)候表示積極的使用swap分區(qū)霎箍,并且把內(nèi)存上的數(shù)據(jù)及時(shí)的搬運(yùn)到swap空間里面奇钞。
--臨時(shí)性修改:
[root@rhce ~]# sysctl vm.swappiness=10
vm.swappiness = 10
[root@rhce ~]# cat /proc/sys/vm/swappiness
10
這里我們的修改已經(jīng)生效,但是如果我們重啟了系統(tǒng)漂坏,又會變成60.
--永久修改:
在/etc/sysctl.conf 文件里添加如下參數(shù):
vm.swappiness=10
4景埃、語言環(huán)境
語言環(huán)境
查看是否安裝了中文支持
locale -a
如果有 zh_CN.utf8 則表示系統(tǒng)已經(jīng)安裝了中文locale,如果沒有則需要安裝相應(yīng)的軟件包樊拓。安裝方式如下:
sudo apt-get install language-pack-zh-hans language-pack-zh-hans-base
5纠亚、軟件安裝
軟件管理 apt ( Advanced Packaging Tool ) , 他可以自動下載塘慕、配置筋夏、安裝軟件包;簡化了Linux系統(tǒng)上的图呢。Debian及衍生版中都包含了apt 条篷, RedHat系列的linux的則使用yum來進(jìn)行管理,其中Fedora22中Centos7中開始使用dnf 來替代yum蛤织。
apt-cache search package 搜索包
apt-cache show package 獲取包的相關(guān)信息赴叹,如說明、大小指蚜、版本等
sudo apt-get install package 安裝包
sudo apt-get install package –reinstall 重新安裝包
sudo apt-get -f install 強(qiáng)制安裝
sudo apt-get remove package 刪除包
sudo apt-get remove package –purge 刪除包乞巧,包括刪除配置文件等
sudo apt-get autoremove 自動刪除不需要的包
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安裝的包
sudo apt-get dist-upgrade 升級系統(tǒng)
sudo apt-get dselect-upgrade 使用 dselect 升級
apt-cache depends package 了解使用依賴
apt-cache rdepends package 了解某個(gè)具體的依賴
sudo apt-get build-dep package 安裝相關(guān)的編譯環(huán)境
apt-get source package 下載該包的源代碼
sudo apt-get clean && sudo apt-get autoclean 清理下載文件的存檔
sudo apt-get check 檢查是否有損壞的依賴
舉個(gè)例子
比如要安裝一個(gè)openssh的服務(wù)端 :
apt-get install openssh.server 沒有權(quán)限;
sudo apt-get install openssh.server 有權(quán)限摊鸡,但是需要手動確認(rèn)绽媒;
sudo apt-get install -y openssh.server 有權(quán)限,且自動安裝免猾。
apt的配置文件:
/etc/apt/sources.list 設(shè)置軟件包的獲取來源 (←記住這條即可)
/etc/apt/apt.conf apt配置文件
/etc/apt/apt.conf.d apt的零碎配置文件
/etc/apt/preferences 版本參數(shù)
/var/cache/apt/archives/partial 存放正在下載的軟件包
/var/cache/apt/archives 存放已經(jīng)下載的軟件包
/var/lib/apt/lists 存放已經(jīng)下載的軟件包詳細(xì)信息
/var/lib/apt/lists/partial 存放正在下載的軟件包詳細(xì)信息
軟件源配置文件格式:
deb http://security.ubuntu.com/ubuntu xenial-security main restricted
# deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted
deb http://security.ubuntu.com/ubuntu xenial-security universe
# deb-src http://security.ubuntu.com/ubuntu xenial-security universe
deb http://security.ubuntu.com/ubuntu xenial-security multiverse
# deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse
Ubuntu 軟件倉庫被分為四個(gè)部分:main(主要的), restricted(受限的), universe(廣泛的) 是辕, multiverse(多元的),這主要根據(jù)我們對軟件的支持能力猎提,以及軟件的目的是否符合我們的 自由軟件哲學(xué)获三。
先看了一下配置文件的一段內(nèi)容:
第一個(gè)deb表示軟件包的格式,可以是 deb 或 deb-src锨苏,前者表示所指向的存放 binary 格式(已編譯)疙教,后者為 sources 格式(原代碼)。
第二個(gè)URI伞租,即 Universal Resource Identifier松逊,通用資源標(biāo)識符,可以是以:file(系統(tǒng)) 肯夏、 cdrom(光驅(qū)) 经宏、 http 犀暑、 ftp、copy 烁兰、rsh 耐亏、ssh 等幾個(gè)參數(shù)開頭的軟件包所在位置。
第三個(gè)Distribution 指發(fā)行版本號沪斟,可以是:stable广辰,testing,unstable主之,sarge择吊,etch,sid 等槽奕,具體可參考Debian文檔几睛。
后面的幾個(gè)component表示具體的軟件包分類:
- main:完全遵循 Debian 自由軟件準(zhǔn)則 即DFSG的軟件包;
- contrib:軟件包均遵循DFSG自由使用原則粤攒,但是其使用了某些不符合DFSG的第三方庫所森;
- non-free:不符合DFSG的軟件包。
dpkg是Debian軟件包管理器的基礎(chǔ)夯接,被用于安裝焕济、卸載和供給和.deb軟件包相關(guān)的信息。dpkg本身是一個(gè)底層的工具盔几,本身并不能從遠(yuǎn)程包倉庫下載包以及處理包的依賴的關(guān)系晴弃,需要將包從遠(yuǎn)程下載后再安裝。DPKG常用命令:
dpkg -i package.deb 安裝包
dpkg -r package 刪除包
dpkg -P package 刪除包(包括配置文件)
dpkg -L package 列出與該包關(guān)聯(lián)的文件
dpkg -l package 顯示該包的版本
dpkg –unpack package.deb 解開 deb 包的內(nèi)容
dpkg -S keyword 搜索所屬的包內(nèi)容
dpkg -l 列出當(dāng)前已安裝的包
dpkg -c package.deb 列出 deb 包的內(nèi)容
dpkg –configure package 配置包
dpkg的安裝方式?jīng)]有apt方便逊拍,apt能夠自動安裝互相依賴的父級軟件上鞠。
6、部分命令
date //顯示當(dāng)前日期
# 日期格式化
# %Y year
# %m month (01..12)
# %d day of month (e.g., 01)
# %H hour (00..23)
# %I hour (01..12)
# %M minute (00..59)
# %S second (00..60)
date +"%Y%m%d %H%M%S"
223856
date +"%Y-%m-%d %H:%M:%S"
2016-08-24 22:39:07
date -s //設(shè)置當(dāng)前時(shí)間顺献,只有root權(quán)限才能設(shè)置旗国,其他只能查看。
date -s 20061010 //設(shè)置成20061010注整,這樣會把具體時(shí)間設(shè)置成空00:00:00
date -s 12:23:23 //設(shè)置具體時(shí)間能曾,不會對日期做更改
date -s “12:12:23 2006-10-10″ //這樣可以設(shè)置全部時(shí)間
# 注意: 重新設(shè)置時(shí)間后需要將時(shí)間捅不到硬件時(shí)鐘。方式如下:
hwclock -w
cal : 顯示一個(gè)日歷
cal # 現(xiàn)實(shí)當(dāng)前月份的日歷
cal -y # 顯示當(dāng)年的日歷
cal 2016 # # 顯示指定年份的日歷
設(shè)置時(shí)區(qū)
tzselect # 或者
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改密碼:
# 修改密碼的命令
passwd # 默認(rèn)修改當(dāng)前用戶的密碼
passwd username # 修改指定用戶的密碼肿轨,需要管理員權(quán)限
gedit:類似notapad++
gedit
退出可以按 Ctrl+C
快捷鍵:
ctrl-a : 把光標(biāo)移動到命令行最開始的地方寿冕。
ctrl-e : 把光標(biāo)移動到命令行末尾。
ctrl-u : 清除命令行中光標(biāo)所處位置之前的所有字符椒袍。
ctrl-k : 清除從提示符所在位置到行末尾之間的字符
ctrl-w : 清除左邊的字段
ctrl-y : 將會貼上被ctrl-u 或者 ctrl-k 或者 ctrl-w清除的部分驼唱。
ctrl-r : 將自動在命令歷史緩存中增量搜索后面入的字符。
tab : 命令行自動補(bǔ)全-自動補(bǔ)全當(dāng)前的命令行驹暑。如果啟用自動補(bǔ)全腳本命令參數(shù)和選項(xiàng)也可以自動補(bǔ)齊辨赐。
ctrl-l : 清屏
ctrl-d : 中斷當(dāng)前輸入,比如改賬戶密碼等京办。
注銷/重啟/關(guān)機(jī)
logout # 注銷
reboot # 重啟系統(tǒng): 需要管理員全新啊
-
shutdown # 關(guān)機(jī): 需要管理員權(quán)限
shutdown -r now # 現(xiàn)在立即重啟 shutdown -r +5 # 三分鐘后重啟 shutdown -r 12:12 #在12:12時(shí)將重啟計(jì)算機(jī) shutdown -h now # 現(xiàn)在立即關(guān)機(jī) shutdown -h +5 “The System will shutdown after 3 minutes” # 提示使用者將在三分鐘后關(guān)機(jī) shutdown -h +5 # 5分鐘后關(guān)機(jī) shutdown -h 12:00 # 12點(diǎn)鐘關(guān)機(jī) shutdown -c # 取消關(guān)機(jī)操作
cd : 切換目錄
cd # 回到當(dāng)前用戶的家(Home)目錄
# ~ 可用于表示用戶家目錄
cd /etc # 切換到/etc目錄
cd .. #返回上一級目錄
cd - # 切換到上一次的目錄
有的系統(tǒng)不會顯示當(dāng)前的目錄掀序,可以輸入pwd顯示。
獲取幫助:
man man # 查看man命令的手冊
man cd
man pwd
man 5 passwd # 查詢第5章的passwd
man -k passwd # 模糊查找
man -f passwd # 精確查找
ls : 列出目標(biāo)目錄中所有的子目錄和文件
格式:ls [選項(xiàng)] [目錄名]
-a 用于顯示所有文件和子目錄(保羅點(diǎn)文件惭婿,以點(diǎn)開頭文件就是隱藏文件)不恭。
-l 除了文件名之外,還將文件的權(quán)限财饥、所有者换吧、文件大小等信息詳細(xì)列出來。
-r 將目錄的內(nèi)容清單以英文字母順序的逆序顯示钥星。
-t 按文件修改時(shí)間進(jìn)行排序沾瓦,而不是按文件名進(jìn)行排序。
-A 同-a打颤,但不列出“.”(表示當(dāng)前目錄)和“..”(表示當(dāng)前目錄的父目錄)暴拄。
-F 在列出的文件名和目錄名后添加標(biāo)志漓滔。例如编饺,在可執(zhí)行文件后添加“*”,在目錄名后添加“/”以區(qū)分不同的類型响驴。
-R 如果目標(biāo)目錄及其子目錄中有文件透且,就列出所有的文件。
. 和..
. 表示當(dāng)前目錄
.. 表示父目錄
ls # 列出當(dāng)前目錄下的文件和目錄
ls . # 列出當(dāng)前目錄下的文件和目錄
ls .. # 列出當(dāng)前目錄的父目錄下的文件和目錄
ls /etc # 列出/etc目錄下的文件和目錄
ls -l # 以長格式顯示文件信息
總用量 76
-rwxrwxrwx 1 will will 78 5月 13 18:11 ss_start.sh
文件類型
- 普通文件
d 目錄文件
b 塊設(shè)備文件
c 字符設(shè)備文件
l 鏈接文件
p 管道文件
s socket文件
ls -l /dev # 可以查看字符設(shè)備文件和塊設(shè)備文件
ls -l /run # 可以找到socket文件
ls -l /run/systemd/inhibit/ # 可以查看到管道文件
文件權(quán)限
rwxrwxr-- : 三組rwx 分別表示 所有者豁鲤、所有組秽誊、其他人 的權(quán)限。
r : 表示可讀, 可以用數(shù)字 4 來表示
w : 標(biāo)識可寫 琳骡,可以用數(shù)字 2 來表示
x : 表示可執(zhí)行 锅论, 可以用數(shù)字 1 來表示
- :表示沒有相應(yīng)權(quán)限 可以用數(shù)字 0 來表示
修改權(quán)限的方法:
chmod o+w file1
chmod g-w file1
chmod go-w file1
chmod u=rwx file1
chmod 755 file1 # -rwxr-xr-x (755) 只有所有者才有讀,寫楣号,執(zhí)行的權(quán)限最易,組群和其他人只有讀和執(zhí)行的權(quán)限
chmod 644 # -rw-r--r-- (644) 只有所有者才有讀和寫的權(quán)限,組群和其他人只有讀的權(quán)限
# 其中:
# u 代表所有者(user)
# g 代表所有者所在的組群(group)
# o 代表其他人炫狱,但不是u和g (other)
# a 代表全部的人藻懒,也就是包括u,g和o
目錄上的權(quán)限:
r : 表示是否可以讀取目錄下的文件名
w : 表示是否可以在目錄下創(chuàng)建修改文件
x : 表示目錄是否可以被搜索
對于目錄而言视译,如果沒有x權(quán)限嬉荆,r和w權(quán)限就起不了作用。
chown : 更改文件的所有者和所有組
chown root:root file
chown root file
chown :root file
創(chuàng)建目錄:
# mkdir 目錄名
mkdir my_dir
# - p 參數(shù) : 遞歸創(chuàng)建目錄酷含,用于同時(shí)創(chuàng)建多級目錄
mkdir -p a/b/c/d
刪除:
rm : 刪除命令
rm -f file1 # 強(qiáng)制刪除文件
rm -r a/b/file1 # 刪除指定目錄及其下的所有文件和目錄
rm -rf a/b/file1 # 強(qiáng)制刪除指定目錄及其下的所有文件和目錄
# rm 命令太危險(xiǎn)鄙早,不建議使用
mv : 移動或重命令文件或目錄
mv SOURCE DEST #
mv test.log test.txt # 文件改名
mv test1.txt dir1/ #移動文件
mv test1.txt test2.tx test3.tx dir1/ #移動多個(gè)文件
cp : 復(fù)制
cp SOURCE DEST # 復(fù)制文件
cp -i SOURCE DEST # 如果遇到需要覆蓋的情況汪茧,則提示
cp -r dir1 dir2 # 若給出的源文件是一目錄文件,此時(shí)cp將遞歸復(fù)制該目錄下所有的子目錄和文件限番。此時(shí)目標(biāo)文件必須為一個(gè)目錄名
cp -p file1 file2 # 此時(shí)cp除復(fù)制源文件的內(nèi)容外陆爽,還將把其修改時(shí)間和訪問權(quán)限也復(fù)制到新文件中。
cp -rp dir1 dir2
cp -a # cp - p不能實(shí)現(xiàn)時(shí)可以試試
stat : 查看文件相信信息
stat filename
# Access time(atime):是指取用文件的時(shí)間扳缕,所謂取用慌闭,常見的操作有:使用編輯器查看文件內(nèi)容,使用cat命令顯示文件內(nèi)容躯舔,使用cp命令把該文件(即來源文件)復(fù)制成其他文件驴剔,或者在這個(gè)文件上運(yùn)用grep sed more less tail head 等命令,凡是讀取而不修改文件的操作粥庄,均衡改變文件的Access time.
# Modify time(mtime):是指修改文件內(nèi)容的時(shí)間丧失,只要文件內(nèi)容有改動(如使用轉(zhuǎn)向輸出或轉(zhuǎn)向附加的方式)或存盤的操作,就會改變文件的Modify time,平常我們使用ls –l查看文件時(shí)惜互,顯示的時(shí)間就是Modify time
# Change time(ctime):是指文件屬性或文件位置改動的時(shí)間布讹,如使用chmod,chown,mv指令集使用ln做文件的硬是連接训堆,就會改變文件的Change time.
cat : 鏈接文件后輸出文件內(nèi)容到屏幕上描验,其實(shí)就是查看文件內(nèi)容
cat -n #給每行內(nèi)容編號
cat -s #如果有多行空行(不包括空格),則縮成一行
wc :統(tǒng)計(jì)指定文件中的字節(jié)數(shù)坑鱼、字?jǐn)?shù)膘流、行數(shù),并將統(tǒng)計(jì)結(jié)果顯示輸出
-c 統(tǒng)計(jì)字節(jié)數(shù)鲁沥。
-l 統(tǒng)計(jì)行數(shù)呼股。
-m 統(tǒng)計(jì)字符數(shù)。這個(gè)標(biāo)志不能與
-c 標(biāo)志一起使用画恰。
-w 統(tǒng)計(jì)字?jǐn)?shù)彭谁。一個(gè)字被定義為由空白、跳格或換行字符分隔的字符串
sort : 排序
sort [-fbMnrtuk] [file or stdin]
選項(xiàng)與參數(shù):
-f :忽略大小寫的差異允扇,例如 A 與 a 視為編碼相同缠局;
-b :忽略最前面的空格符部分;
-n :使用『純數(shù)字』進(jìn)行排序(默認(rèn)是以文字型態(tài)來排序的)蔼两;
-r :反向排序甩鳄;
-u :就是 uniq ,相同的數(shù)據(jù)中额划,僅出現(xiàn)一行代表妙啃;
-t :分隔符崩瓤,默認(rèn)是用 [tab] 鍵來分隔暂吉;
-k :以那個(gè)區(qū)間 (field) 來進(jìn)行排序的意思
uniq : 忽略或報(bào)告重復(fù)行
uniq [-icu]
選項(xiàng)與參數(shù):
-i :忽略大小寫字符的不同火架;
-c :進(jìn)行計(jì)數(shù)
-u :只顯示唯一的行
cut命令可以從一個(gè)文本文件或者文本流中提取文本列竭钝。
選項(xiàng)與參數(shù):
-d :后面接分隔字符。與 -f 一起使用燥滑;
-f :依據(jù) -d 的分隔字符將一段信息分割成為數(shù)段渐北,用 -f 取出第幾列的意思;
-c :以字符 (characters) 的單位取出固定字符區(qū)間铭拧;
tee : 讀取標(biāo)準(zhǔn)輸入的數(shù)據(jù)赃蛛,并將其內(nèi)容輸出成文件。
cat sec.log | tee file1 # 讀取sec.log 搀菩,并生成file1文件
cat sec.log | tee - a file1 # 讀取sec.log 呕臂,并追加,
cat sec.log |tee file1 file2
history : 查看執(zhí)行過的命令肪跋。
history # 顯示最近1000條歷史命令
history 5 # 顯示最后5條命令
!number # number為history之后命令前的序號:執(zhí)行該條命令
!cat # 執(zhí)行最后一條以cat開頭的命令
more : 查看文件內(nèi)容歧蒋,空格翻頁,回車換行州既,按q退出谜洽。
less : 查看文件內(nèi)容,空格翻頁吴叶,回車換行阐虚,按q退出。
head : 輸出文件的開始的部分晤郑, 可以指定行數(shù) , 默認(rèn)顯示10行
head -n 5 file
tail : 查看文件尾部的內(nèi)容敌呈。默認(rèn)顯示最后10行
tail file1 # 顯示最后10行
tail -n 5 file1 #顯示最后5行
tail -f file1 # 動態(tài)監(jiān)控文件贸宏,一般用來監(jiān)控日志文件
用戶和用戶組
linux使用文件保存用戶信息 :
文件
# /etc/passwd 用戶賬戶信息造寝。
# /etc/shadow 安全用戶賬戶信息。
# /etc/group 組賬戶信息吭练。
# /etc/gshadow 安全組賬戶信息诫龙。
# /etc/default/useradd 賬戶創(chuàng)建的默認(rèn)值。
# /etc/skel/ 包含默認(rèn)文件的目錄鲫咽。
# /etc/login.defs Shadow 密碼套件配置签赃。
useradd: 添加用戶
# -c 備注 加上備注。并會將此備注文字加在/etc/passwd中的第5項(xiàng)字段中
# -d 用戶主文件夾分尸。指定用戶登錄所進(jìn)入的目錄锦聊,并賦予用戶對該目錄的的完全控制權(quán)
# -e 有效期限。指定帳號的有效期限箩绍。格式為YYYY-MM-DD孔庭,將存儲在/etc/shadow
# -f 緩沖天數(shù)。限定密碼過期后多少天,將該用戶帳號停用
# -g 主要組圆到。設(shè)置用戶所屬的主要組 www.cit.cn
# -G 次要組怎抛。設(shè)置用戶所屬的次要組,可設(shè)置多組
# -M 強(qiáng)制不創(chuàng)建用戶主文件夾
# -m 強(qiáng)制建立用戶主文件夾芽淡,并將/etc/skel/當(dāng)中的文件復(fù)制到用戶的根目錄下
# -p 密碼马绝。輸入該帳號的密碼
# -s shell。用戶登錄所使用的shell
# -u uid挣菲。指定帳號的標(biāo)志符user id富稻,簡稱uid
useradd user1 # 添加用戶 user1
useradd -d /home/userTT user2
userdel : 刪除用戶
userdel user1 #
userdel -r user1
# -r, --remove 用戶主目錄中的文件將隨用戶主目錄和用戶郵箱一起刪除。在其它文件系統(tǒng)中的文件必須手動搜索并刪除白胀。
# -f, --force 此選項(xiàng)強(qiáng)制刪除用戶賬戶唉窃,甚至用戶仍然在登錄狀態(tài)。它也強(qiáng)制刪除用戶的主目錄和郵箱纹笼,即使其它用戶也使用同一個(gè)主目錄或郵箱不屬于指定的用戶
usermod : 修改用戶信息
#-c<備注> 修改用戶帳號的備注文字纹份。
#-d登入目錄> 修改用戶登入時(shí)的目錄。
#-e<有效期限> 修改帳號的有效期限廷痘。
#-f<緩沖天數(shù)> 修改在密碼過期后多少天即關(guān)閉該帳號蔓涧。
#-g<群組> 修改用戶所屬的群組。
#-G<群組> 修改用戶所屬的附加群組笋额。
#-l<帳號名稱> 修改用戶帳號名稱元暴。
#-L 鎖定用戶密碼,使密碼無效兄猩。
#-s<shell> 修改用戶登入后所使用的shell茉盏。
#-u<uid> 修改用戶ID。
# -U 解除密碼鎖定枢冤。
usermod -G staff user2 # 將 newuser2 添加到組 staff 中
usermod -l newuser1 newuser # 修改 newuser 的用戶名為 newuser1
usermod -L newuser1 # 鎖定賬號 newuser1
usermod -U newuser1 # 解除對 newuser1 的鎖定
groupadd : 添加組
groupadd group1
groupadd -g 1000 group1 # 指定gid
**groupdel **: 刪除組
groupdel group1 # 刪除組
su與 sudo
su : 切換用戶鸠姨,沒有參數(shù)時(shí),默認(rèn)切換為root用戶淹真;
su # 切換為root
## 推薦
su - # 切換為root 并加載user1的環(huán)境配置
su - user1 # 切換為user1 并加載user1的環(huán)境配置
sudo : 讓當(dāng)前用戶暫時(shí)以管理員的身份root來執(zhí)行命令讶迁。
Ubuntu 默認(rèn)沒有啟用root用戶, 普通用戶執(zhí)行一些特殊的操作時(shí)核蘸,使用sudo就可以讓普通用戶以root用戶的身份執(zhí)行命令
sudo有一個(gè)配置文件: /etc/sudoers ; 通過修改配置文件可以讓指定用戶使用sudo命令
man sudoers # 查看man手冊
看下面幾行: # Host alias specification # 配置Host_Alias:就是主機(jī)的列表
Host_Alias HOST_FLAG = hostname1, hostname2, hostname3 # User alias specification # 配置User_Alias:就是具有sudo權(quán)限的用戶的列表
User_Alias USER_FLAG = user1, user2, user3 # Cmnd alias specification # 配置Cmnd_Alias:就是允許執(zhí)行的命令的列表巍糯,命令前加上!表示不能執(zhí)行此命令.命令一定要使用絕對路徑,避免其他目錄的同名命令被執(zhí)行客扎,造成安全隱患 ,因此使用的時(shí)候也是使用絕對路徑!
Cmnd_Alias COMMAND_FLAG = command1, command2, command3 祟峦,!command4 # 配置Runas_Alias:就是用戶以什么身份執(zhí)行(例如root,或者oracle)的列表
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3 # User privilege specification
# 配置權(quán)限的格式如下:
# USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG
root ALL=(ALL:ALL) ALL
如果不需要密碼驗(yàn)證的話徙鱼,則按照這樣的格式來配置
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG
格式為:用戶名(用戶別名) 主機(jī)名(主機(jī)別名)=[(運(yùn)行用戶或是Runas_Alias)可選] [tag可選] 可以執(zhí)行的命令(或Cmmd_Alias) 這樣描述語法很生硬宅楞,不易理解,舉例子
user1 host1 = /bin/kill # user1 可以在host1上使用命令/bin/kill
user1 host1 = NOPASSWD: /bin/kill # user1 可以在host1上使用命令/bin/kill 同時(shí)可以不必輸入密碼(這里就是使用了NOPASSWD # 這個(gè)tag,默認(rèn)是PASSWD)
user1 host1 = NOPASSWD: /bin/kill , PASSWORD: /bin/ls # user1 可以在host1上使用命令/bin/kill無需輸入密碼咱筛,但是使用/bin/ls則需要輸入密碼
user1 host1 = (opterator) /bin/kill # user1 可以在host1上使用命令/bin/kill但是必須是以operator用戶運(yùn)行這個(gè)命令搓幌,等價(jià)于# su -u opertor /bin/kill
user1 host1 = (:group_name) /bin/kill # user1 可以在host1上使用命令/bin/kill,且必須以group_name這個(gè)用戶群組里面的用戶來運(yùn)行。
%group_name host1 = /bin/kill # 所有g(shù)roup_name里面的用戶都可以在host1上執(zhí)行/bin/kill(Linux中一般代表整個(gè)用戶群組用# %group_name)
再舉個(gè)實(shí)際例子迅箩,我之前對sudo su這個(gè)命令不理解溉愁,為什么我可以直接就su到root用戶了呢,連密碼都不需要饲趋?查看了一下sudoers文件才知道原來里面有這么一行:
xxx ALL=NOPASSWD: /bin/su
alias : 給命令起別名
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
我們用到的終端默認(rèn)使用的shell 是bash 其他的shell 有dash 拐揭、csh 、tcsh奕塑、zsh等等
Shell本身是一個(gè)用C語言編寫的程序堂污,它是用戶使用Unix/Linux的橋梁,用戶的大部分工作都是通過Shell完成的龄砰。Shell既是一種命令語言盟猖,又是一種程序設(shè)計(jì)語言。作為命令語言换棚,它交互式地解釋和執(zhí)行用戶輸入的命令式镐;作為程序設(shè)計(jì)語言,它定義了各種變量和參數(shù)固蚤,并提供了許多在高級語言中才具有的控制結(jié)構(gòu)娘汞,包括循環(huán)和分支。
自定義賬戶的個(gè)性化環(huán)境的三個(gè)重要文件
.bash_history .bash_logout .bashrc
剛登錄Linux時(shí)夕玩,首先啟動 /etc/profile 文件 , ~/.bash_profile你弦、 ~/.bash_login、 ~/.profile燎孟。 如果 ~/.bash_profile文件存在的話禽作,一般還會執(zhí)行 ~/.bashrc文件。
關(guān)于各個(gè)文件的作用域缤弦,在網(wǎng)上找到了以下說明:
(1) /etc/profile: 此文件為系統(tǒng)的每個(gè)用戶設(shè)置環(huán)境信息,當(dāng)用戶第一次登錄時(shí),該文件被執(zhí)行. 并從/etc/profile.d目錄的配置文件中搜集shell的設(shè)置领迈。
(2)** /etc/bashrc:** 為每一個(gè)運(yùn)行bash shell的用戶執(zhí)行此文件.當(dāng)bash shell被打開時(shí),該文件被讀取(即每次新開一個(gè)終端碍沐,都會執(zhí)行bashrc)。
(3) ~/.bash_profile: 每個(gè)用戶都可使用該文件輸入專用于自己使用的shell信息,當(dāng)用戶登錄時(shí),該文件僅僅執(zhí)行一次衷蜓。默認(rèn)情況下,設(shè)置一些環(huán)境變量,執(zhí)行用戶的.bashrc文件累提。
(4) ~/.bashrc: 該文件包含專用于你的bash shell的bash信息,當(dāng)?shù)卿洉r(shí)以及每次打開新的shell時(shí),該該文件被讀取。
(5)** ~/.bash_logout: **當(dāng)每次退出系統(tǒng)(退出bash shell)時(shí),執(zhí)行該文件. 另外,/etc/profile中設(shè)定的變量(全局)的可以作用于任何用戶,而~/.bashrc等中設(shè)定的變量(局部)只能繼承 /etc/profile中的變量,他們是"父子"關(guān)系磁浇。(6) ~/.bash_profile: 也可能是 .profile是交互式斋陪、login 方式進(jìn)入 bash 運(yùn)行的~/.bashrc 是交互式 non-login 方式進(jìn)入 bash 運(yùn)行的通常二者設(shè)置大致相同,所以通常前者會調(diào)用后者。
PATH變量的設(shè)置
env : 查看當(dāng)前環(huán)境變量
export : 設(shè)置或顯示環(huán)境變量无虚。
source : 在當(dāng)前bash環(huán)境下讀取并執(zhí)行FileName中的命令缔赠。該filename文件可以無"執(zhí)行權(quán)限"
env
export name = "SN" source /etv/profile
echo echo會將輸入的字符串送往標(biāo)準(zhǔn)輸出。輸出的字符串間以空白字符隔開并在最后加上換行號友题。
-n 不要在最后自動換行
-e 若字符串中出現(xiàn)以下字符嗤堰,則特別加以處理,而不會將它當(dāng)成一般
文字輸出:
\a 發(fā)出警告聲度宦;
\b 刪除前一個(gè)字符踢匣;
\c 最后不加上換行符號;
\f 換行但光標(biāo)仍舊停留在原來的位置戈抄;
\n 換行且光標(biāo)移至行首离唬;
\r 光標(biāo)移至行首,但不換行划鸽;
\t 插入tab输莺;
\v 與\f相同;_
管道符
管道符 就是 | :他的作用是 將前一個(gè)命令的結(jié)果 交給后一個(gè)命令使用
例子:
cat -n qq.py | sord -rn
反向排序qq.py文件裸诽。
重定向
> 重定向模闲,如果的文件存在,則覆蓋文件內(nèi)容崭捍,文件不存在時(shí)創(chuàng)建文件
>> 重定向尸折,如果的文件存在,則向文件追加內(nèi)容殷蛇,文件不存在時(shí)創(chuàng)建文件
1> 標(biāo)準(zhǔn)正確輸出实夹,同上
1>> 標(biāo)準(zhǔn)正確輸出,同上
2> 標(biāo)準(zhǔn)錯(cuò)誤輸出粒梦,同上
2>> 標(biāo)準(zhǔn)錯(cuò)誤輸出亮航,同上
&> 標(biāo)準(zhǔn)正確輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出,同上 (相當(dāng)于同時(shí)實(shí)現(xiàn) 1> + 2> 兩個(gè)功能)
標(biāo)準(zhǔn)正確輸出例子:
cat qq.py 1> qw #把qq.py的內(nèi)容復(fù)制到qw中
cat qq.py 1>>qw #把qq.py的內(nèi)容追加到qw中
標(biāo)準(zhǔn)錯(cuò)誤輸出是什么呢匀们?比如把不存在的目錄或文件追加到一個(gè)叫qw的文件中:
cat asdad (回車)
cat: asdad: 沒有那個(gè)文件或目錄 (提示錯(cuò)誤的信息)
同樣缴淋,用>或者1>也會出現(xiàn)提示:
1 cat asdad > qw (回車)
2 cat: asdad: 沒有那個(gè)文件或目錄 (提示錯(cuò)誤的信息)
3 cat qw (回車)
4 (此行為空,即錯(cuò)誤的提示信息沒有存在qw這個(gè)文件中)
這個(gè)時(shí)候就需要"2>":
cat asdad 2> qw (回車)
cat qw (回車)
cat: asdad: 沒有那個(gè)文件或目錄 (這個(gè)時(shí)候錯(cuò)誤的信息已經(jīng)被寫入qw文件中了)
所以只有2>才能將要錯(cuò)誤信息加入到文件中泄朴,如果是正確的重抖,那么則不會加入。與1>的功能相反祖灰。
如果要把正確輸出寫在一個(gè)文件钟沛,錯(cuò)誤的寫在另一個(gè)文件呢:
cat py.qq 1>qw 2>ww #覆蓋
cat py.qq 1>>qw 2>>ww #追加
locate # 查找文件
locate /etc/sh # 搜索etc目錄下所有保含sh的文件。
locate ~/a # 搜索用戶主目錄下局扶,所有包含a的文件恨统。
locate -i ~/a # 搜索用戶主目錄下叁扫,所有包含a的文件,并且忽略大小寫畜埋。
locate這個(gè)數(shù)據(jù)庫需要更新莫绣,尤其是查找當(dāng)天創(chuàng)建的文件時(shí),直接查找可能找不到悠鞍,要先更新數(shù)據(jù)庫:sudo updatedb !!!
find
使用方法:
find path -option [-print ] [ -exec -ok command ] {} \; ###### 根據(jù)文件名查找 #######
find / -name filename 再根目錄里面搜索文件名為filename的文件
find /home -name "*.txt" find /home -iname "*.txt" # 忽略大小寫
###### 根據(jù)文件類型查找 #######
find . -type 類型參數(shù)
f 普通文件
l 符號連接
d 目錄
c 字符設(shè)備
b 塊設(shè)備
s 套接字
p Fifo ###### 根據(jù)目錄深度查找 #######
find . -maxdepth 3 -type f # 最大深度為3
find . -mindepth 2 -type f # 最小深度為2
######### 根據(jù)文件的權(quán)限或者大小名字類型進(jìn)行查找 ###########
find . -type f -size (+|-)文件大小 # +表示大于 -表示小于
b —— 塊(512字節(jié))
c —— 字節(jié)
w —— 字(2字節(jié))
k —— 千字節(jié)
M —— 兆字節(jié)
G —— 吉字節(jié) ######### 按照時(shí)間查找 ############
-atime(+|-)n # 此選項(xiàng)代表查找出n天以前被讀取過的文件对室。
-mtime(+|-)n # 此選項(xiàng)代表查找出n天以前文件內(nèi)容發(fā)生改變的文件。
-ctime(+|-)n # 此選項(xiàng)代表查找出n天以前的文件的屬性發(fā)生改變的文件狞玛。
-newer file # 此選項(xiàng)代表查找出所有比file新的文件软驰。
-newer file1 ! –newer file2 # 此選項(xiàng)代表查找比file1文件時(shí)間新但是沒有file2時(shí)間新的文件。
# 注意:
# n為數(shù)字心肪,如果前面沒有+或者-號锭亏,代表的是查找出n天以前的,但是只是一天之內(nèi)的范圍內(nèi)發(fā)生變化的文件硬鞍。 # 如果n前面有+號慧瘤,則代表查找距離n天之前的發(fā)生變化的文件。如果是減號固该,則代表查找距離n天之內(nèi)的所有發(fā)生變化的文件锅减。 # -newer file1 ! –newer file2中的!是邏輯非運(yùn)算符
######### 按照用戶/權(quán)限查找 ############
-user 用戶名:根據(jù)文件的屬主名查找文件。 -group 組名:根據(jù)文件的屬組名查找文件伐坏。 -uid n:根據(jù)文件屬主的UID進(jìn)行查找文件怔匣。 -gid n:根據(jù)文件屬組的GID進(jìn)行查找文件。 -nouser:查詢文件屬主在/etc/passwd文件中不存在的文件桦沉。 -nogroup:查詢文件屬組在/etc/group文件中不存在的文件 -perm 777: 查詢權(quán)限為777的文件
來自: http://man.linuxde.net/find ######## 查找時(shí)指定多個(gè)條件 ############
-o:邏輯或每瞒,兩個(gè)條件只要滿足一個(gè)即可。 -a:邏輯與纯露,兩個(gè)條件必須同時(shí)滿足剿骨。
find /etc -size +2M -a -size -10M ######### 對查找結(jié)果進(jìn)行處理 #############
-exec shell命令 {} \; -ok shell命令 {} \;
其中-exec就是代表要執(zhí)行shell命令,后面加的是shell指令埠褪,再后面的“{}”表示的是要對前面查詢到的結(jié)果進(jìn)行查詢浓利,最后的“\;”表示命令結(jié)束钞速。需要注意的是“{}”和“\”之間是要有空格的贷掖。而-ok選項(xiàng)與-exec的唯一區(qū)別就是它在執(zhí)行shell命令的時(shí)候會事先進(jìn)行詢問,-print選項(xiàng)是將結(jié)果顯示在標(biāo)準(zhǔn)輸入上
find /home -name “*.txt” -ok ls -l {} \;
find /home -name “*.txt” -ok rm {} \;
df
-T : 顯示文件系統(tǒng)類型
-h : 以能顯示的最大單位顯示
df -Th
du
-s : 如果后面是目錄玉工,只顯示一層
-h : 以能顯示的最大單位顯示
du dirname # 顯示dirname下所有目錄及其子目錄的大小
du -sh dirname 顯示dirname的大小
mount / umount 3 掛載和卸載設(shè)備
mount # 查詢掛在設(shè)備及屬性
# 掛載光盤
mount -t iso9660 /dev/cerom /mnt
mount /dev/sr0 /mnt
# 卸載光盤
umount /mnt
umount -l /mnt # 強(qiáng)制卸載
# 重新掛載設(shè)備
mount -o remount,rw /mnt # 重新掛載設(shè)備并設(shè)置rw屬性
# 掛載iso文件
mount a.iso -o loop /mnt
crontab
* * * * * command to be executed - - - - - -
| | | | | |
| | | | | --- 預(yù)執(zhí)行的命令 | | | | ----- 表示星期0~7(其中星期天可以用0或7表示) | | | ------- 表示月份1~12
| | --------- 表示日期1~31
| ----------- 表示小時(shí)1~23(0表示0點(diǎn)) ------------- 表示分鐘1~59 每分鐘用*或者 */1表示
-u user:用來設(shè)定某個(gè)用戶的crontab服務(wù)羽资;
-e:編輯某個(gè)用戶的crontab文件內(nèi)容。如果不指定用戶遵班,則表示編輯當(dāng)前用戶的crontab文件屠升。
-l:顯示某個(gè)用戶的crontab文件內(nèi)容,如果不指定用戶狭郑,則表示顯示當(dāng)前用戶的crontab文件內(nèi)容腹暖。
-r:從/var/spool/cron目錄中刪除某個(gè)用戶的crontab文件,如果不指定用戶翰萨,則默認(rèn)刪除當(dāng)前用戶的crontab文件脏答。
-i:在刪除用戶的crontab文件時(shí)給確認(rèn)提示
tar
-c :建立一個(gè)壓縮文件的參數(shù)指令(create 的意思);
-x :解開一個(gè)壓縮文件的參數(shù)指令亩鬼!
-t :查看 tarfile 里面的文件殖告!
特別注意 c/x/t 同時(shí)僅能存在一個(gè),因?yàn)椴豢赡芡瑫r(shí)壓縮與解壓縮雳锋。
-z :是否同時(shí)具有 gzip 的屬性黄绩?亦即是否需要用 gzip 壓縮?
-j :是否同時(shí)具有 bzip2 的屬性玷过?亦即是否需要用 bzip2 壓縮爽丹?
-v :壓縮的過程中顯示文件!這個(gè)常用辛蚊,但不建議用在背景執(zhí)行過程粤蝎!
-f :使用檔名,請留意袋马,在 f 之后要立即接文件名
-p :使用原文件的原來屬性(屬性不會依據(jù)使用者而變)
-P :可以使用絕對路徑來壓縮初澎!
-N :比后面接的日期(yyyy/mm/dd)還要新的才會被打包進(jìn)新建的文件中!
# 將當(dāng)前目錄下所有.txt文件打包并壓縮歸檔到文件this.tar.gz
tar czvf this.tar.gz ./*.txt # 將當(dāng)前目錄下的this.tar.gz中的文件解壓到當(dāng)前目錄
tar xzvf this.tar.gz ./
# 將整個(gè) /etc 目錄下的文件全部打包成為 /tmp/etc.tar
tar -cvf /tmp/etc.tar /etc # 僅打包虑凛,不壓縮碑宴!
tar -zcvf /tmp/etc.tar.gz /etc # 打包后,以 gzip 壓縮
tar -jcvf /tmp/etc.tar.bz2 /etc # 打包后卧檐,以 bzip2 壓縮
# 解壓文件
tar -xf a.tar.gz #
tar -xf a.tar.gz -C /tmp # 指定解包路徑
grep
格式:
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN] [FILE...]
參數(shù): -c --count #計(jì)算符合樣式的列數(shù)
-l --file-with-matches #列出文件內(nèi)容符合指定的樣式的文件名稱墓懂。
-v --revert-match #顯示不包含匹配文本的所有行。
-i --ignore-case #忽略字符大小寫的差別霉囚。
-o # 只顯示匹配到的關(guān)鍵字
-n # 現(xiàn)實(shí)行號
-E 使用正則表達(dá)式
初識正則表達(dá)式 (重要)
^ : 匹配開頭
$ : 匹配結(jié)尾
[] : 范圍匹配
[a-z] : 匹配所有小寫字母
[A-Z] : 匹配所有大寫字母
[0-9] : 匹配所有數(shù)字
[^0-9]: 匹配所有非數(shù)字 # ^號表示取反
[a-z]*:出現(xiàn)0個(gè)或多個(gè)小寫字母 捕仔,只和前面的第一個(gè)[]相關(guān)
[a-z]+:出現(xiàn)1個(gè)或多個(gè)小寫字母,即至少出現(xiàn)一次
[a-z]?:出現(xiàn)0次或1次小寫字母
. : 匹配單個(gè)字符(即任意一個(gè)字符出現(xiàn)0次或多次)
\.:表示一個(gè)點(diǎn)“.”
* : 表示*前面的內(nèi)容出現(xiàn)0次或多次
+ : 表示+前面的內(nèi)容出現(xiàn)1次或多次
? : 表示盈罐?前面的內(nèi)容出現(xiàn)0次或1次
cat a.txt |grep hat$ # 匹配以hat結(jié)尾的行
cat a.txt |grep ^hat # 匹配以hat開頭的行
cat a.txt | grep -E "[0-9]*" # 匹配有0到多個(gè)數(shù)字的行
cat a.txt | grep -E "[0-9]+" # 匹配有至少有1個(gè)數(shù)字的行
cat a.txt | grep -E "[0-9]榜跌?" # 匹配有0到1個(gè)數(shù)字的行
在python之禪中找所有以“S”開頭的行:
"."表示任意一個(gè)字符出現(xiàn)0次或多次:
如果要匹配一個(gè)郵箱地址呢?
grep -E "[0-9a-zA-Z]+@[0-9a-zA-Z]+\.[a-zA-Z]+" pychan.txt
sed : 流編輯器盅粪,一次處理一行內(nèi)容
sed [-nefr] [動作] [文件]
選項(xiàng)與參數(shù):
-n :使用安靜(silent)模式钓葫。在一般 sed 的用法中,所有來自 STDIN 的數(shù)據(jù)一般都會被列出到終端上票顾。但如果加上 -n 參數(shù)后,則只有經(jīng)過sed 特殊處理的那一行(或者動作)才會被列出來
-e :直接在命令列模式上進(jìn)行 sed 的動作編輯
-f :直接將 sed 的動作寫在一個(gè)文件內(nèi)隧土, -f filename 則可以運(yùn)行 filename 內(nèi)的 sed 動作
-r :sed 的動作支持的是延伸型正規(guī)表示法的語法激挪。(默認(rèn)是基礎(chǔ)正規(guī)表示法語法)
-i :直接修改讀取的文件內(nèi)容,而不是輸出到終端番刊。
動作說明: [n1[,n2]] 動作:
n1, n2 :不一定存在,一般代表選擇進(jìn)行動作的行數(shù)影锈,比如芹务,如果我的動作是需要在 10 到 20 行之間進(jìn)行的,則10,20[動作行為]
動作:
a :新增鸭廷, a 的后面可以接字串枣抱,而這些字串會在新的一行出現(xiàn)(目前的下一行)
c :取代, c 的后面可以接字串辆床,這些字串可以取代 n1,n2 之間的行佳晶!
d :刪除,因?yàn)槭莿h除啊佛吓,所以 d 后面通常不接任何咚咚宵晚;
sed "3d" file # 刪除第三行
sed "1,3d" # 刪除前三行
sed "1d;3d;5d" # 刪除1、3维雇、5行
sed "/^$/d" #刪除空行
sed "/abc/d" #刪除所有含有abc的行
sed "/abc/淤刃,/def/d" #刪除abc 和 def 之間的行,包括其自身
sed "1吱型,/def/d" #刪除第一行到 def 之間的行逸贾,包括其自身
sed "/abc/,+3d " # 刪除含有abc的行之后津滞,在刪除3行
sed "/abc/铝侵,~3d" #從含有abc的行開始,共刪除3行
sed "1~2d" # 從第1行開始触徐,每2行刪除一行咪鲜, 刪除奇數(shù)行
sed "2~2d" # 從第2行開始,每2行刪除一行撞鹉, 刪除偶數(shù)行
sed "$d" # 刪除最后一行
sed "/dd\|cc/d" 刪除有dd或者cc的行
i :插入疟丙, i 的后面可以接字串,而這些字串會在新的一行出現(xiàn)(目前的上一行)鸟雏;
p :列印享郊,亦即將某個(gè)選擇的數(shù)據(jù)印出。通常 p 會與參數(shù) sed -n 一起運(yùn)行
sed -n "3p" file # 顯示第三行
sed -n "1,3p" # 顯示前三行
sed -n "2,+3p" # 顯示第二行孝鹊,及后面的三行
sed -n "\$p" # 顯示最后一行
sed -n "1p;3p;5p" # 只顯示文件1炊琉、3、5行
sed -n "$=" # 顯示文件行數(shù)
s :替換又活,可以直接進(jìn)行取代的工作苔咪。通常這個(gè) s 的動作可以搭配正規(guī)表示法锰悼,例如 1,20s/old/new/g
sed "s/\(all\)/bb/" #把 all 替換為 bb
sed -r "s/(all)/bb/"
awk : 一個(gè)強(qiáng)大的文本分析工具,相對于grep的查找悼泌,sed的編輯松捉,awk在其對數(shù)據(jù)分析并生成報(bào)告時(shí)夹界,顯得尤為強(qiáng)大馆里。簡單來說awk就是把文件逐行的讀入,以空格為默認(rèn)分隔符將每行切片可柿,切開的部分再進(jìn)行各種分析處理鸠踪。
# 命令行調(diào)用方式
awk [-F field-separator] 'commands' input-file(s)
# commands 是真正awk命令,[-F域分隔符]是可選的复斥。 input-file(s) 是待處理的文件营密。 在awk中,文件的每一行中目锭,由域分隔符分開的每一項(xiàng)稱為一個(gè)域评汰。通常,在不指名-F域分隔符的情況下痢虹,默認(rèn)的域分隔符是空格被去。
# awk工作流程:
# 讀入有'\n'換行符分割的一條記錄,然后將記錄按指定的域分隔符劃分域奖唯,填充域惨缆,$0則表示所有域,$1表示第一個(gè)域,$n表示第n個(gè)域。默認(rèn)域分隔符是"空白鍵" 或 "[tab]鍵",所以$1表示登錄用戶丰捷,$3表示登錄用戶ip,以此類推坯墨。
cat /etc/passwd |awk -F ':' '{print $1}'
cat /etc/passwd |awk -F ':' '{print $1"\t"$7}'
awk 常用內(nèi)置變量
ARGC 命令行參數(shù)個(gè)數(shù)
ARGV 命令行參數(shù)排列, ARGV[0] ARGV[1]
ENVIRON 支持隊(duì)列中系統(tǒng)環(huán)境變量的使用
FILENAME awk瀏覽的文件名
FNR 瀏覽文件的記錄數(shù)
FS 設(shè)置輸入域分隔符病往,等價(jià)于命令行 -F選項(xiàng)
NF 瀏覽記錄的域的個(gè)數(shù)
NR 已讀的記錄數(shù)
OFS 輸出域分隔符
ORS 輸出記錄分隔符
RS 控制記錄分隔符
# 統(tǒng)計(jì)/etc/passwd:文件名捣染,每行的行號,每行的列數(shù)停巷,對應(yīng)的完整行內(nèi)容:
#awk -F ':' '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' /etc/passwd
# 使用printf替代print,可以讓代碼更加簡潔耍攘,易讀
awk -F ':' '{printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}' /etc/passwd
vi/vim : 強(qiáng)大的編輯器
**進(jìn)入vi的命令 **
vi filename :打開或新建文件,并將光標(biāo)置于第一行首
vi +n filename :打開文件叠穆,并將光標(biāo)置于第n行首
vi + filename :打開文件少漆,并將光標(biāo)置于最后一行首
vi +/pattern filename:打開文件,并將光標(biāo)置于第一個(gè)與pattern匹配的串處
vi -r filename :在上次正用vi編輯時(shí)發(fā)生系統(tǒng)崩潰硼被,恢復(fù)filename
vi filename....filename :打開多個(gè)文件示损,依次進(jìn)行編輯
移動光標(biāo)類命令
h :光標(biāo)左移一個(gè)字符
l :光標(biāo)右移一個(gè)字符
space:光標(biāo)右移一個(gè)字符
Backspace:光標(biāo)左移一個(gè)字符
k或Ctrl+p:光標(biāo)上移一行
j或Ctrl+n :光標(biāo)下移一行
Enter :光標(biāo)下移一行
w或W :光標(biāo)右移一個(gè)字至字首
b或B :光標(biāo)左移一個(gè)字至字首
e或E :光標(biāo)右移一個(gè)字至字尾
) :光標(biāo)移至句尾
( :光標(biāo)移至句首
}:光標(biāo)移至段落開頭
{:光標(biāo)移至段落結(jié)尾
nG:光標(biāo)移至第n行首
n+:光標(biāo)下移n行
n-:光標(biāo)上移n行
n:光標(biāo)移至第n行尾
H:光標(biāo)移至屏幕頂行
M:光標(biāo)移至屏幕中間行
L:光標(biāo)移至屏幕最后行
0:(注意是數(shù)字零)光標(biāo)移至當(dāng)前行首:光標(biāo)移至第n行尾
屏幕翻滾類命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:將第n行滾至屏幕頂部嚷硫,不指定n時(shí)將當(dāng)前行滾至屏幕頂部检访。
插入文本類命令
i :在光標(biāo)前
I :在當(dāng)前行首
a:光標(biāo)后
A:在當(dāng)前行尾
o:在當(dāng)前行之下新開一行
O:在當(dāng)前行之上新開一行
r:替換當(dāng)前字符
R:替換當(dāng)前字符及其后的字符始鱼,直至按ESC鍵
s:從當(dāng)前光標(biāo)位置處開始,以輸入的文本替代指定數(shù)目的字符
S:刪除指定數(shù)目的行脆贵,并以所輸入文本代替之
ncw或nCW:修改指定數(shù)目的字
nCC:修改指定數(shù)目的行
刪除命令
dd:刪除當(dāng)前行
u:撤銷
ctrl + r:撤銷 u 的操作
ndw或ndW:刪除光標(biāo)處開始及其后的n-1個(gè)字
do:刪至行首
保存退出
:wq
給每行加上編號
:set nu
number:顯示行號
report:顯示由面向行的命令修改過的數(shù)目
terse:顯示簡短的警告信息
warn:在轉(zhuǎn)到別的文件時(shí)若沒保存當(dāng)前文件則顯示NO write信息
nomagic:允許在搜索模式中医清,使用前面不帶“\”的特殊字符
nowrapscan:禁止vi在搜索到達(dá)文件兩端時(shí),又從另一端開始
mesg:允許vi顯示其他用戶用write寫到自己終端上的信息
**最后行方式命令 **
:n1,n2 co n3:將n1行到n2行之間的內(nèi)容拷貝到第n3行下
:n1,n2 m n3:將n1行到n2行之間的內(nèi)容移至到第n3行下
:n1,n2 d :將n1行到n2行之間的內(nèi)容刪除
:w :保存當(dāng)前文件
:e filename:打開文件filename進(jìn)行編輯
:x:保存當(dāng)前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:執(zhí)行shell命令command
:n1,n2 w!command:將文件中n1行至n2行的內(nèi)容作為command的輸入并執(zhí)行之卖氨,若不指定n1会烙,n2,則表示將整個(gè)文件內(nèi)容作為command的輸入
:r!command:將命令command的輸出結(jié)果放到當(dāng)前行
**寄存器操作 **
"?nyy:將當(dāng)前行及其下n行的內(nèi)容保存到寄存器筒捺?中柏腻,其中?為一個(gè)字母,n為一個(gè)數(shù)字
"?nyw:將當(dāng)前行及其下n個(gè)字保存到寄存器系吭?中五嫂,其中?為一個(gè)字母,n為一個(gè)數(shù)字
"?nyl:將當(dāng)前行及其下n個(gè)字符保存到寄存器肯尺?中沃缘,其中?為一個(gè)字母,n為一個(gè)數(shù)字
y$:復(fù)制符號到行尾的內(nèi)容
"?p:取出寄存器则吟?中的內(nèi)容并將其放到光標(biāo)位置處槐臀。這里?可以是一個(gè)字母逾滥,也可以是一個(gè)數(shù)字
ndd:將當(dāng)前行及其下共n行文本刪除峰档,并將所刪內(nèi)容放到1號刪除寄存器中。
行內(nèi)快速跳轉(zhuǎn)
^將光標(biāo)快速跳轉(zhuǎn)到本行的行首字符
$將光標(biāo)快速跳轉(zhuǎn)到本行的行尾字符
w將光標(biāo)快速跳轉(zhuǎn)到當(dāng)前光標(biāo)所在位置的后一個(gè)單詞的首字母
b將光標(biāo)快速跳轉(zhuǎn)到當(dāng)前光標(biāo)所在位置的前一個(gè)單詞的首字母
e將光標(biāo)快速跳轉(zhuǎn)到當(dāng)前光標(biāo)所在位置的后一個(gè)單詞的尾字母
文件內(nèi)行間快速跳轉(zhuǎn)
字符串查找操作
/word從上而下在文件中查找字符串“word”
?word 從下而上在文件中查找字符串“word”
n定位下一個(gè)匹配的被查找字符串
N定位上一個(gè)匹配的被查找字符串
替換操作
:s/old/new 將當(dāng)前行中查找到的第一個(gè)字符“old” 串替換為“new”
:s/old/new/g 將當(dāng)前行中查找到的所有字符串“old” 替換為“new”
:#,#s/old/new/g 在行號“#,#”范圍內(nèi)替換所有的字符串“old”為“new”
:%s/old/new/g 在整個(gè)文件范圍內(nèi)替換所有的字符串“old”為“new”
:s/old/new/c 在替換命令末尾加入c命令寨昙,將對每個(gè)替換動作提示用戶進(jìn)行確認(rèn)