Learning Linux

Learning Linux

Linux文件名

/bin

普通用戶有權(quán)限使用的二進(jìn)制可執(zhí)行命令

cat摩疑、cp、chmod df夕春、dmesg未荒、gzip专挪、kill及志、ls片排、mkdir、more速侈、mount率寡、rm、su倚搬、tar等冶共。

/sbin

主要放置一些系統(tǒng)管理的必備程式例如:cfdisk、dhcpcd每界、dump捅僵、e2f/sck、fdisk眨层、halt庙楚、ifconfig、ifup趴樱、 ifdown馒闷、init、insmod叁征、lilo纳账、lsmod、mke2fs捺疼、modprobe疏虫、quotacheck、reboot啤呼、rmmod议薪、runlevel、shutdown等媳友。

/boot

存放引導(dǎo)加載器(bootstrap loader)使用的文件

/etc

etc.是法語詞et cetra 的縮寫斯议,相當(dāng)于英語的 and so on.

存放系統(tǒng)管理和配置文件,其中包括了用戶信息文件/etc/passwd醇锚,系統(tǒng)初始化文件/etc/rc

/opt

用戶級的程序目錄哼御,可以理解為D:/Software,opt有可選的意思焊唬,這里可以用于放置第三方大型軟件(或游戲)恋昼,當(dāng)你不需要時,直接rm -rf掉即可赶促。在硬盤容量不夠時液肌,也可將/opt單獨掛載到其他磁盤上使用。

/usr

系統(tǒng)級的目錄鸥滨,可以理解為C:/Windows/嗦哆,/usr/lib理解為C:/Windows/System32谤祖。

/usr/local

用戶級的程序目錄,可以理解為C:/Progrem Files/老速。用戶自己編譯的軟件默認(rèn)會安裝到這個目錄下粥喜。

/usr/local/bin

本地增加的命令

/usr/local/lib

本地增加的庫根文件系統(tǒng)

/usr/bin

主要放置一些應(yīng)用軟體工具的必備執(zhí)行檔例如c++、g++橘券、gcc额湘、chdrv、diff旁舰、dig锋华、du、eject箭窜、elm供置、free、gnome绽快、 gzip芥丧、htpasswd、kfm坊罢、ktop续担、last、less活孩、locale物遇、m4、make憾儒、man询兴、mcopy、ncftp起趾、 newaliases诗舰、nslookup passwd、quota训裆、smb蝶溶、wget等欧募。

/usr/sbin

超級用戶使用的可執(zhí)行文件,放置一些網(wǎng)路管理的必備程式例如:dhcpd茅信、httpd每窖、imap睡陪、in.*d盖矫、inetd种柑、lpd、named、netconfig渔呵、nmbd怒竿、samba、sendmail厘肮、squid、swap睦番、tcpd类茂、tcpdump等

/home

存放所有用戶文件的根目錄

/lib

存放跟文件系統(tǒng)中的程序運行所需要的共享庫及內(nèi)核模塊。共享庫又叫動態(tài)鏈接共享庫托嚣,作用類似windows里的.dll文件巩检,存放了根文件系統(tǒng)程序運行所需的共享文件。

/tmp

用于存放各種臨時文件示启,是公用的臨時文件存儲點兢哭。

/dev

用于存放設(shè)備文件。/bus, /cpu, /disk夫嗓,比如迟螺,用戶可以通過訪問/dev/mouse/訪問鼠標(biāo)的輸入,就像訪問其他文件一樣

/media

放置的就是可移除的裝置舍咖。 包括軟碟矩父、光碟、DVD等等裝置都暫時掛載于此

/proc

proc是一個偽文件系統(tǒng)排霉,提供了<u>訪問內(nèi)核數(shù)據(jù)</u>的方法窍株,一般掛載在“/proc”目錄,其中的大部分內(nèi)容是只讀的

虛擬文件系統(tǒng)目錄攻柠,是系統(tǒng)內(nèi)存的映射球订。可直接訪問這個目錄來獲取系統(tǒng)信息瑰钮。

/var

用于存放運行時需要改變數(shù)據(jù)的文件冒滩,也是某些大文件的溢出區(qū),比方說各種服務(wù)的日志文件(系統(tǒng)啟動日志等浪谴。)等旦部。

/srv

主要用來存儲本機或本服務(wù)器提供的服務(wù)和數(shù)據(jù)

Linux文件命令

dmesg

用來顯示開機信息

開機信息保存在/var/log/dmesg

dd -- disk dump

復(fù)制文件并對原文件的內(nèi)容進(jìn)行轉(zhuǎn)換和格式化處理

df -- disk free

df -h  ./
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda10      189G   50G  131G  28% /

 df   ./
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda10     198170792 51487036 136594132  28% /

wc -> word count

用于查看文件的行數(shù),單詞數(shù)和字符數(shù)

wc filename
X Y Z  filename
  • X : 行數(shù)
  • Y: 單詞數(shù)
  • Z: 字節(jié)數(shù)
  • filename: 文件名
ls | wc -l # 查看有多少個文件

find

在當(dāng)前目錄下较店,查找文件為suchen的文件士八。

find . -name suchen
find . -iname suchen # 不區(qū)分大小寫

找出當(dāng)前目錄下,目錄名是tmp的目錄

find . -type d -name tmp

查找特定權(quán)限的文件

find . -type f -perm 777 # 權(quán)限是777
find . -type f -perm /a+x # 查找可執(zhí)行文件

查找指定用戶的文件

find . -user tuo 

查找特定時間修改的的文件

find . -type -f -mtime 3 # 三天前修改
find . -mtime +3 # 三天以前
find . -amin -3 # 三天以內(nèi)訪問過的

查找特定大小的

find . -type f -size +50MB -size -100MB # 大于50,小于100的文件

ln

  • 軟鏈接:新建一個node指向原來node梁呈, 是一類特殊的文件婚度,這個文件包含了另一個文件或目錄的路徑名。在對符號文件進(jìn)程進(jìn)行操作時,系統(tǒng)會自動把該操作轉(zhuǎn)換為對源文件的操作蝗茁。但刪除文件時僅僅刪除鏈接文件醋虏。
  • 硬鏈接:新建一個node指向原來node的block,和原node公共一個inode號哮翘,一個文件的另一個文件名颈嚼。引用的是文件在文件系統(tǒng)中的物理索引(node)。當(dāng)刪除原始文件時饭寺,硬鏈接不會被破壞阻课,因為它所引用的是文件的物理數(shù)據(jù)而不是文件在文件結(jié)構(gòu)中的位置。
ln -s /path/origin /path/link # -s創(chuàng)建一個軟鏈接
ln /path/origin /path/link # 創(chuàng)建一個硬鏈接

sort

排序

sort string.txt # 對字符串進(jìn)行排序
sort -n num.txt # 對數(shù)字進(jìn)行排序
sort -n -r num.txt # -r 倒序

unip

去重

uniq example.txt 
uniq -c example.txt # 統(tǒng)計重復(fù)次數(shù)

tr

替換或刪除字符

echo "ABC" | tr [:upper:] [:lower:]
echo "A B C" | tr [:space:] '\t'
echo "delete1234" | tr -d [:digit:]

mkdir

mkdir -p already_exist #創(chuàng)建一個已經(jīng)存在的目錄艰匙,不報錯

diff

比較文件區(qū)別

diff -yw 1.txt 2.txt # w表示比較時忽略空格限煞,y以并排的格式輸出比較結(jié)果
  • !表示由差異的行
  • + 表示第二個文件比第一個文件多出的行

who

查看當(dāng)前所有登錄用戶的信息

paste

paste -d'|,' file1 file2 file3 # -d 指定分割符

apt

apt = apt-get员凝、apt-cache 和 apt-config 中最常用命令選項的集合署驻。

增加了進(jìn)度條交互。

apt-cache search **packagename **搜索包
apt-cache show **packagename **獲取包的相關(guān)信息健霹,如說明旺上、大小、版本等
apt-get install packagename 安裝包
apt-get install packagename --reinstall 重新安裝包
apt-get -f install 修復(fù)安裝”-f = –fix-missing”
apt-get remove packagename 刪除包
apt-get remove packagename --purge 刪除包糖埋,包括刪除配置文件等
apt-get update 更新源
apt-get upgrade 更新已安裝的包

apt-get source** packagename** 下載該包的源代碼
apt-get clean 清理無用的包
apt-get autoclean 清理無用的包
apt-get check 檢查是否有損壞的依賴

uname

查看系統(tǒng)信息

uname -a # 查看所有信息

Linux網(wǎng)絡(luò)命令

ping

判斷網(wǎng)絡(luò)的的聯(lián)通和延遲抚官,得到域名解析

ping www.baidu.com
ping -I wlp3s0f0 www.baidu.com # 以特定網(wǎng)卡ping
ping -s 1452 www.baidu.com # ping特定包的大小
  • icmp_seq icmp包順序
  • ttl 生存周期
  • time 相應(yīng)時間

wlp3s0f0 無線網(wǎng)卡

enp2s0f1 有線網(wǎng)卡

traceroute/mtr

traceroute -n www.baidu.com # 不進(jìn)行域名解析
tracetoute -I wlp3s0f0 www.baidu.com # 以特定網(wǎng)卡
  • 第一跳 為網(wǎng)關(guān)
  • * 表示丟包

mtr是traceroute進(jìn)化版,IDE

host

簡單的域名解析

nslookup和dig

用于域名解析

lspci

查看所有pci設(shè)備信息阶捆,網(wǎng)卡硬件也是采用pci總線

lsusb

查看所有USB設(shè)備

ifconfig

interface configuration 查看接口信息

ifconfig -a # 查看所有接口信息
ifconfig wlp3s0f0 # 查看特定接口
ifconfig wlp3s0f0 up # 激活網(wǎng)卡
ifconfig wlp3s0f0 down # 關(guān)閉網(wǎng)卡
  • lo 環(huán)回接口
  • wlp3s0f0 無線網(wǎng)卡
  • enp2s0f1 有線網(wǎng)卡

ifup凌节,ifdown 啟用關(guān)閉接口

ip route

查看路由表,本機只是一個網(wǎng)絡(luò)中端洒试,第一行為網(wǎng)關(guān)

route

route -n # ip地址
route # 主機名

netstat

用于顯示各種網(wǎng)絡(luò)相關(guān)信息

socket又稱為嵌套子:unix,udp,tcp

應(yīng)用程序通常通過"套接字"向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求倍奢,使主機間或者一臺計算機上的進(jìn)程間可以通訊。

  • -t 列出tcp協(xié)議的鏈接
  • -u 列出udp協(xié)議的鏈接
  • -n 禁用域名解析功能
  • -l 選項列出正在監(jiān)聽的套接字
  • -p 打印進(jìn)程信息 (sudo)
  • -r 打印內(nèi)核路由信息
  • -i 打印網(wǎng)絡(luò)接口信息

ifup/down

啟用或禁用特定的網(wǎng)絡(luò)接口

網(wǎng)絡(luò)故障排查

網(wǎng)絡(luò)故障排查遵循從<u>底層到高層垒棋, 從自身到外部</u>的流程進(jìn)行卒煞。

  • 先查看網(wǎng)絡(luò)配置信息是否正確
    • IP地址
    • 子網(wǎng)掩碼
    • 網(wǎng)管
    • DNS
  • 查看到達(dá)網(wǎng)關(guān)是否聯(lián)通
    • ping網(wǎng)關(guān)IP地址
  • 查看DNS解析是否正常

top

top命令經(jīng)常用來監(jiān)控linux的系統(tǒng)狀況,比如cpu叼架、內(nèi)存的使用

  • 第一行:top - 當(dāng)前系統(tǒng)時間 up 系統(tǒng)運行了多長時間 , 幾個用戶登錄 users, load average后面的三個數(shù)分別是1分鐘畔裕、5分鐘、15分鐘的負(fù)載情況乖订。
  • 第二行:進(jìn)程數(shù)
  • 第三行:cpu使用情況:us用戶扮饶,sy內(nèi)核,id空閑乍构,wa IO等待甜无,hi硬中斷,si軟中斷
  • 第四行:內(nèi)存狀態(tài)
  • 第五行:交換分區(qū)
  • 第七行:PID:進(jìn)程id,PR:進(jìn)程優(yōu)先級岂丘,S:進(jìn)程狀態(tài) R=running, s=sleeping, t=stopped, z=zombie

輸入f陵究,查看縮寫的全稱

SSH

SSH為建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議

sshd服務(wù)使用SSH協(xié)議進(jìn)行遠(yuǎn)程控制,或在計算機之間傳送文件奥帘。而實現(xiàn)此功能的telnet(遠(yuǎn)程桌面) 是不安全的铜邮,使用明文傳送密碼

ssh

ssh pi@10.42.0.47   # 樹莓派系統(tǒng)的用戶名和局域網(wǎng) IP 地址.
ssh -p 10022 user@hostname # 使用10022端口,默認(rèn)為22端口


ssh u0_a364@10.146.92.15 -p 8022 # 連接termux

利用ssh運行命令

ssh user@hostname python3 < test.py

ssh user@hostname "your cmd"

配置文件

/etc/ssh/目錄下

  • ssh_config 客戶端配置文件
  • sshd_config 服務(wù)器端配置文件

一般配置服務(wù)端的配置文件ssh_config

啟動服務(wù)

  1. 命令行

    service sshd restart|start|stop|status|reload
    
  2. init.d 啟動腳本

    /etc/init.d 是 /etc/rc.d/init.d 的軟鏈接(soft link)寨蹋。

    /etc/init.d/sshd restart|start|stop|status|reload
    
  3. 配置開機自動啟動

chkconfig sshd on
chkconfig --list sshd
chkconfig sshd off

scp

把當(dāng)前一個文件copy到遠(yuǎn)程另外一臺主機上

scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root

把文件從遠(yuǎn)程主機copy到當(dāng)前系統(tǒng)

scp root@172.19.2.75:/home/root     /home/daisy/*.tar.gz 

keygen

# termux
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys tuo@hostname:~/tmp

# pc
cat ~/tmp/authorized_keys >> ~/.ssh/authorized_keys # 本機authorized_keys所存儲的是可以訪問本機的設(shè)備

硬盤到文件系統(tǒng)

硬盤接口分類

  • SATA (Serial Advanced Technology Attachment)
  • SAS (Serial Attached SCSI)
  • SCSI (Small Computer System Interface)
  • IDE (Integrated Drive Electronics)
  • USB

Linux中松蒜,IDE硬盤(hd)最多只能有59個邏輯分區(qū)(5-63),SATA接口硬盤最多只能有11個邏輯分區(qū)(5-15)

每種操作系統(tǒng)所配置的文件屬性權(quán)限不同钥庇,為了存放這些文件所需的數(shù)據(jù)牍鞠,需要將硬盤進(jìn)行格式化咖摹,以成為操作系統(tǒng)能夠利用的文件系統(tǒng)格式评姨。

不同操作系統(tǒng)使用的常見系統(tǒng)格式

  • Windows: FAT(Win98以前), FAT32, NTFS(Win2000之后)
  • Linux: Ext2, Ext3, Ext4, XFS
  • Mac: HFS

各種接口的硬盤在linux中的文件命名

  • SCSI,SATA,USB等接口文件的文件名:/dev/sd[a-p]/[1-15]
  • IDE接口的文件名: /dev/hd[a-d][1-63] hda表示IDE主硬盤,hdb表示IDE從硬盤
  • 打印機文件名: lp

Linux文件系統(tǒng)將權(quán)限與屬性放置在一個inode中 ( 一個文件只有一個inode萤晴, 同時記錄文件數(shù)據(jù)所存放的data block號碼)吐句,實際數(shù)據(jù)放在block區(qū)中 (一個文件可=可以有多個block)。另外店读,還有一個superblock記錄整個文件系統(tǒng)的整體信息嗦枢,包括inode和block總量,使用量和剩余量屯断。

與linux的ext2相比文虏,F(xiàn)AT文件系統(tǒng)沒有inode,只有儲存文件數(shù)據(jù)的block殖演。前面一個block存放下一個block的號碼氧秘,現(xiàn)在這種FAT文件系統(tǒng)主要用在U盤上

Win7系統(tǒng)支持NTFS和winFS文件系統(tǒng),而win8是全新的ReFS系統(tǒng)

etx2是非日志文件系統(tǒng)趴久,etx3是日志文件系統(tǒng)

在Linux中輸入輸出設(shè)備被看做特殊文件丸相,稱為設(shè)備文件。設(shè)備文件分為兩類彼棍,字符設(shè)備文件(c)和塊設(shè)備文件(b)灭忠。字符設(shè)備文件允許設(shè)備傳送任意大小的數(shù)據(jù),如終端座硕,打印機弛作,鼠標(biāo)等。塊設(shè)備文件允許設(shè)備傳送數(shù)據(jù)以數(shù)據(jù)塊為單位华匾,如硬盤缆蝉,光盤,usb

計算機硬盤的分區(qū)主要分為基本分區(qū)和擴展分區(qū),基本分區(qū)和擴展分區(qū)之和不能大于四個刊头,基本分區(qū)可以馬上被使用但不能再分區(qū)黍瞧。擴展分區(qū)必須在進(jìn)行分區(qū)后才能使用,由擴展分區(qū)再分下去就是邏輯分區(qū)原杂,邏輯分區(qū)沒有數(shù)量限制印颤。

fdisk

fdisk命令是磁盤及分區(qū)管理工具,在硬盤設(shè)備中創(chuàng)建穿肄、刪除年局、更改分區(qū)等操作通過fdisk命令

-l: 該選項后沒不跟設(shè)備名會直接列出所有磁盤設(shè)備以及分區(qū)表,加上設(shè)備名會列出該設(shè)備額分區(qū)表

不加-l會對該磁盤進(jìn)行分區(qū)

mkfs

將磁盤分區(qū)后咸产,使用mkfs命令可對其進(jìn)行格式化

fsck

當(dāng)系統(tǒng)非正常關(guān)機時矢否,或其他原因破壞了文件系統(tǒng),需要對文件系統(tǒng)進(jìn)行恢復(fù)脑溢,否則文件系統(tǒng)將不能正常引導(dǎo)

fsck /dev/sda1

df

檢查文件系統(tǒng)的磁盤空間占用情況僵朗。可以利用該命令來獲取磁盤占用了多少空間屑彻,目前還剩下多少空間

du

查看目錄下所有文件所占空間大小验庙,默認(rèn)以block數(shù)為單位

基礎(chǔ)命令

date

顯示或設(shè)置此時系統(tǒng)時間

cal

cal [month] /[year]

在屏幕上顯示日歷信息

su root

登錄root 賬號

cat

cat a |head -n 3000|tail -n +1000 >> b

將文件a的1000行到3000行之間內(nèi)容添加到b的后面

cat a |tail -n 1000 >> b

將文件a的最后1000行添加到b后面

cat a |head -n 1000 >> b

將文件a的前1000行添加到b后面

cat a |tail -n +1000 >> b

將文件a的1000行以后的添加到b后面

cat > b

將接下來鍵盤輸入的內(nèi)容覆蓋b

set

  • set -e

    當(dāng)命令以非零狀態(tài)退出,則退出shell

set -o noclobber

避免重定向重寫已存在的文件 +o 禁用noclobber功能

uniq

去掉重復(fù)行

diff

找不同

grep

-i 忽略大小寫

-v 顯示不包含字符串的文本行

-C 5 foo file 顯示file文件里匹配foo字串那行以及上下5行

-B 5 foo file 顯示foo及前5

-A 5 foo file 顯示foo及后5行

-l 只顯示文件名

grep -l main * # 列出當(dāng)前目錄下內(nèi)容含有main的文件

history

history 5 # 顯示最近執(zhí)行的5個命令
!547 # 重復(fù)執(zhí)行547號命令

killall

killall bash # 殺死所有bash程序

pkill

pkill -b -9 python # 殺死最近的python進(jìn)程
pkill -f string -9 # 殺死名字帶while的進(jìn)程

watch

watch -n 10 ps -au

Linux GUI

X Windows是一個窗口系統(tǒng)社牲,為GUI界面提供最基本的支持粪薛,而具體的窗口形式、窗口行為以及更多的圖形化支持搏恤,則需要借助于窗口管理器和桌面環(huán)境违寿。

現(xiàn)在常用的桌面環(huán)境為GNOME(基于GTK圖形庫)和KDE(基于Qt圖形庫),可以從中簡便地管理和使用應(yīng)用程序熟空、文件和系統(tǒng)資源

系統(tǒng)啟動過程

  • 加載BIOS

    加電自檢藤巢,根據(jù)BIOS內(nèi)設(shè)置的引導(dǎo)順序從硬盤、軟盤或CDROM中讀入主引導(dǎo)記錄即MBR(其中存放了預(yù)啟動信息痛阻、分區(qū)信息)菌瘪,被調(diào)到物理內(nèi)存的內(nèi)容是Boot Loader,具體到用戶PC機就是LILO或GRUB阱当。

  • 加載Boot Loader

    Boot Loader是在操作系統(tǒng)內(nèi)核運行之前運行的一段小朋友俏扩,通過這段小程序,可以初始化硬件設(shè)備弊添,建立內(nèi)存空間的映射圖录淡。

  • 加載內(nèi)核映像

    根據(jù)grub設(shè)定的內(nèi)核映像所在路徑,系統(tǒng)讀取內(nèi)存映像油坝,并進(jìn)行解壓縮嫉戚。

  • 執(zhí)行init進(jìn)程

    內(nèi)核被加載后刨裆,第一個運行的程序便是/sbin/init

  • 執(zhí)行/bin/login程序,進(jìn)入登錄狀態(tài)

    系統(tǒng)為用戶建立登錄接口彬檀,等待用戶輸入username和password

GRUB介紹

GRUB (GRand Unified Bootloader)是一個將引導(dǎo)裝載程序 (Boot Loader) 安裝到主引導(dǎo)記錄(MBR)的程序帆啃。這使得用戶能夠?qū)Σ僮飨到y(tǒng)進(jìn)行選擇,在內(nèi)核引導(dǎo)時可傳遞指令給內(nèi)核窍帝,或是在內(nèi)核引導(dǎo)前確定一些系統(tǒng)參數(shù)

Linux關(guān)機

shutdown

shutdown 16:50

shutdown +5 “Byebye” 五分鐘后關(guān)機打印拜拜

halt

相當(dāng)于shutdown -h 立即關(guān)機

halt執(zhí)行時努潘,kill掉所有應(yīng)用程序,然后調(diào)用sync(將所有內(nèi)存信息通過文件系統(tǒng)寫入硬盤)

reboot

和halt類似的重啟程序

相當(dāng)與shutdown -r

init

init進(jìn)程是所欲進(jìn)程的祖先坤学,其進(jìn)程號始終wenyi

日志管理

Linux系統(tǒng)有三個主要的日志子系統(tǒng)

  • 連接時間日志子系統(tǒng)

    由多個程序執(zhí)行疯坤,把記錄寫入到/var/log/wtmp/var/run/utmp中,login等程序更新wtmp和utmp文件深浮,使系統(tǒng)管理員能夠跟蹤用戶在何時登錄到系統(tǒng)中压怠。

  • 進(jìn)程統(tǒng)計日志子系統(tǒng)

    由系統(tǒng)內(nèi)核執(zhí)行,當(dāng)一個進(jìn)程終止時飞苇,為每個進(jìn)程向進(jìn)程統(tǒng)計文件中寫一個記錄菌瘫。進(jìn)程統(tǒng)計的目的是為系統(tǒng)中的基本服務(wù)提供命令使用統(tǒng)計

  • 錯誤日志子系統(tǒng)

    由syslogd (8) 執(zhí)行。各種系統(tǒng)守護(hù)進(jìn)程玄柠、用戶程序和內(nèi)核通過syslogd(8) 向文件/var/log/messages報告值得注意的事件突梦。

/var/log/dmesg

/var/log/dmesg文件保存內(nèi)核啟動的信息诫舅,可以看到內(nèi)核和各種驅(qū)動程序的加載羽利,加載硬件驅(qū)動時系統(tǒng)也會顯示出相應(yīng)的信息。

/var/log/messages

/var/log/messages文件是Linux系統(tǒng)中最全面的log文件刊懈,記錄了內(nèi)核和應(yīng)用程序發(fā)生錯誤時的信息和系統(tǒng)運行的一般信息这弧。

使用swatch文件分析日志

alias

給命令取別名

alias cdir='cd /home/user/dir'

gcc

  • 預(yù)處理階段

    gcc -E hello.c -o hello.i

  • 編譯階段

    gcc -S hello.i -o hello.s

  • 匯編階段

    gcc -c hello.s -o hello.o

  • 鏈接階段

    gcc hello.c -o hello

  • 將兩個文件編譯鏈接成可執(zhí)行文件

    gcc -o main mani.o stack.o

使用靜態(tài)鏈接庫

  • 生成.o文件

    gcc -c stack.c

  • 用ar命令歸檔,生成文件libstack.a

    ar -rc libstack.a stack.o

  • 編譯源文件main.c為目標(biāo)文件main.o虚汛,注意要把靜態(tài)庫頭文件的路徑加到-I參數(shù)里面

    gcc -I /includepath/ -o main.o -c main.c

  • 生成可執(zhí)行文件匾浪,注意把靜態(tài)鏈接庫文件的路徑加到-L參數(shù)里面,把庫文件名(去掉lib和.a)加到-L參數(shù)里面

    gcc -o main -L /libpath. main.o -L stack

-w 禁止所有警告信息

-Wall 允許發(fā)出gcc提供的所有有用的報警信息

-Werror 視警告為錯誤卷哩,出現(xiàn)任何警告即放棄編譯

-g 指示編譯程序在目標(biāo)代碼中加入供調(diào)試程序gdb使用的附加

git

初始化倉庫

git init # 通過git init命令把這個目錄變成Git可以管理的倉庫

將文件加入到倉庫的暫存區(qū)

git add readme.md # 將文件添加到倉庫蛋辈,實際上就是把文件修改添加到暫存區(qū)
git diff file # 比較工作區(qū)和暫存區(qū)之間的區(qū)別

將文件提交到當(dāng)前分支

git commit  -m "This is commit" # 把文件提交到倉庫 -m后面輸入的是本次提交的說明 commit 可以一次提交很多文件,實際上就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支将谊。
git log # 查看commit歷史記錄 

回歸到以前版本

get reset --hard HEAD^^ # 回到上兩個版本
get reset --hard 3a9864 # 回到指定版本號冷溶,查看log得到
git reflog # 記錄了每次commit和reset記錄,也可以通過這個命令的得到某個版本號的id
git checkout -- readme.md # 丟棄工作區(qū)中對readme.md的修改  --很重要

刪除文件

rm test # 從工作區(qū)刪除
git rm test # 從版本庫刪除文件
git commit # 確認(rèn)刪除

上傳到github

 git remote add origin git@github.com:michaelliao/learngit.git # 要關(guān)聯(lián)一個遠(yuǎn)程庫
 git push -u origin master # 推送最新修改

新的分支

git checkout -b dev # -b表示切換

上個語句等同于

git branch dev
git checkout dev

查看當(dāng)前的分支

git branch

我們把dev分支的工作成果合并到master分支上

git merge dev

刪除一個分支

git branch -d dev

上傳代碼

git push -u origin master
>> wangtuo0820@sina.cn
>> wangtuo96$

odps

od -c file

查看文件的實際內(nèi)容

fator

分解因數(shù) factor 999

fortune

打印一句名言 fortune-zh打印一首詩

tmux

  • ctrl+b C: create new window
  • ctrl+b , : rename the window
  • ctrl+b p: go previous window
  • ctrl+b n: go next window
  • ctrl+b t: show time
  • ctrl+b w: list all window
  • ctrl+b %: split the window vertically
  • ctrl+b ": split the window horizentally
  • ctrl+b : input command
  • ctrl+b d : detach session 不退出,在后臺繼續(xù)運行
  • ctrl+b &: exit session
  • ctrl+b ':

tmux new -s name 創(chuàng)建一個會話,命名為name

tmux attach -t name 重新連接上被分離的會話

tmux ls 列出所有創(chuàng)建的會話

Shell

有條件執(zhí)行

  • &&: 連接兩個命令尊浓, 前一命令執(zhí)行成功后才能執(zhí)行后一命令

  • ||: 前一命令執(zhí)行不成功才執(zhí)行后一命令

    ls ./test && cd test #當(dāng)存在test目錄逞频,cd到test目錄
    

引號(字符串)

  • 雙引號對字符串中出現(xiàn)的$,"栋齿,'苗胀,\進(jìn)行替換
  • 單引號不進(jìn)行替換襟诸,將字符串作為普通字符輸出
  • 反引號會將字符串作為命令執(zhí)行
echo 'I am $USER'
>> I am $USER
echo -e "I am \n$USER" # 對字符串進(jìn)行轉(zhuǎn)義
>> I am 
>> tuo
  • $#: 實際位置參數(shù)個數(shù)
  • *,\@: 命令行所有參數(shù)組成的字符串
  • $!: 上一個后臺命令對應(yīng)的進(jìn)程號
  • $$: 當(dāng)前進(jìn)程號
  • $? 上一命令的退出狀態(tài)
#!/bin/bash
echo "File Name: $0"
echo "First Parameter : $1"
echo "First Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2

read

echo -n "input:"
read $USER
echo "output: $USER"

read -p "input"
echo "output $REPLY"

LINE

逐行輸出文件中代碼

while read LINE
do
    echo "$LINE"
done<file

printf

printf "%s's average score is %.2f\n" "Lixiaohai" $((83+99+66)/3)

數(shù)組

student=("A" "B" "C")
score=(11 22 33)
for i in 0 1 2
do
    echo "${student[$i]} is : ${score[$i]} "
done

student[0]="E"
student[1]="F"
student[2]="G"
i=0
while [ $i -lt 5 ]
do
    echo ${student[$i]}
    i=$(($i+1)) # i++
done
echo "${#student[*]}"

獲取所有元素

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[*]}"
echo "Second Index: ${NAME[@]}"

獲取數(shù)組長度

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[*]}"
echo "Second Index: ${NAME[@]}"
#取得數(shù)組元素的個數(shù)
length=${#NAME[@]}
echo -e $length "\n" # len of NAMe
#或者
length=${#NAME[*]} # len of NAME
echo -e $length "\n"
#取得數(shù)組單個元素的長度
lengthn=${#NAME[0]} # 4 length of Zara
echo -e $lengthn "\n"

判斷

是否存在且為字符設(shè)備

if test -r $FILENAME;then
  echo "is a file"
fi

數(shù)值的大于等于

if test n1 -ge n2; then
  echo ""
fi

字符串的等于

if test str = str;then
  echo ""
fi

邏輯

# 與 -a
if test n1 -ge n2 -a n1 -lt 70;then
  echo ""
fi
# 或 -o
if test n1 -ge n2 -o n1 -lt 70;then
  echo ""
fi

判斷目錄

if test ! -d $DIR; then
  echo "not a dir"
fi

?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末基协,一起剝皮案震驚了整個濱河市歌亲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌澜驮,老刑警劉巖应结,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異泉唁,居然都是意外死亡鹅龄,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門亭畜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扮休,“玉大人,你說我怎么就攤上這事拴鸵$枳梗” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵劲藐,是天一觀的道長八堡。 經(jīng)常有香客問我,道長聘芜,這世上最難降的妖魔是什么兄渺? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮汰现,結(jié)果婚禮上挂谍,老公的妹妹穿的比我還像新娘。我一直安慰自己瞎饲,他們只是感情好口叙,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嗅战,像睡著了一般妄田。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上驮捍,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天疟呐,我揣著相機與錄音,去河邊找鬼厌漂。 笑死萨醒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苇倡。 我是一名探鬼主播富纸,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼囤踩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了晓褪?” 一聲冷哼從身側(cè)響起堵漱,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涣仿,沒想到半個月后勤庐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡好港,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年愉镰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钧汹。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡丈探,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拔莱,到底是詐尸還是另有隱情碗降,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布塘秦,位于F島的核電站讼渊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏尊剔。R本人自食惡果不足惜爪幻,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赋兵。 院中可真熱鬧笔咽,春花似錦搔预、人聲如沸霹期。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽历造。三九已至,卻和暖如春船庇,著一層夾襖步出監(jiān)牢的瞬間吭产,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工鸭轮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留臣淤,地道東北人。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓窃爷,卻偏偏與公主長得像邑蒋,于是被迫代替她去往敵國和親姓蜂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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

  • 第一章 1.Linux是一套免費使用和自由傳播的類UNIX操作系統(tǒng)医吊,它可以基于Intel x86系列處理器以及Cy...
    yansicing閱讀 5,419評論 0 9
  • Linux是一個操作系統(tǒng)钱慢,跟windows一樣(介于應(yīng)用程序和硬件設(shè)備之間),主要特點是:開源卿堂、穩(wěn)定束莫、可多用戶同時...
    samjinzhang閱讀 1,460評論 1 7
  • Linux習(xí)慣問題: 在vim編輯時,按了ctrl + s后草描,再按ctrl + q就可以繼續(xù)執(zhí)行了览绿。ctrl + ...
    光著腳的鞋閱讀 4,506評論 0 16
  • feisky云計算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,846評論 0 5
  • 簡歷寫作注重剛?cè)岵?jì)、投懷送抱揍诽,既要看起來美觀漂亮诀蓉,又要正對面試官胃口。本文主要針對大三大四的學(xué)生以及工作1-2年...
    王大堯閱讀 1,985評論 0 36