python技術--Linux基礎01

# Linux基礎   

* Linux目錄結構  
* 常見命令  
* 用戶和組 
* 權限   

## 常用端口號   

```
http  80     smtp 25
https 443    pop3 110 
ssh 22       ftp 21
scp 22        
```

## ubuntu 遠程連接   需要開啓ssh 服務  

```
sudo apt-get install openssh-server  
service ssh start|stop|restart   
```

### 遠程連接工具 

 * xshell 
 * putty  
 * scrt 

### 命令提示符  

```
need888@need888-virtual-machine:~$ 

need888 用戶名
need888-virtual-machine 主機名 也叫 hostname  
~  用戶的家目錄    等同於 /home/need888   類似於windows 下面的 C:\Users\neyo
$ 普通用戶正在輸入  
# 超級管理員正在輸入    

root@need888-virtual-machine:~# 

普通用戶的家目錄  是 /home/普通用戶用戶名
管理員用戶的家目錄 是 /root 
```

> ubuntu 安全考慮  root 也就是超級管理員 沒有喚起  
>
> 普通用戶相關操作 沒有權限 需要 加sudo  
>
> 管理員 權限最大 不需要sudo   

### 喚起root 

```
sudo passwd root 
輸入兩次密碼 

su root  切換到root  
```

### 命令錯誤原因  

* Linux 嚴格區分大小寫   cd 切換目錄  CD 就會報錯  
* 命令多了空格  
* 有些命令 需要提前安裝 

### 常用快捷鍵   

| 快捷鍵                | 說明         |
| ------------------ | ---------- |
| ctrl+c             | 終止正在執行的命令  |
| ctrl+a             | 回到命令的開頭    |
| ctrl+e             | 回到命令的結尾    |
| ctrl+u             | 清空命令行      |
| ctrl+l 或者 clear 命令 | 清空這個屏幕 小清新 |
| tab                | 自動補齊       |

### 查看Linux 版本   

```
uname -r  內核發行號 
uname -v  內核版本號 
uname -a  顯示所有的信息   
```

### Ubuntu啓動過程   

```
開機
BIOS加電自檢  
找到MBR 引導分區    其實就是引導 boot 
啓動Linux內核 
初始化操作系統 

```

#### 什麼是掛載? 

```
U盤 移動硬盤 不能直接訪問  但是我們可以訪問 電腦中的 我的電腦  通過將u盤插到 電腦上  我們像訪問電腦上的文件一樣訪問u盤    這就叫掛載      
取消掛載  就是 彈出U盤 
```

## 查看Linux 目錄結構  

```
Linux 一切從根目錄出發   / 

sudo apt-get install tree   

tree -L 

.  根
├── bin   #存放 常用的命令  普通用戶也可以執行的命令  比如 ls cp      次重點  
├── boot  #系統啓動文件  和  一些核心文件 都在這裏  
├── cdrom #光驅
├── dev #device 設備  這裏存放 設備文件  比如硬盤  光驅            重點 
├── etc # 好比手機裏邊的設置  系統的配置文件都在這裏                 重點 
├── home #普通用戶的家目錄                                     重點
├── initrd.img -> boot/initrd.img-4.15.0-29-generic  這兩個 好比windows中的快捷方式 
├── initrd.img.old -> boot/initrd.img-4.15.0-29-generic
├── lib   # 系統的動態鏈接庫  好比windows 中的 C:\Windows\System32 下面的 .dll文件 所有的應用程序依賴這些
├── lib64 # 64位操作系統的動態鏈接庫 
├── lost+found #這個目錄系統自動生成 如果非法關機 這裏邊會存放 一些錯誤文件  記錄錯誤
├── media #媒體 光驅裏邊的內容 會自動掛載到這裏    
├── mnt # mount  掛載   用戶可以手動掛載到這個目錄下 windows 系統類型是NTFS Linux ext4 一般用來掛載文件系統類 型不同的文件     重點 常用 
├── opt  #大數據時代 hadoop Oracle 第三方軟件 一般安裝在這裏  裝X的軟件 
├── proc # 系統的相關信息 進程  狀態信息都在這裏  好比是 windows任務管理器 這些信息在內存裏 
├── root # 管理員用戶的家目錄                   重點 
├── run  # 進程文件一般存放到這裏                次重點  
├── sbin #  存放管理員用戶的命令 比如 shutdown  ifconfig  有些普通用戶 不具備權限   次重點
├── srv #相關服務信息 
├── sys # 跟系統相關的信息    不要動    
├── tmp #臨時目錄                   常用  
├── usr # 類似 C:\Program Files  軟件都安裝在這裏     非常重要  
    * bin  應用程序的執行目錄
    * sbin  超級管理員的命令
    * local 管理員安裝應用程序的目錄
├── var # 一般存放數據文件  日誌文件  也就是 能變大的文件         重點   
└── vmlinuz -> boot/vmlinuz-4.15.0-29-generic 也是個快捷方式    
```

### 常用命令  

```
cd 切換目錄 
ls 列出所有的文件及目錄  
shutdown  -h now 立即關機 
shutdown  -h 12:00 
poweroff 關機 
halt 立即關機  
init 0 關機    

reboot 重啓 
init 6 重啓

ifconfig 查看網卡信息  及 IP地址   
ping www.baidu.com   
```

### 幫助文件 非常重要    

* --help
* man    其實就是手冊 

```
命令  --help  就是查看 命令後邊的參數    

man 命令     回車 下一行   
q  退出      空格 下一頁  
```

## ls 命令  

```
-a 列出所有的目錄及文件   
-l 長列表的形式展示     
-al 

-rw-r--r--   1 root root     0 8月  28 11:04 test.txt
drwxrwxrwt  13 root root  4096 8月  28 10:49 tmp
drwxr-xr-x  11 root root  4096 7月  31 08:38 usr
drwxr-xr-x  14 root root  4096 7月  31 08:50 var
drwx------   3 root root  4096 7月  31 08:47 root
lrwxrwxrwx   1 root root    30 8月  27 15:18 vmlinuz -> boot/vmlinuz-4.15.0-29-generic

第一部分: d  -  l    表示文件類型 
    d 這是個文件夾  也叫目錄  - 文件    l 鏈接  表示這是個 快捷方式  
第二部分: rwxr-xr-x   文件目錄鏈接的權限    r read 讀  w write 寫  x exec 執行 
第三部分: 13   inode 節點號  
第四部分: root  所屬的用戶是root
第五部分: root  所屬的用戶組 是root 
第六部分: 4096  文件的大小 
第七部分: 7月  31 08:38 文件的修改時間   mtime
第八部分: usr  文件名

```

### 權限  

```
rwx     rwx       rwx
擁有者    所屬組   其他用戶
 r read  讀    4
 w write 寫    2
 x exec  執行  1
 - 沒有權限  
 t 瞭解  保護機制  
 
 1:  表示 擁有者的權限 
 2:  表示所屬組的權限 
 3.  表示其它用戶的權限  
 
 rwx r-x r-x  擁有者 可讀可寫可執行  所屬組 可讀可執行 不可寫  其它用戶可讀可執行 不可寫  
 755  
 rwx------ 700 
 rw-r--r-- 644 
 666   擁有者  可讀可寫不可知性   所屬組  可讀可寫不可執行 其他用戶 可讀可寫不可執行
```

### 軟連接 ln       

```
ln -s 給誰創建快捷方式  快捷方式的名字   

比如 ln -s /home /tmp/test
cd /tmp  
lrwxrwxrwx  1 need888 need888    5 8月  28 11:39 test -> /root

訪問 /tmp/test 跟訪問  /root  是一樣  
如果 /root 這個目錄丟失  
那麼快捷方式  也失去作用   
```

### 歷史命令

```
history   列出所有的歷史命令   包括行號  

!行號 自動執行歷史命令的第幾行 
```

## 目錄的管理 所有的目錄都是從/ 出發      

* 絕對路徑  cd /home/need888/Desktop/
* 相對路徑  cd ../../..  到根      

```
cd  切換目錄
pwd 查看當前位於哪個目錄
cd .. 回到上一級目錄  
cd . 代表當前目錄  
cd - 回到來源的目錄     兩個目錄並沒有關聯關係  .. 可能回不去   這時候 用   - 從哪裏過來 回哪裏 
cd ~ 回到用戶的家目錄  
cd   也是回到用戶的家目錄   
```

### 創建目錄  

```
mkdir kangbazi1 kangbazi2 kangbazi3  
mkdir 目錄名 目錄名1 目錄名2  支持批量創建  
mkdir -p taowa/xiaotaowa/xiaoxiaotaowa/wawa 遞歸創建目錄
mkdir -p 1/{2,3}/{4,5,6}/{7,8,9}
1
│   ├── 2
│   │   ├── 4
│   │   │   ├── 7
│   │   │   ├── 8
│   │   │   └── 9
│   │   ├── 5
│   │   │   ├── 7
│   │   │   ├── 8
│   │   │   └── 9
│   │   └── 6
│   │       ├── 7
│   │       ├── 8
│   │       └── 9
│   └── 3
│       ├── 4
│       │   ├── 7
│       │   ├── 8
│       │   └── 9
│       ├── 5
│       │   ├── 7
│       │   ├── 8
│       │   └── 9
│       └── 6
│           ├── 7
│           ├── 8
│           └── 9
```

### 刪除目錄  

```
rmdir 目錄名 目錄1 目錄2 刪除指定的目錄  支持批量刪除   目錄裏邊不能有內容 
rmdir -p kangbazi/python/1806/ 遞歸刪除   
rm -rf 目錄名  
   -r 遞歸刪除 
   -f 強制刪除  


```

## 文件的管理  

### 文件的創建 touch   

```
touch 文件名1 文件名2 文件名3 文件名4  文件創建 支持批量創建  
echo '我不會撩妹,你可不可以撩我以下' > 3.rmvb 將內容輸出到文件中    
echo '你男朋友掉了,快來領走,很好養活的' > 3.rmvb  會將上一個內容覆蓋掉   
echo '如果你覺得大海是最乾淨透徹的,那是你沒看過我的眼睛,我的眼裏只有你' >> 3.rmvb 
>  覆蓋 
>> 追加  


```

### 文件的移動 mv   

* 重命名
* 位置的移動  

```
sudo mv 1.txt /home/need888/ #將1.txt 移動到/home/need888/
sudo mv 6.png /root/  不在一個目錄下面  叫移動  
sudo mv 2.txt 22.docs 重命名   
sudo mv ../1.txt ./11.png 上一級目錄下面的 文件 移動到本目錄下   

sudo mv 文件名 目錄名  說明是移動 
sudo mv 文件名 文件名1 說明是重命名
sudo mv 文件名 目錄名/文件名  移動並重命名

```

### 文件的複製 cp  

```
root@need888-virtual-machine:/tmp# cp /tmp/520.rmvb /tmp/1314.haha  當前目錄下 複製一個文件   
root@need888-virtual-machine:/tmp# cp 520.rmvb 1314.666 跟上面效果一樣  
cp 1314.haha /home/need888/good/ 將文件複製到不同的目錄 
cp 1314.haha /home/need888/good/999.piyanping 複製到不同目錄的同時 將名字修改   
```

### 文件的刪除 rm    

```
rm 文件名  直接刪除
rm /tmp/4.avi 刪除別的目錄下面的文件  
rm -i 1314.haha 
   -i 刪除之前提示用戶 
rm -f 文件名 強制刪除 不提示
rm -rf 文件名、目錄名  強制刪除 遞歸刪除   
rm -rf * 刪除當前目錄所有
rm -rf *.py  刪除以.py 結尾的文件  
刪除之前  一定注意瞪大眼睛   
```

### 文件的查看  

```
cat 文件名  查看文件中的內容   正序顯示
tac 文件名  從後往前顯示 倒序顯示 

head -n 10 /etc/passwd 查看前10條的內容 
tail -n 5 /etc/passwd 查看後五條的內容  
tail -f cat 文件名  時時查看文件尾部的內容  一般這個命令用來查看日誌   

watch -d -n 1 cat /etc/passwd 每秒顯示一次文件的內容  


more 文件名   分頁查看內容  空格 下一頁   回車  下一行   q 退出   
less 文件名  跟 more一樣分頁查看   空格翻頁  b 向前分頁  q 退出  
stat 文件名  查看文件的詳細信息    

atime  訪問時間 
mtime 修改時間
ctime 修改狀態的時間  修改文件的元數據  
```

### 文件的查找   

```
find 從哪裏查找  -參數  
    -name 根據文件名查找  
sudo find / -name 1.mp3 如果不寫路徑  代表 在當前目錄下查找  
need888@need888-virtual-machine:/tmp$ find -name 1.mp3 表示在tmp目錄下面查找    
    -iname 根據文件名查找 不區分大小寫  
    -mtime 根據修改時間查找 + -  天爲單位  
sudo find /tmp -mtime -3 /tmp目錄下面  3天以內修改的  
sudo find /home/ -mtime +3  3天以上 
    -user  根據所屬的用戶查找
find /tmp -user 用戶名 文件和目錄所屬用戶是  用戶名的    
    -size 文件的大小查找  c k m g tb   c表示字節  
sudo find -size +10k  當前目錄下面 大於10k的  
    -maxdepth n 查看目錄的深度
find / -maxdepth 2 -name '1.mp3'  只查到 根目錄下面2級 然後根據name查找  
    -perm
find -perm 700 -maxdepth 1 -ls  查找當前目錄下 權限是700的  最大深度1級 然後列出相信信息 
    -ls 以列表的形式展示    
```

### grep  類似於正則表達式  

```
| 管道符    
cat /etc/passwd | grep 'root' 前面的輸出 作爲 後面的輸入   
前面先把內容輸出出來  然後 用grep 進行匹配  
grep  參數  
     -i 不區分大小寫 
     -c 只顯示符合條件的行數  
     -r 遞歸查找子目錄  
     -n 顯示行號  
     -l 列出符合 符合要求的文件名稱  
     need888@need888-virtual-machine:~$ grep -r -l 'need888' '/etc/passwd'
      /etc/passwd
      --include  '*.py' 
      --exclude  '*.py'
      --color 表示結果以不同的顏色顯示  
      
      ls -al | grep '^-' 在一個目錄下  只顯示文件  ^ 匹配開頭  

```

### 查找命令  

```
which ls -al 命令  顯示命令的絕對路徑  
whereis ls -al 命令   

```

### 統計文件內容  

```
wc -l 統計多少行  

wc -l /etc/passwd  
    43 /etc/passwd  總共有43行 
```

### awk 也叫流媒體編輯器   一行一行的讀  

```
:分割  
sshd:x:121:65534::/var/run/sshd:/usr/sbin/nologin
cat /etc/passwd | awk -F ':' '{print $3}'
以:分割 打印第三部分     然後進行分析   

```

### uniq  一般結合sort 排序 來使用   

```
     -i 忽略大小寫 
     -c 前面顯示出現的次數  
     -d 只顯示重複的行 一樣的輸入一個
     -D 只顯示重複的行 有幾個輸出幾個  
     
```

### sort 

```
sort  不寫參數 默認按照第一個字母排序  
-n 按照純數值
-k 指定的列排序 
-t 分隔符 
-r 逆向排序  

cat /etc/passwd | sort -t ':' -k 3 -n
指定: 分割符 對第三列 按照數值排序   
```

### 查看當前用戶名

~~~
whoami 回車
~~~

### 查看日曆 日期

cal  

cal  2018  2018全年日曆

date 顯示當前的日期和事時間

### 題目 查找你最常使用的10條命令  

答案:

history | awk '{print $2}' | sort | uniq -c | sort -r -n -k 1 | head -n 10

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章