一、Bash Shell
1、什么是Bash Shell
# 命令的解释,用来翻译用户输入的命令
2、使用Bash Shell
单条命令添加一个用户
# useradd gdx
使用脚本添加用户
[root@oldboy-pythonedu ~]# cat useradd.sh #!/usr/bin/bash for i in {1..100} do useradd gdx_$i echo "gdx_$i is ok!!" done
3、登录Linux Bash提示符
[root@pythonedu ~]# root: 表示当前登录Bash Shell窗口的用户是.. python: 当前系统的主机名称 ~: 当前用户所处的路径 ~ 表示的是当前用户的家目录 #: 提示符 # 表示超级管理员 $ 表示普通用户
4、Bash Shell基础语法
命令 选项 参数 ls # 命令 查看当前目录下的所有文件 ls -l # 命令 + 选项 选项 可以改变命令输出结尾呈现的方式 ls -l /tmp # 命令 + 选项 + 参数 具体看哪个路径下的所有文件,默认看当前目录.
5、Bash Shell特性
5.1、tab不全
tab补全:
命令补全
路径补全
5.2、history
history: 执行的命令历史 -c: 清空 -d: 删除指定的一条记录 -w: 将历史记录落到指定的文件中
5.3、alias别名
# 临时操作 alias cat_network='cat /etc/sysconfig/network-scripts/ifcfg-ens32' # 永久生效 ( 落到某个文件中 ) [root@oldboy-pythonedu ~]# echo "alias cat_network='cat /etc/sysconfig/network-scripts/ifcfg-ens32'" >> /etc/bashrc unalias: 临时取消别名 [root@oldboy-pythonedu ~]# unalias cat_network
5.4、unalias临时取消别名
[root@oldboy-pythonedu ~]# unalias cat_network
5.5、快捷键
ctrl+ a,e,c,l,d,w,k,u,r ctrl+a: 命令行光标跳转到行首 ctrl+e: 命令行光标跳转到行尾 ctrl+l: 清屏, clear ctrl+c: 中断bash窗口 前台正在运行的程序 ctrl+u: 删除光标之前的 ctrl+k: 删除光标之后的 ctrl+w: 按照单词删除 ctrl+ <--> 按照单词跳转光标
6、文件管理
目录结构:
Windows: 多跟 c: d: e:
Linux:单根 /
""" bin: 普通用户可以执行的命令 sbin: 管理用户可以执行的命令 home: 普通用户的家目录: /home/USERNAME root: 管理员用户的家目录 boot: 存放的启动系统时要加载的文件 grub引导菜单,内核文件 dev: 设备 ( 硬盘 光盘 终端 ) /dev/random: 产生随机数 ( 摇钱树) /dev/null: 黑洞 etc: 配置 网卡配置,系统配置,服务配置 /etc/hostname 主机名称 /etc/sysconfig/network-scripts/ #网卡的配置信息 lib lib64 proc 实时反馈当前系统的状态. [ 汽车的仪表盘 ] tmp 临时目录,谁上传只能谁删除 [ ] usr bin sbin local --> C:Program Files tmp ---> /var/tmp var 可变的目录 log pid: 存放服务进程的ID ---> python ---> 30119 --> /var/pid/python.pid ( 30119 ) """
二、基本命令
1、touch创建文件
# 在/home下创建一个hello.py文件. [root@oldboy-pythonedu ~]# touch /home/hello.py [root@oldboy-pythonedu ~]# ls -l /home/hello.py -rw-r--r--. 1 root root 0 9月 25 11:48 /home/hello.py
2、cp复制
# 将/home/hello.py 复制到 /tmp [ 最好能修改一下名称为 /tmp/test.py ] cp: 复制文件或者目录 -v: 显示拷贝的结果. -r: 递归拷贝 -i: [root@oldboy-pythonedu ~]# cp /home/hello.py /tmp/ #直接拷贝 [root@oldboy-pythonedu ~]# cp /home/hello.py /tmp/test.py #拷贝后修改名称
3、rm删除
# 将/home/hello.py 文件删除 rm: 删除文件或者目录 -f: 强制删除,不提示 -r: 递归删除 [ 删除目录 ] [root@oldboy-pythonedu ~]# rm -f /home/hello.py [root@oldboy-pythonedu ~]# rm -fr /tmp/etc
4、cat、head、tail、lessmore查看 /tmp/test.py 中的内容
cat: 查看文件内容: -A: 查看是否有特殊字符 -n: 查看文件的行号 [root@oldboy-pythonedu ~]# cat /tmp/hello.py
head: 查看文件内容: 仅查看头部10行. [root@oldboy-pythonedu ~]# head /etc/passwd [root@oldboy-pythonedu ~]# head -1 /etc/passwd
tail: 查看文件内容: 仅查看尾部10行. -f: 实时追踪文件尾部的变化 [root@oldboy-pythonedu ~]# tail -f /var/log/messages
lessmore 分页查看 [root@oldboy-pythonedu ~]# less /etc/services [root@oldboy-pythonedu ~]# more /etc/services
5、mkdir创建目录
mkdir #创建目录 -p: 递归创建 -v: 显示创建的过程 [root@oldboy-pythonedu ~]# mkdir /opt/python_dir [root@oldboy-pythonedu ~]# mkdir -pv /opt/dir1/dir2/dir3/dir4
6、mv 移动文件或目录重命名
mv: 移动文件或目录 [root@oldboy-pythonedu ~]# mv /tmp/hello.py /opt/ [root@oldboy-pythonedu ~]# mv /tmp/hello.py /tmp/first.py
7、which查找一个命令的全路径
which #查找一个命令的绝对路径 [root@oldboy-pythonedu ~]# which cat /usr/bin/cat [root@oldboy-pythonedu ~]# which head /usr/bin/head whereis [root@oldboy-pythonedu ~]# whereis -b head head: /usr/bin/head
8、下载和上传
下载: 1.从互联网下载资源到服务器 2.从服务器下载资源到本地 上传: 从本地上传内容到服务器 rz 从本地电脑上传文件到server ( 只能上传文件,不能上传目录或文件夹, 最大限制4G ) sz 从server下载文件到本地电脑 [root@oldboy-pythonedu ~]# yum install lrzsz -y wget 获取互联网上的资源至本地 yum install wget -y wget http://nginx.org/download/nginx-1.16.1.tar.gz wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
9、压缩与打包
1.什么是压缩包? 压缩包是一个特殊的文件,将多个文件或目录整合在一个文件中. 2.为什么要使用压缩包? 1.便于传输 2.压缩后的体积会变小. 28GB文件 ---> 6GB 3.实现打包与压缩有哪些工具: Windows: zip tar Linux: zip tar.gz 4.压缩包如何实现: gzip: ( 仅针对文件 ) [root@oldboy-pythonedu ~]# gzip /etc/yum.repos.d/CentOS-Base.repo #压缩 ( 源文件不见了 ) [root@oldboy-pythonedu ~]# zcat /etc/yum.repos.d/CentOS-Base.repo.gz #查看 [root@oldboy-pythonedu ~]# gzip -d /etc/yum.repos.d/CentOS-Base.repo.gz #解压 zip: ( 针对文件或目录 ) [root@oldboy-pythonedu ~]# yum install zip unzip -y [root@oldboy-pythonedu ~]# zip -r yum_local.zip /etc/yum.repos.d/ /tmp/ [root@oldboy-pythonedu ~]# unzip yum_local.zip -d /opt/ tar.gz: c: 创建 z: 压缩类型 f: 指定文件名称 x: 自动识别文件类型 创建: [root@oldboy-pythonedu ~]# tar czf etc.tar.gz /etc/ /home/ 解压: [root@oldboy-pythonedu ~]# tar xf etc.tar.gz 指定解压路径: [root@oldboy-pythonedu ~]# tar xf etc.tar.gz -C /mnt/
10、vim Linux编辑工具
2.1) 什么是vim 文本文件的编辑工具, 和windows的notead++一样. 2.2) 为什么要使用vim Linux一切皆为文件,需要修改配置文件,让软件按照我们的期望值运行,所以需要使用编辑工具. !!!! 2.3) VI和VIM的区别 没有什么区别, vim有高亮显示, 其他无区别.. 和 windows 记事本与notepad++区别. vim需要安装 yum install vim -y
2.3) VI/VIM模式 1.命令模式 复制: yy 粘贴: p 撤销: u 删除: dd | D 删除本行光标后的所有内容 剪贴: ( 删除+粘贴 ) 光标: 文件首行: gg | 文件尾部: G = shift+g 翻页: ctrl+f 向下翻页 ctrl+b 向上翻页 行首: ^ | 0 收尾: $ 进入编辑模式: i: 直接进入编辑模式 o: 插入新的行,并且进入编辑模式 A: 光标移动到行尾,并进入编辑模式 a: 光标向后移动一位,并进入编辑模式 快速切换到你想要的行: vim file.py +Number 200gg 快速跳转到200行 :200 快速跳转到200行 2.编辑模式 ( 编写代码 ) 3.末行模式 保存: :w 退出: :q 保存&退出: :wq 搜索: /search n 向下查找 N 向上查找 替换: :%s#over#OOVER#g 替换整个文件中over为 OOVER :1,5s#over##OOVER#g # 号 可以是其他的特殊符号 s@@@g
shift+v: 行模式 复制y 删除 d ctrl+v: 块模式 加注释: shift+i --> 输入#号注释符 ---> 按 ESC 删注释: 选中后, 按下 x 删除一个字符
1.开启行号: :set number :set nu 2.搜索忽略大小写: :set ic 3.取消高亮: :noh
1.打开了一个文件,做了修改,关闭了会话.
E: 直接编辑,会忽略掉关闭会话之前写的内容
R: 将之前编写没有来得及保存的内容显示出来,确认没有问题,保存,退出.
当再次进入文件,可以选择 D 删除交换的swp文件. 则不会在有提示.,
vim练习
[root@www ~]# cat proxy.conf server { Listen 8080; Server_Name vim.OldboyEDU.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $http_host; proxy_set_header X-Forward-for; proxy_intercept_errors on; proxy_next_upstream error timeout; proxy_next_upstream_timeout 3s; proxy_next_upstream_tries 2; error_page 500 502 403 404 = /proxy_error.html; } location = /proxy_error.html { root /code/proxy; } }
1.使用vim打开proxy.conf文件 2.修改Listen为listen小写,并将8080修改为80 r: 替换 r --> l x: 删除一个字符 R: 连接替换 3.修改ServerName为server_name小写。 4.修改vim.OldboyEDU.com为vim.oldboy.com 5.在server_name行下插入一行 root /code; 5.复制5-14行的内容,然后将其粘贴到14行下面 shift+v 6.删除与proxy_set_header相关的两行全部删除 shift+v dd 7.如上操作完成后,在13-20行前面加上#号 ctrl+v shift+i --> # -->esc 8.删除21-23的行,然后保存当前文件 shift+v d
三、Linux文件类型
后缀: 便于快速区分文件类型: -: 文件 d: 目录 s: socket c: 字符设备 b: 块设备 磁盘
四、Linux文件属性
-rw-r--r--. 1 root root 32 9月 27 11:46 test.py -rw-r--r--. # ①: 第一个标识文件类型, 后面九个标识文件的权限 1 # ②: 硬链接的次数 root # ③: 文件属于哪个用户 root # ④: 文件属于哪个组 32 # ⑤: 大小 9月 27 11:46 # ⑥: 文件最后的修改时间 [ 创建时间,访问时间,修改时间 ] stat test.txt test.py # ⑦: 文件名称