XShell之Linux系统必知必会内容
一、操作系统类型
1、类型
- Unix:商业化的Unix服务器 ,版本有AIX / HP-UX / Solaris
- Windows:版本有 Server / Advanced Server / Data Center
- Linux:发行版本很多,很多发行版本不需要付费,Redhat / CentOS###
2、云服务器
- 最灵活,伸缩性最好,性价比最高的选择。
3、远程连接
远程桌面工具 / SSH客户端工具
Telnet 工具 SSH 协议
- Windows: XShell / FinalShell / Termius
- Shell程序(壳程序): 人机交互的接口 Bash(Bourne Again Shell)
- macOS:Operating System
- Windows: XShell / FinalShell / Termius
4、发展史
- Multics —> 多任务、多用户、多层次 —> ken tomphson —> PDP7
—> Unics —> Unix - Unix —> MINIX —> Linux —> Andriod
- Unix —> BSD —> FreeBSD —> Macintosh —> macOS —> iOS
- Unix —> AIX / HP-UX / Solaris
二、Linux基本命令
1、命令使用格式
- 命令 [命令的参数] [命令作用的对象]
- -V 文件
–version 文件夹
–help 资源
2、基本命令
- 查看登录的用户:who / w / whoami / last / lastb
- 退出登录:exit / logout
- 查看进程:ps ( processes )
- bash的特点
- 命令或路径的自动补全(Tab)
- 支持很多快捷键操作
- 强大的帮助系统
- man 命令(manual 手册):查看命令的详细手册
- whatis 命令:查看命令的功能描述
- whereis / which 命令:查看命令对应的文件的位置
- 命令 --help :获取命令的相关帮助
- 可以查看和调用历史命令:history
- 重复执行历史命令:!历史命令编号
- 重复上一个命令:!!
- history -c :清除历史记录
- bash的特点
- 清屏:clear
- 日历:cal (calendar)
- 时间:date
- 关机:shutdown
3、文件和文件夹相关命令
目录
- 查看当前工作目录:pwd (print current working directory)
- /root : root(超级管理员)用户主目录;可以直接用命令cd进入主目录
- /home/用户名1 —>用户1的主目录
切换工作目录:cd (change directory)
- 绝对路径:cd /etc 进入根目录下的etc目录(以根目录为基础)
- 相对路径:cd etc 进入当前目录下的etc目录(以当前目录为基础)
- . 当前目录
- … 上一级目录
- ~ 当前用户的用户主目录
查看目录下的内容:ls ( list directory contents):查看文件或者文件夹的名称
- ls -l (简写ll)长格式查看:会显示文件以及文件夹的详细信息
- ls -a :查看所有文件以及文件夹,包括隐藏的文件以及文件夹
- ls -R 文件夹名:递归式查看文件夹,可以查看到文件夹中的所有文件以及文件夹
创建文件夹:mkdir(make directory)
- mkdir -p 文件夹名称:如果父文件夹不存在就先创建父文件夹
删除空文件夹:rmdir( remove empty directory)
创建空文件:touch
- 如果文件不存在,就会创建空文件
- 如果文件存在,修改文件的最后访问时间
通过输出重定向创建文件:
- echo hello world > hello.txt :创建文件hello.txt,并将hello world覆盖原来内容
- echo goodbye world >> hello.txt : 追加输出重定向(新内容追加到原来内容的末尾)
联网获取(下载)文件(通过URL)
- wget https://sohu.com/index.html:下载搜狐的主页源代码到当前文件夹
- wget -O 新命名 https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png :下载百度log并重新命名
删除文件:rm (remove)
- rm -i 文件( interative):交互式删除,删除之前询问
- rm -f 文件(force):强行删除,删除之前不询问
- rm -r 文件以及文件夹(recursive):递归式删除,将文件及子目录都删除
- 可以组合使用 rm -rf 文件以及文件夹 :递归式删除但不询问
- alias ‘rm=rm -rf’ :将rm -rf别名为rm ,下次可以直接用rm删除文件夹
- unalias rm:取消别名操作
复制和剪切
- cp 路径(copy):文件拷贝
- cp -r 文件夹或者文件:递归式拷贝,将文件夹下的所有文件一起拷贝
- mv 文件夹以及文件 新的文件夹路径:移动文件到新的文件夹中
- 在同一路径下做移动操作相当于是文件的重命名
- cp 路径(copy):文件拷贝
文件重命名:rename
查看文件的内容
- cat (concatenate): 连接多个文件
+ -n (number ) 显示行号
+ -T (–show-tabs) 将制表键显示为^I - more / less : 分屏(分页)查看文件
- Enter / Ctrl+e:逐行向下翻
- Ctrl+y:逐行向上翻
- Space / Ctrl+f:逐页向下翻
- Ctrl+b:逐页向上翻
- q:退出
- head / tail : 查看文件的开头/结尾
- tac / rev: 反向查看文件(从下往上/从右往左)
- od: 用八进制的方式显示二进制文件
- cat (concatenate): 连接多个文件
管道操作:把前一个命令的输出作为下一个命令的输入(进程间通信的方式), 通过管道操作可以用简单的命令(单一职责原则)组装强大的操作
- 例如:cat -n index.html | more 为index.html文件添加行号并分屏显示
文件操作相关工具
- wc 文件:统计文件的行数、单词数、字符数(英文)
- file 文件:查看文件的属性
- iconv :转换文件编码方式
- iconv -l :查看支持的编码列表
压缩与解压缩
- zip / unzip / gzip / gunzip / xz -z / xz -d
归档与解归档:tar
- 归档 : tar -cvf (create) :创建归档文件
- 解归档:-zxvf
- unzip:解压缩
- extract:抽取 / ~file:文件
- verbose:显示命令执行的详细情况(冗长的、啰嗦的)
计算MD5签名(摘要):md5sum 文件名
查找文件
从文件中搜索指定的内容:grep
- -E:正则表达式匹配 ( egrep)
- -v:反转匹配
直接查找指定属性的文件:find [搜索范围] [配对条件]
根据名字查找文件:find 路径 -name “文件名”
- find / -name init : 查找文件名称为init的文件
- find / -name init :查找文件名称包含init的文件, * 代表若干字符,?代表一个字符
- find / -iname init : 查找文件名称为init(INIT不区分大小写)的文件,也可以加*或?
根据大小查找文件:find 路径 -size +10M
- find /etc -size +20480 :查找etc下 +(大于) 10M(20480/1024/2)的文件
- find /etc -size -20480 : 查找etc下 -(小于) 10M(20480/1024/2)的文件
- find /etc -size 20480 :查找etc下 空(等于) 10M(20480/1024/2)的文件
- find /etc -size +20480 -a -size -204800 :查找etc下 大于10M 小于100M 的文件
根据时间查找文件:
- ctime:创建时间 ,例如:find 路径 -ctime -7
- find /etc -ctime -5 :查找etc下,5分钟之内(-5, 若是+5表示超过5分钟)文件被访问(使用cat等命令)
- mtime:修改时间
- atime:访问时间
- ctime:创建时间 ,例如:find 路径 -ctime -7
-user / -group 按照所属用户/组查找
- find / -user user1 /// 查找所有属于user1用户的文件
- find / -group group1 查找所有属于group1组的文件
-type 结果类型,f/d/l, 文件(flie),目录(dir),链接(link)
- find / -name init -a -type f ///查找根目录下名字包含init的所有文件
-exec /-ok 查询得到结果后执行其他操作
find /etc -name canglaoshi -exec rm {} ; :找到etc下包含canglaoshi的文件然后删除,不询问
find /etc -name canglaoshi -ok rm {} ; :找到etc下包含canglaoshi的文件然后删除,且逐个询问
- 注意: {}与; 有一个空格
-inum 按照i节点查找
find / -inum 32768 -exec ls -al {} ; 在根目录下查找节点为32768的文件,然后列出详情( 这种方法一般用于删除名字奇怪的文件)
三、CentOS安装软件和服务
1、使用包管理工具(最稳当、最方便)
- yum :Yellow-dog Updater Modified (联网使用)
- rpm - Redhat Package Manager - 红帽子包管理工具
2、yum相关命令
- 搜索:yum search nginx
- 安装:yum install -y nginx
- 更新:yum update nginx
- 卸载:yum remove -y nginx 或者 yum erase -y nginx
- 查看:yum info nginx
- 列出所有安装的软件包:yum list installed
- 修改首页:cd /usr/nginx/index.html 覆盖index.html文件
3、rpm下载安装包,有时候yum不支持最新版本,就需要rpm直接在网页上下载了安装包进行安装
安装MySQL为例:
rpm -ivh mysql-community-common-5.7.33-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.33-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.33-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.33-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.33-1.el7.x86_64.rpm报错:
error: Failed dependencies:
libaio.so.1()(64bit) is needed by mysql-community-server-5.7.33-1.el7.x86_64
libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-5.7.33-1.el7.x86_6
libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.33-1.el7.x86_:则需要安装:yum install -y libaio libaio-devel
rpm -ivh mysql-community-server-5.7.33-1.el7.x86_64.rpm
查看安装包:rpm -qa | grep mysql 查询所有包含mysql的安装包
卸载:rpm -e 软件包的名字
启动MySQL:systemctl start mysqld
改掉秘钥:cat /var/log/mysqld.log | grep password
启动客户端:mysql -u root -p
修改密码:alter user ‘root’@localhost identified by ‘新密码’;
4、使用源代码构建安装(最麻烦,可定制性强) —> Makefile
Makefile是C语言的工程构建文件,如何编译代码、如何生成目标文件、如何输出编译结果等内容
都是写在Makefile文件中的,所以要生成这个Makefie文件才能使用构建命令执行安装。
- 以安装Python3.9.1为例:
- 补底层依赖项包:yum install -y libxml2-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libdb4-devel libpcap-devel xz-devel libffi-devel
- 下载Python官方源码:wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz
- 解压缩和解归档
- 一步完成:tar -zxvf Python-3.9.1.tgz
- 分步完成:
- gunzip Python-3.9.1.tgz —— Python-3.9.1.tar
- tar -xf python-3.9.1.tar —— Python-3.9.1
- 进入文件夹执行安装前的配置 : 得到Makefile(构建项目的指令清单)
- cd Python-3.9.1
- gcc --version —> 确认有没有GCC
- yum install -y gcc —> 如果没有GCC就需要先安装,如果有就不需要执行
- ./configure --prefix=/usr/local/python39
如果gcc语言版本够高./configure --prefix=/usr/local/python39 --enable-optimizations
- 构建和安装
- make && make install
- make ; make install (分号隔开多个命令,不管前面的执行是否失败,都会执行所有命令;||表示或者,只会执行其中一个;&& 如果成功了就会继续往下执行)
- 若是重新构建了包,可以使用make clean清除以前的包。
- 若是出现问题则找出对应的问题,看是否缺少相应的依赖项,将依赖项用yum安装完成之后,再重新构建和安装
- make && make install
- 配置PATH环境变量
- vim ~/.bash_profile:配置用户环境变量(只给当前用户使用)
- vim /etc/bashrc:配置系统环境变量(给所有用户使用)
- export PATH=$PATH:/usr/local/python39/bin (注意符号一定是英文状态下)
- 重新登录让环境变量生效(重新连接服务器)
- 检查安装是否成功
- python --version :Python 2.x(一定不能删掉,因为linux系统中有很多是python2写的)
- python3 --version:Python 3.x
- pip --version ----> python包管理工具
- 创建一个符号链接(快捷方式)
- ln -s /usr/local/python39/bin/python3 /usr/bin/python3
- make clean : 清除之前的构建
5、直接下载二进制程序(下载后直接使用,很少)
6、安装Git:团队开发几乎必须使用的版本控制工具(使用方式看十三)
- 下载:wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.30.0.tar.gz
- 解压缩和解归档:tar -zxvf Python-3.9.1.tgz
- 进入文件夹:cd git-2.30.0
- 补充依赖包:yum install -y curl libcurl libcurl-devel
- 安装前的配置:./configure --prefix=/usr/local (会自动装到/usr/local/bin,就不需要配置环境变量)
- 构建和安装:make && make install
- 检查安装是否成功:git --version
四、vim编辑神器
命令模式(输入的按键都是命令):
- 移动光标:
- HJKL --> 左下上右(可以配合数字使用)
- gg --> 首行
- G --> 去到末行, 100G --> 100行
- $ 0 --> 行末和行首
- w --> 下一个单词首字母
- e --> 下一个单词的末字母
- Ctrl + f / Ctrl + b 一页一页翻页
- ctrl + e / ctrl + y 翻行
- 编辑内容:
- dd (可以配合数字使用) 删除整行
- u 撤销 ctrl+r 重做
- d0 d$ 光标删到行首和行末
- dw 往后删一个单词
- yy 赋值行内容
- 10yy 赋值前10行,p粘贴 (可以配合数字使用)
- . 重复上一个命令
- 进入编辑模式:
- i(放在了光标所在位置的前面) I
- a(放在了光标所在位置的后面) A
- o(在当前位置的下方创建一个新行) O (在当前位置的上方创建一个新行)
- 退出编辑模式:Esc
- 保存退出:ZZ(在命令模式下)
- 录制宏和播放宏
- 在命令模式下按qa: q表示开始录制,a是变量名(保存宏的寄存器),界面最下方出现 recording表示已经在录制
- 做操作
- q : 结束录制 (在命令模式下)
- @a :播放宏,可跟数字
- 移动光标:
末行模式(底线命令模式): 配置vim、保存退出、查找替换
命令模式下按英文冒号进入末行模式(一次生效)
显示行号:set nu
set ts=4 将制表键改为4
set expandtab 制表键自动变空格
ls :查看打开的所有文件
b 文件序号:打开多个文件之后切换文件
在命令前加 ! :表示在末行模式下执行系统命令
在命令模式下输入 / (从上往下) 或者?(从下往上) 进入末行模式:搜索关键字
- n:正向搜索
- N:反向搜索
末行模式下查找替换
- 1,$:从第一行到最后一行(搜索范围可换任意数字)
- 1,$s/词汇1/词汇2:将词汇1换成了词汇2(一行只会替换第一处)
- 1,$s/词汇1/词汇2/g(global):将所有的词汇1换成了词汇2
- 1,$s/词汇1/词汇2/gc(confirm)i(ignore-case):将所有的词汇1换成了词汇2(每替换一处询问)忽略大小写
- noh:取消搜索结果的高亮
wq 保存退出 | w 文件名(将其保存在哪个文件里面)
q | q! | qa(退出所有)
在后面加!强行退出
配置vim:touch .vimrc(在用户主目录下创建.vimrc文件),设置了此文件夹,每次使用vim的时候会自动执行此文件夹中的内容
- set ts=4 将制表键改为4
- set autoindent 自动换行
- set expandtab 制表键自动变空格
- set ruler 设置标尺,会在文件最下方显示目前所在的行和列
- syntax on 语法高亮
vim在编辑的时候意外中断,系统会自动存放在另外一个文件中,
- E就是重新编辑,R就是恢复上次编辑的内容,D删除临时文件,Q直接退出
- 不小心按到F1,帮助系统,退出也是在末行模式下按q,qa是退出所有。
使用vim一次打开多个文件
- vim 文件1 文件2 文件3…
- 多屏打开:在末行模式下输入sp(水平拆分)
- vs:垂直拆分
- ctrl + w:按两下,切换窗口
- b 文件序号:将窗口切换为指定文件
- q / qa:关闭窗口
比较两个文件的区别:
在系统输命令 vim -d 文件1 文件2
diff 文件1 文件2
五、其他文件处理工具
1、sed:不会改变原文件
- sed ‘3i 新加内容’ 文件名 :将新内容添加在原文件的第三行
- sed ‘3d’ 文件名:将第三行删除
2、awk
- awk ‘NR==3’ 文件名:拿到第三行
- awk ‘{print $3}’ 文件名:拿到第三列
3、uniq:去重
- uniq 文件名:把相邻的相同内容去重
- sort 文件 | uniq :整体去重
- sort -r 文件 | uniq :反向排序整体去重(从大到小)
- sort 文件 | uniq -c:计数
- sort -n 文件名:按照数值大小进行排序
- tr:替换指定内容为新内容
- cut / paste:剪切/粘贴内容
- split:拆分文件
- file:判断文件类型
- wc:统计文件行数、单词书、字节数
- iconv:编码转换
六、文件权限
1、文件详细信息
drwxr-xr-x 2 root root 4096 Jan 18 15:56 abc
- d 文件夹 ;l 符号链接;- 普通文件
- rwx :文件所有者(u)对该文件具有怎样的权限
- r:读权限
- w:写权限
- x:执行权限
- r-x :和文件所有者同组的用户(g)有怎样的权限
- r-x :其他用户(既不是所有者也不是同组用户o)有怎样的权限
- Permission Denied —> 没有对应的权限
2、修改文件的权限:chmod
- chmod u+x,g+x,o+x 文件名(文件路径)
- chmod g-x,o-x 文件名(文件路径)
- chmod g+w 文件名(文件路径)
- u — user:文件的所有者
g — group:同组用户
o — other:其他用户
软链接:ln -s /root/code/可运行模块 /usr/bin/快捷方式名称
3、#!/usr/bin/python3
在python文件第一行加入,在主目录下运行文件的时候不需要加python3,直接文件路径就可以运行py模块
七、Pylint检查代码:
pylint --disable --report C0103 模块 检查模块,忽略C0103的问题 (report生成检查报告)
–disable和 --report可以省略不写
- C – Convention:不符合python的编程惯例
- R – Refactor :建议代码进行重构
- W – Waring:警告(必须要进行处理的问题)
- E – Error:错误(代码无法运行)
八、用户管理
1、创建用户
- useradd 用户名
- -d 指定用户主目录
2、设置密码
- passwd 用户名
- -e:设置密码立即过期,用户登录时强制要求改密码
- -i:设置密码过期几天后禁用该用户
3、删除用户
- userdel 用户名
4、创建删除用户组
- groupadd /groupdel
5、查看和修改密码有效期 - chage。
- 设置hellokitty⽤户100天后必须修改密码,过期前15天通知该⽤户,过期后15天禁⽤该⽤户:chage -M 100 -W 15 -I 7 hellokitty
6、切换⽤户 - su
- exit :退出当前用户,回到上一个用户
- sudo 命令:超级用户身份来执行系统命令,前提是root用户将该用户加入了sudo清单。
- 管理员:visudo,来到100行,插入新行:用户 ALL=(ALL) ALL
7、chmod / chown / chgrp
- chown 用户名1 文件名:将文件的所有者改为用户1
- chgrp 用户组1 文件名:将文件的所属用户组改为用户组1
8、给其他⽤户发消息 -write / wall。
九、磁盘管理
十、网络相关命令
- ping :检查网络可达性,拒绝服务攻击手段
- Ping to Death — DDoS — Distributed Deny of Service
- TCP Flood
- 购买高防DoS服务
- ifconfig/ip :查看网络设备(网卡)相关信息
- wget:网络下载器
- ssh root@公网ip地址:连接另外一台服务器
- scp 文件名 root@公网ip地址:路径 : 将文件拷到另外一台服务器的对应路径中
- scp root@公网ip地址:路径 本地服务器路径:将其他服务器的文件拷贝到本机上相关路径
- scp root1@公网ip地址:路径 root1@公网ip地址:路径 :root1文件拷贝到root2中。
十一、安装更好的帮助系统: tldr
1、安装nodejs
直接从官方下载二进制文件,下载后只需要配置环境变量
wget https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-x64.tar.xz
xz -d node…
tar -xf node…
cd node…
cd bin
./node --version 查看版本
pwd :/root/node-v14.15.4-linux-x64/bin
vim ~/.bash_profile:在最后一行加入 export PATH=$PATH:/root/node-v14.15.4-linux-x64/bin
重新登录服务器:echo $PATH 查看是否生效
npm --version
node --version
2、安装tldr工具
修改淘宝的镜像:npm config set registry https://registry.npm.taobao.org
npm install -g tldr
tldr 命令
3、hexo
- 把markdown自动生成博客,自带服务器运行
4、安全文件传输在终端连接 sftp
sftp root@ip
下载文件夹:get -r 文件夹
上传文件夹:put -r 文件夹
下载文件:get 文件名
上传文件:put 文件名
lls :本地文件清单
bye:退出
5、netstat:可以查看端口的状态
netstat -n :查看数值形式的网络地址
netstat -ntl :只看TCP(t)协议的 (listen监听状态)
netstat -na :查看所有的
netstat -ntlp :查看哪个进程占用了哪个端口以及进程号
kill 进程号:关闭相关进程(kill -l 查看kill后面可以跟的内容)
- kill -9 进程号 :强行关闭进程(无法正常关闭此进程的时候)
- pkill 进程名字 / killall 进程名(子进程一并关闭)
查看进程
- top - 进程管理器 :所有进程
- ps -aus :显示所有进程可以加管道搜索
- jobs :查看当前会话的当前任务
- pstree:树状形式来查询任务
- pgrep 进程名:查询进程号
- pgrep 进程名 | xargs kill:终止进程
命令 & :让命令在后台运行,并返回一个进程号,用kill关闭
fg %后台任务编号:foreground,将程序放到前台运行
ctrl + z :将任务从前台放到后台并暂停
bg %后台任务编号:background,恢复任务在后台运行
通常一个网络应用会基于TCP或者UDP提供的传输服务来输出数据,一台服务器通常又可以开启多个服务,端口就是用来区分不同的服务的,它是对IP地址的扩展
IP地址可以帮我们找到网络上的主机,而端口可以帮我们找到主机上对应的服务。
HTTP - 80 / HTTPS - 443 / SSH - 22 / POP3 - 110
1 - 1024 :著名端口,自己的应用通常会避开这些端口,1025-65535
MySQL - 3306 / Oracle - 1521 / SQL Server - 1433
MongoDB - 27017 / Redis - 6379
6、udp和Tcp网络协议
计算机网络发展史
- 计算机网络的诞生:美苏冷战—ARPANET 分组交换网
- ISO(国际标准化组织):定一个标准OSI/RM(开放系统互联参考模型)—七层模型,实行困难
- TCP / IP模型:四层模型,事实标准
TCP:Transfer Control Protocol
- 握手(先通信,确保通信之后再传输数据)
- 可靠传输(不传错,不传丢)
- 流量控制(调整收发数据的速率)
- 拥塞控制(不给网络添堵)
UDP:User Datagram Protocol
- 直接发出数据
应用层—定义应用级协议—HTTP / FTP / SSH / QQ(应用传输数据的格式和对话的规范)
会话层
表示层
传输层—端到端—TCP(STREAM) / UDP(DGRAM)
网络层—寻址和路由—IP(Internet Protocol)
物理链路层—分帧、校验
物理层—电气特性(后来与链路层合在了一起)
十二、计划任务
1、将来时
- 在指定的时间执行命令
- at 17:00 :在下午五点执行命令,写完之后ctrl + d
- at 23:59+3days:在三天后的23:59
- 查看
- atq:查看安排的任务
- 删除
- atrm 任务编号:删除安排的任务
2、周期性
- crontab -e :编辑克龙表(周期式的执行)
- 分钟(*/5从0分开始每隔五分钟) 小时(1,2,3一两点三点) 日(1-6一到六号) 月(1-6一到六月) 星期(1,2,3星期一星期二星期三) 任务
- crontab -l :查看克龙表
连接服务器主动运行的文件
/root/.bash_profile
/root/.bashrc
修改/etc/bashrc41行,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LCLfvBMD-1611565220450)(Linux系统.assets/1611296154989.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PHMTSvNn-1611565220454)(Linux系统.assets/1611296288543.png)]
十三、git
团队开发如果没有版本控制,对代码、文档、资源文件的管控将是一场噩梦
1、版本控制的历史
1990s :VSS(Visual Source Safe) / CVS (Concurrent Version System) — 锁定模式
2000 :Subversion(SVN) — 合并模式,集中控制式的版本控制(必须有中央服务器)
2005 :Git — 合并模式,分布式版本控制系统,没有中央服务器也可以实施版本控制
2、Git的使用
git init(initialize) :初始化,把一个文件夹变成版本控制的本地仓库
git status:查看状态,当前工作目录和仓库状态是否一致
git add file:把文件添加到仓库的缓存区(暂存区)
- git add . :把所有文件(包括非空文件夹)添加到仓库的缓存区
git rm --cached file:把文件从缓存区里面拿出来
如果第一次使用git进行提交操作,需要先执行两条配置命令
git config --global user.email “邮箱”
git config --global user.name “名字”
git commit -m “…”(原因,以后可以通过这个来找回相应的版本) :把暂存区的内容同步到本地仓库中
git log:查看提交日志(可以查看到每一个历史版本的哈希码)
- git log --abbrev-commit --graph --pretty=oneline :缩写简短的日志
- git reflog :查看所有的历史版本
git restore 文件或者文件夹:删除或者修改内容之后,用仓库的内容恢复工作区的内容
git reset :版本回退(但不会操作工作区)
- git reset --soft 版本号:只回退仓库,不回退仓库和工作区
- git reset --mixed 版本号:回退仓库和暂存区,但是不回退工作区(默认)
- git reset --hard 版本号:将工作区、暂存区、仓库都回退到指定的版本
3、使用远端仓库
设置远端仓库:git remote add origin 仓库的url
查看:git remote -v
移除仓库:git remote origin
上传分支master到origin仓库:git push -u origin master pretty=oneline :缩写简短的日志
git reflog :查看所有的历史版本
git restore 文件或者文件夹:删除或者修改内容之后,用仓库的内容恢复工作区的内容
git reset :版本回退(但不会操作工作区)
- git reset --soft 版本号:只回退仓库,不回退仓库和工作区
- git reset --mixed 版本号:回退仓库和暂存区,但是不回退工作区(默认)
- git reset --hard 版本号:将工作区、暂存区、仓库都回退到指定的版本
3、使用远端仓库
设置远端仓库:git remote add origin 仓库的url
查看:git remote -v
移除仓库:git remote origin
上传分支master到origin仓库:git push -u origin master
常用快捷键
- ctrl + e :光标移到行末
- ctrl + a :光标移到行首
- ctrl + w:删除光标前面的单词
- ctrl + u:从光标所在位置删除到行首
- ctrl + k:从光标所在位置删除到行尾
- ctrl + c:终止一个进程
- ctr + l :清屏
- tab:自动补全命令
- top:相当于任务管理器
- ctrl + z:将前台任务暂停放到后台
- ctrl + d:写文件的时候表示输入结束
- 输出重定向: > >> :追加 2> :错误输出重定向
- 输入重定向:<
XShell之Linux系统必知必会内容相关推荐
- tableau必知必会之VMware 搭建 Tableau Server for Linux 单机环境
tableau10.5版本推出的 Linux 版 Tableau Server,让用户能够将 Tableau 的分析平台与 Linux 的企业级功能实现更好的结合,从而简化部署和管理工作. 很多用户陆 ...
- linux运行界别,day7 Linux下必知必会文件(2)
主要内容: 运行级别 Linux下面必知必会文件和目录 Linux启动流程 一.运行级别 1.运行级别分为0--6共七级 具体如下表: 级别 CentOS 6 (run level) CentOS 7 ...
- linux 系统管理基础,【必知必会】你绕不过的 Linux 系统管理基本功
第一阶段: 使用虚拟机软件搭建学习环境 1门课程 5小时30分钟 学习 vmware workstation 和 virtualbox 等虚拟机软件的使用方法,虚拟机是后面进一步学习的工具,务必熟练 ...
- 操作系统必知必会:Linux(1)常用的Shell命令
操作系统必知必会:Linux(1)常用的Shell命令 常用的Shell命令 磁盘管理 cd df du mkdir pwd ls 文件管理 cat chmod chown cp diff file ...
- Linux菜鸟必知必会的命令集合
下面是我用到过的Linux命令,也可以说是Linux菜鸟必知必会的命令集合,基本上占据了所有你将用到的命令的95%以上,值得一看. 一: Linux下的mysql数据库常用操作 1.登入登出 ...
- 【软考系统架构设计师】第八章 Web架构(知识点必知必会)
[软考系统架构设计师]第八章 Web架构(知识点必知必会) 第八章 Web架构(知识点必知必会) [软考系统架构设计师]第八章 Web架构(知识点必知必会) 一. 负载均衡与集群技术 1)什么是负载均 ...
- 【软考系统架构设计师】知识点必知必会系列汇总
[软考系统架构设计师]知识点必知必会系列汇总 章节号 章节名 链接 第一章 安全性和保密性设计 https://blog.csdn.net/Last_Impression/article/detail ...
- 猿创征文|计算机类学生必知必会的开发工具
计算机类学生必知必会的开发工具目录 前言 一.浏览器工具 1.在线工具 2.插件扩展 二.优化电脑使用工具 1.notpad++ 2.plotplayer 3.Office Tool Plus--强大 ...
- php7.2 开启mcy扩展,phper必知必会(二)
1.说说你对进程,线程以及协程的理解 进程:是系统进行资源分配和调度的基本单位,是基本操作系统结构的基础.进程是程序基本执行的实体.进程与进程之间是独立的,拥有完全独立的地址空间,进程的切换只发生在内 ...
- 《MySQL必知必会》.pdf
什么是数据库? 数据库是大量数据的集合,通常以电子形式进行数据存储. 数据库的设计通常是为了使其易于存储和访问信息.数据库的使用对任何公司或组织都至关重要,这是因为数据库存储了有关公司的所有相关详细信 ...
最新文章
- android自定义view圆,Android自定义View圆形百分比控件(一)
- Python报错:IndentationError: expected an indented block
- [BZOJ1798][AHOI2009]Seq维护序列 线段树
- java+tableseg,多种功能集成,带Refresh刷新的tableV,Seg分段控件
- 分享Web前端性能优化的实用技巧
- 朱生豪先生的情书 ---- 醒来觉得甚是爱你
- CAD2018下载AutoCAD2018下载AutoCAD2018安装详细教程
- QtWebApp的使用【在Qt中搭建HTTP服务器】(三)
- 计科生毕业一年,做了什么?
- 期刊论文发表见刊是什么意思
- 两位末代皇帝的宠物文史小语新浪博客
- matlab文件名批量读取dat文件,matlab批量读取dat
- C语言查找奥运五环色的位置
- k8s多集群搭建istio共享控制平面(多网络)及部署grpc服务分流实践
- jsp 如何 返回数据库数据供前端访问 /简单的jsp接口如何编写 /jsp如何链接数据库
- NBU网络备份大全之oracle系统热备份
- favicon是什么,怎么用?
- linux学习笔记,linux基础调优,已老男孩教育视频为基础
- RabbitMQ并发处理
- 坚持#第38天~独在异乡为异客,每逢佳节倍思亲
热门文章
- xps15u盘装linux,戴尔XPS15微边框笔记本U盘重装win10系统教程
- 踩坑日记-使用poi生成word文档设置内容换行
- centos7服务器修改密码,centos7 修改root密码方式
- 100G/40G/25G/10G网络测试解决方案
- 计算机名字怎么改数字,微信名字后面的小数字怎么弄 教你昵称添加电话号码...
- unity Shader模拟ps渐变映射效果
- 中通消息服务运维平台实践(已开源)
- JVM 类加载机制与加载过程
- iOS CAShapeLayer、CADisplayLink 实现波浪动画效果
- linux命令 磁盘读写,Linux查看磁盘读写的方法