計(jì)算機(jī)是由硬件和軟件構(gòu)成的祠肥。
硬件的五大部件:
- 運(yùn)算器 -|
| - 中央處理器 - 控制器 -|
- 存儲(chǔ)器 - 內(nèi)存(RAM)
- 輸入設(shè)備
- 輸出設(shè)備
軟件的兩大類別:
- 系統(tǒng)軟件 - 操作系統(tǒng)(內(nèi)核+工具程序)
- 應(yīng)用軟件
Linux系統(tǒng)的內(nèi)核是Free的
Linux系統(tǒng)最早的內(nèi)核是由Linus在1991年開發(fā)的
`Unix - MINIX - Linux - Android
- BSD - FreeBSD - Macintosh - macOS - iOS
- AIX(IBM)
- HP-UX(HP)
- Solaris(SUN)
我們能夠接觸到的操作系統(tǒng)除了Windows其他系統(tǒng)幾乎都是Unix的衍生品
類Unix操作系統(tǒng)
Shell - 殼程序 - 人機(jī)交互界面(人和計(jì)算機(jī)對(duì)話的窗口)
Shell中的工具和命令
who
- 查看登錄系統(tǒng)用戶的信息
last
- 查看最近使用過系統(tǒng)的用戶信息
clear
- 清除屏幕輸出
history
- 查看歷史命令
!歷史命令編號(hào)
- 重新執(zhí)行歷史命令
useradd/userdel
- 添加/刪除用戶
passwd
- 修改用戶口令
su - switch user
- 切換用戶
logout / exit
- 退出登錄
reboot / shutdown
- 重啟 / 關(guān)機(jī)
write 用戶名
- 給指定用戶發(fā)送消息
mesg y/n
- 是否接收別人發(fā)送的消息
wall
- 給所有人發(fā)出廣播消息
獲得幫助
man - manual
- 查看幫助手冊(cè)
命令 --help
- 獲得命令的幫助
pwd - print working directory
- 打印當(dāng)前工作目錄
cd - change directory
- 改變目錄
ls - list directory contents
- 列出目錄內(nèi)容
mkdir 目錄名
- make directory - 創(chuàng)建文件夾
rmdir 目錄名
- remove empty directory - 刪除空文件夾
touch 文件名
- 創(chuàng)建一個(gè)空文件
echo 內(nèi)容 > 文件名
- 將內(nèi)容重定向到指定的文件
wget http://www.sohu.com/
- 聯(lián)網(wǎng)通過URL獲取指定文件
rm
- 刪除文件
rm -rf
- 刪除文件夾
cp
- 拷貝文件或文件夾
mv
- 移動(dòng)文件或文件夾(重命名)
cat - concatenate
- 連接文件內(nèi)容(查看文件)
less / more
- 分屏查看
head / tail
- 查看文件前面/后面的部分
sort
- 給文件排序
uniq
- 去除相鄰的重復(fù)內(nèi)容
|
- 管道 - 連接兩個(gè)進(jìn)程(命令)- 把前一個(gè)進(jìn)程的輸出作為后面一個(gè)進(jìn)程的輸入
gzip / gunzip
- 壓縮/解壓縮
xz -z / xz -d
- 壓縮/解壓縮
tar是Linux系統(tǒng)下的歸檔文件(類似于Windows下的rar文件)
解歸檔 -tar -xvf 歸檔文件的名字
歸檔 - tar -cvf 歸檔文件的名字 需要?dú)w檔的文件
grep
- 搜索字符串
find
- 查找文件
MySQL - 關(guān)系型數(shù)據(jù)庫
Redis - NoSQL數(shù)據(jù)庫
CPython - 用C語言實(shí)現(xiàn)的Python解釋器
Jython - 用Java語言實(shí)現(xiàn)的Python解釋器
IronPython - 用C#語言實(shí)現(xiàn)的Python解釋器
PyPy - 用Python語言實(shí)現(xiàn)的Python解釋器
8bit -------> 1Byte
1024B -------> 1KB
1024KB -------> 1MB
1024MB -------> 1GB
1024GB -------> 1TB
1024TB -------> 1PB
《鳥哥的Linux私房菜》
Linux發(fā)行版本:
- Redhat
- CentOS
- Ubuntu
- Fedora
- SUSE
- Debian
Linux系統(tǒng)安裝軟件:
- 使用包管理工具 - yum / rpm / apt / deb
- 源代碼構(gòu)建安裝 - 下載源代碼用C語言構(gòu)建工具進(jìn)行構(gòu)建
- 直接下載二進(jìn)制程序 - 配置環(huán)境變量之后使用
Apache/Nginx ---> HTTP服務(wù)器 ---> 提供Web應(yīng)用
yum search nginx
- 搜索名為nginx的軟件包
yum -y install nginx
- 安裝名為nginx的軟件包
yum -y remove nginx
- 刪除名為nginx的軟件包
yum update nginx
- 更新名為nginx的軟件包
yum info nginx
- 查看名為nginx的軟件包相關(guān)信息
yum list installed
- 查看已經(jīng)安裝的軟件包
service nginx start
systemctl start nginx
- 啟動(dòng)Nginx
systemctl restart nginx
- 重啟Nginx
systemctl stop nginx
- 停止Nginx
systemctl status nginx
- 查看Nginx狀態(tài)
systemctl enable nginx
- 設(shè)置Nginx開機(jī)自啟
systemctl disable nginx
- 禁用Nginx開機(jī)自啟
更新Linux系統(tǒng)Python環(huán)境到3.7.1
安裝依賴項(xiàng)
yum -y install wget gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel下載源代碼
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz解壓縮和解歸檔
gunzip Python-3.7.1.tgz
tar -xvf Python-3.7.1.tar進(jìn)入文件夾生成構(gòu)建文件(Makefile)
cd Python-3.7.1
./configure --prefix=/usr/local/python37 --enable-optimizations構(gòu)建和安裝
make && make install修改環(huán)境變量
cd ~
vim .bash_profile
PATH=HOME/bin:/usr/local/python37/bin
斷開服務(wù)器連接,重新連接服務(wù)器
python3 --version注冊(cè)一個(gè)快捷方式(符號(hào)鏈接)
ln -s /usr/local/python37/bin/python3 /usr/bin/python3
硬鏈接 - 相當(dāng)于給文件增加了一個(gè)引用計(jì)數(shù)(不復(fù)制數(shù)據(jù)的備份)
軟鏈接(符號(hào)鏈接) - 相當(dāng)于是Windows下的快捷方式 可以為常用的文件和文件夾在用戶主目錄下創(chuàng)建軟鏈接來方便操作
ln 源文件 目標(biāo)文件
ps
- processes - 查看進(jìn)程狀態(tài)
ps -ef / ps -aux
top
- 類似于任務(wù)管理器
kill
- 結(jié)束進(jìn)程
登錄系統(tǒng)成功之后進(jìn)入Shell(殼程序)交互式環(huán)境
大多數(shù)Linux系統(tǒng)默認(rèn)的Shell都是bash
bourne again shell
Internet是基于TCP/IP模型的四層架構(gòu)
應(yīng)用層 - HTTP / FTP / SSH / QQ / SMTP / POP3
傳輸層 - TCP / UDP - 端到端傳輸服務(wù)
網(wǎng)絡(luò)層 - IP - 尋址和路由
物理鏈路層(網(wǎng)絡(luò)接口層) - 分幀和校驗(yàn)
端口是對(duì)IP地址的擴(kuò)展用來區(qū)分不同的服務(wù)
HTTP - TCP協(xié)議80端口
HTTPS - TCP協(xié)議443端口
SSH - TCP協(xié)議22端口
SMTP - TCP協(xié)議25端口
POP3 - TCP協(xié)議110端口
sftp root@1.2.3.4
sftp>
quit / exit / bye - 退出sftp
cd / lcd - 切換遠(yuǎn)端工作目錄 / 切換本地工作目錄
pwd / lpwd - 查看遠(yuǎn)端工作目錄 / 查看本地工作目錄
ls / lls - 查看遠(yuǎn)端目錄下的內(nèi)容 / 查看本地目錄下的內(nèi)容
mkdir / lmkdir - 在遠(yuǎn)端創(chuàng)建目錄 / 在本地創(chuàng)建目錄
put - 上傳文件(-r遞歸可以用來上傳文件夾)
get - 下載文件(-r遞歸可以用來下載文件夾)
Vim的工作模式:
- 命令模式 按i或a進(jìn)入編輯模式朵逝;按:/?進(jìn)入末行模式
- 編輯模式 按Esc進(jìn)入命令模式
- 末行模式 按回車回到命令模式
常用命令:
h j k l - 移動(dòng)光標(biāo)
gg / G / <n>G - 首行 最后一行 第n行
dd d0 d$ dw - 刪行 刪到行首 刪到行尾 刪單詞
yy - 復(fù)制
p - 黏貼
u - 撤銷
ZZ - 保存退出
q - 錄制宏/結(jié)束錄制
qa - 錄制宏并保存在寄存器a中
@a - 播放宏
100@a - 將指定的宏播放100遍
快捷鍵:
ctrl+e / ctrl+y 下移/上移一行
ctrl+f / ctrl+b 下移/上移一頁
ctrl+r 重做
ctrl+w 按兩下 - 切換窗口
末行模式:
set nu / set nonu
- 設(shè)置顯示/取消行號(hào)
set ts=4
- 設(shè)置制表的空格數(shù)
syntax on / off
- 打開/關(guān)閉高亮語法
map/imap/inoremap
快捷鍵 執(zhí)行的操作 - 映射快捷鍵
ls
- 顯示打開的文件
b <n>
- 切換文件
sp
- 水平拆分窗口
vs
- 垂直拆分窗口
w
- write - 保存
q
- quit - 退出
可以加!強(qiáng)制執(zhí)行
/正則表達(dá)式 - 正向搜索與正則表達(dá)式匹配的字符串
?正則表達(dá)式 - 反向搜索與正則表達(dá)式匹配的字符串
1,$s/正則表達(dá)式/替換的內(nèi)容/指示器 - 查找替換
c - 確認(rèn) - confirm
i - 忽略大小寫 - ignore case
e - 錯(cuò)誤靜默 - error
~/.vimrc - vim的配置文件
代碼提示 - 安裝一個(gè)名為YouCompleteMe插件
文件權(quán)限
-rw-r--r-- 1 root root hello.py
第一個(gè)字符
d - 文件夾
l - 軟鏈接
- 文件
第2-4個(gè)字符:文件的所有者對(duì)文件有何種操作權(quán)限
r - read - 讀
w - write - 寫
x - execute - 執(zhí)行
第5-7個(gè)字符:和文件所有者同組的用戶對(duì)文件有何種操作權(quán)限
第8-10個(gè)字符:其他用戶(不是所有者也不同組)的用戶對(duì)文件有何種操作權(quán)限
- 文件
chmod u+x,g+x,o+x 文件名
- 給文件加上執(zhí)行權(quán)限
chmod 755 文件名
chown 用戶名 文件名
- 改變文件所有者
chgrp 用戶組 文件名
- 改變文件用戶組
以太網(wǎng) - Ethernet
網(wǎng)絡(luò)相關(guān)命令:
ping
- 檢測(cè)網(wǎng)絡(luò)可達(dá)性 - ICMP
tracepath
- 檢查數(shù)據(jù)路由
ifconfig
- 檢查網(wǎng)絡(luò)接口(網(wǎng)絡(luò)適配器)
ip
- 查看配置網(wǎng)絡(luò)接口相關(guān)信息
netstat
- 查看網(wǎng)絡(luò)狀態(tài)(端口占用、進(jìn)程、已建立的連接)
sftp
- 安全網(wǎng)絡(luò)文件傳輸
scp
- 安全文件拷貝
scp 文件 用戶名@1.2.3.4:/目錄/文件名
命令 &
- 讓命令在后臺(tái)運(yùn)行
jobs
- 查看后臺(tái)運(yùn)行的進(jìn)程
fg %編號(hào)
- 讓命令回到前臺(tái)運(yùn)行
bg %編
號(hào) - 讓命令在后臺(tái)運(yùn)行
Ctrl+z
- 將前臺(tái)進(jìn)程暫停放到后臺(tái)
版本控制
1990s - 鎖定模式
- CVS - Concurrent Version System
- VSS - Visual Source Safe
2000s - 合并模式
- SVN - Subversion - 集中控制式
分布式版本控制系統(tǒng) - BitKeeper
2005年 - Git / Mercury
Linux系統(tǒng)安裝Git
方法一:yum -y install git
方法二:
- 下載git源代碼壓縮文件
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.19.1.tar.xz - 解壓縮和解歸檔
xz -d git-2.19.1.tar.xz
tar -xvf git-2.19.1.tar - 配置安裝路徑
cd git-2.19.1
./configure --prefix=/usr/local - 安裝git的網(wǎng)絡(luò)依賴庫
yum -y install libcurl-devel - 構(gòu)建和安裝
make && make install - 檢查安裝結(jié)果
git --version
Git的使用
創(chuàng)建git倉庫
git init
將代碼納入暫存區(qū)
git add 文件名
git add .
查看暫存區(qū)狀態(tài)
git status
git rm --cached 文件名
(從暫存區(qū)移除)
git checkout -- 文件名
(將暫存區(qū)文件恢復(fù)到工作區(qū))配置身份標(biāo)識(shí)
git config --global user.name "..."
git config --global user.email "..."
提交到本地倉庫
git commit -m '...'
查看提交日志
git log
git reflog
- 看到未來的版本(曾經(jīng)提交過又被撤回的版本)回到歷史版本
git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard 版本的哈希摘要
--hard參數(shù)是為了保持工作區(qū)和歷史版本的一致性