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

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