python學(xué)習(xí)筆記22_初學(xué)Ubuntu系統(tǒng)

python 筆記22

Ubuntu 介紹

1舰始、Ubuntu 安裝

2、Ubuntu 安裝VMware tools步驟

  1. 手動在Ubuntu系統(tǒng)中彈出光盤峻堰。
  2. 點(diǎn)擊虛擬機(jī)菜單【虛擬機(jī)】-【安裝VMware tools】讹开,根據(jù)提示完成下載。
  3. 下載完后Ubuntu桌面會有一個(gè)文件夾捐名,雙擊進(jìn)入文件夾萧吠,在文件夾中右鍵選擇【在終端中執(zhí)行】。
  4. 在終端輸入sudo ./wmware-install.pl桐筏,回車纸型,下面的步驟就是不斷選擇yes還有按回車。
  5. 完成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)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末讥巡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舔哪,更是在濱河造成了極大的恐慌欢顷,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捉蚤,死亡現(xiàn)場離奇詭異抬驴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缆巧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門布持,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人陕悬,你說我怎么就攤上這事题暖。” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵胧卤,是天一觀的道長唯绍。 經(jīng)常有香客問我,道長枝誊,這世上最難降的妖魔是什么况芒? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮叶撒,結(jié)果婚禮上绝骚,老公的妹妹穿的比我還像新娘。我一直安慰自己痊乾,他們只是感情好皮壁,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哪审,像睡著了一般。 火紅的嫁衣襯著肌膚如雪虑瀑。 梳的紋絲不亂的頭發(fā)上湿滓,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機(jī)與錄音舌狗,去河邊找鬼叽奥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛痛侍,可吹牛的內(nèi)容都是我干的朝氓。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼主届,長吁一口氣:“原來是場噩夢啊……” “哼赵哲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起君丁,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤枫夺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后绘闷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體橡庞,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年印蔗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扒最。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡华嘹,死狀恐怖吧趣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤再菊,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布爪喘,位于F島的核電站,受9級特大地震影響纠拔,放射性物質(zhì)發(fā)生泄漏秉剑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一稠诲、第九天 我趴在偏房一處隱蔽的房頂上張望侦鹏。 院中可真熱鬧,春花似錦臀叙、人聲如沸略水。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渊涝。三九已至,卻和暖如春床嫌,著一層夾襖步出監(jiān)牢的瞬間跨释,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工厌处, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鳖谈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓阔涉,卻偏偏與公主長得像缆娃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子瑰排,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容