整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Git配置与使用

Git配置与使用

.初识Git

Git 是一个开源的分布式版本控制系统。

版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。

作用:

  • 实现跨区域多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护你的源代码和文档
  • 统计工作量 并行开发、提高开发效率
  • 跟踪记录整个软件的开发过程
  • 减轻开发人员的负担,节省时间,同时降低人为错误

简单说就是用于管理多人协同开发项目的技术。

目前使用最广泛的是Git与SVN

他们主要的区别:

  • SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

在这里插入图片描述

在这里插入图片描述


  • Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

2.Git历史

在 git 诞生之前,Torvalds 选择使用 BitKeeper 进行 Linux 版本管理。BitKeeper 是一个闭源的商业软件,这个决定长期受到社区的质疑和争议。 2005 年,一位 Linux 开发成员 Andrew(Samba 协议之父)写了一个可以连接 BitKeeper 仓库的外挂,因此 BitMover 公司(BitKeeper 持有者)认为他反编译了 BitKeeper。BitMover 决定中止 Linux 免费使用 BitKeeper 的授权。最终 Linux 团队与 BitMover 磋商无果,Torvalds 决定开发自己的版本管理系统。 十天后,git 诞生了。 你没有看错。git 从开始到诞生,Torvalds 这位天才只用了 10 天的时间。 Git是目前世界上最先进的分布式版本控制系统。

注 : Git作者 Linus Torvalds(林纳斯·托瓦兹,同时也是 Linux 之父)1969,芬兰

3.Git安装

Git官方下载地址:http://git-scm.com/downloads

官网慢,可以用国内的镜像:https://npm.taobao.org/mirrors/git-for-windows/

下载对应的版本即可安装! 无脑点击下一步即可!自动配置环境变量!

完成安装后:

在这里插入图片描述

Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多

Git CMD:Windows风格的命令行

Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令Git 配置

4.常用的Linux命令

cd    :  改变目录
cd .. :回退到上一个目录,直接cd进入默认目录
pwd   : 显示当前所在的目录路径 
ls    : 都是列出当前目录中的所有文件
touch :新建一个文件  如touch index.js就会在当前目录下新建一个index.js
rm  :删除一个文件, rm index.js就会把index.js文件删除
mkdir  :新建一个目录,就是新建一个文件夹
rm -r 删除一个文件夹,rm -r src 删除src目录
mv  移动文件, mv index.html src    index.html 是我们要移动的文件,src是目标文件夹
reset :重新初始化终端/清屏
clear 清屏
history 查看命令历史
help 帮助
exit 退出
# 表示注释

5.Git的配置

5.1、用户信息(必要)

  • 查看不同级别的配置文件
  • git config --list #查看配置信息
  • git config --system --list #查看系统config
  • git config --global --lits #查看当前用户配置
  • 用户配置?
  • git config --global user.name "swz"
  • git config --global user.email xxxx@qq.com


如果用了 —global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。

如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 —global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

5.2、查看配置信息

  • Git\etc\gitconfig:Git安装目录下的gitconfig --system 系统级
  • C:\Users\songw.gitconfig: 只适用于当前登录用户的配置 --global 全局

在这里插入图片描述


  • 可以直接编辑,也可以通过上面的命令。

6.Git基本理论

工作区域

在这里插入图片描述

6.1 基本概念

  • 工作区:平时存放项目代码的地方。
  • 暂存区(Stage/Index):暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列 表信息
  • 版本库:又称本地仓库,这个不算工作区,而是 Git 的版本库,里面有你提交到所有版本的数据。
  • 远程仓库:托管代码的服务器

常用命令:

在这里插入图片描述

6.2 工作流程:

  • 1、在工作目录中添加、修改文件;
  • 2、将需要进行版本管理的文件放入暂存区域;
  • 3、将暂存区域的文件提交到git仓库。

在这里插入图片描述

因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

在这里插入图片描述

7. Git项目搭建

日常使用命令:

在这里插入图片描述

7.1 本地仓库搭建----创建全新的仓库

1.新建目录

在这里插入图片描述


2.git init 初始化(注,这是隐藏的文件)

在这里插入图片描述

7.2 本地仓库搭建----克隆远程仓库

  1. 打开码云/github

在这里插入图片描述


  1. git clone https://gitee.com/kuangstudy/kuang_livenote.git

在这里插入图片描述


8. Git文件操作

查看文件状态

#查看指定文件状态
git status [filename]
# 查看所有文件状态
git status
#git add . 添加所有文件到暂存区
#git commit -m "消息内容" 提交暂存区的内容到本地仓库 -m 提交信息

忽略文件

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件等。 在主目录下建立”.gitignore”文件,此文件有如下规则:

1.忽略文件中的空行或以井号(#)开始的行将会被忽略。
2.可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号 ([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
3.如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
4.如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
5.如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。

#为注释
*.txt      #忽略所有 .txt结尾的文件
!lib.txt   #但lib.txt除外
/temp      #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/     #忽略build/目录下的所有文件
doc/*.txt  #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

9. 使用码云

官网:https://gitee.com/ 官网教程:https://gitee.com/help/articles/4122

可以设置绑定SSH公钥,实现免密码登录!

  • 1.生成公钥 $ ssh-keygen -t rsa,一路回车

在这里插入图片描述


  • 2.产生对应的两个文件(注意是隐藏的)

在这里插入图片描述


  • 3.复制公钥,进行添加,完成。 将上图的id_rsa.pub公钥 复制一下

在这里插入图片描述


在这里插入图片描述


  • 4.使用码云创建一个自己的仓库

在这里插入图片描述


  • 5.克隆仓库

在这里插入图片描述


10. idea集成git

  • 新建一个springboot项目

在这里插入图片描述


  • 将空白的git项目gitstudy中的东西复制到springboot项目git-study中
  • 然后在idea的termianl中 输入git add .
  • 接下来进行提交

在这里插入图片描述


  • 最后在idea的termianl中 输入git push
  • 然后到码云刷新即可,这有个问题就是码云中项目的名字和我们本地项目的名字不一样了。

注:所以还有第二种集成git的方法,待补充!!!

11. Git分支

在这里插入图片描述


git分支中常用指令:


# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 切换分支
git checkout [branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

如果同一个文件在合并分支时都被修改了则会引起冲突: 解决引起冲突办法::

  • 把本地冲突文件另保存起来
  • 还原本地文件版本。
  • 修改冲突文件后重新提交!

注: master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,代码稳定了,再合并到主分支上来。 比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

部好的纪录片,能为孩子打开一扇门,走进更广阔的人生风景。

今天为大家带来国家广播电视总局推选出的2021年第一季度优秀国产纪录片2021年第二季度优秀国产纪录片共89部。

内附观看链接,家长们闲暇之余,不妨陪孩子选一部喜欢的纪录片一起观赏吧。

2021年第一季度

优秀国产纪录片

《中国冰雪道路》

出发篇

《中国新疆之历史印记》

《书简阅中国》

《八月桂花遍地开

《塞上江南 》

《年画·画年》

《我是猎鹰特战女兵》

《摆脱贫困》

《正风反腐就在身边》

《民之法典》

《热的雪——伟大的抗美援朝》

《王阳明》

《留法岁月》

《石油的故事》

《福建历史文化名城》

《远方未远——一带一路上的华侨华人》

《隐匿杀手》

《青海:我们的国家公园》

《寻路乡村中国》

《天山南北采棉人——“一带一路”上的黔江人》

《一支疫苗的诞生》

《一级响应》

《东京审判》第三季

《东向大海》

《中国减贫密码》

《丰碑——新疆脱贫攻坚纪实》

《习近平的扶贫故事》

《江河情缘》

《冬景胜春华》

《古镇里的年轻人》

《我爱中国造》

《敦煌:生而传奇》

《旱井》

《智慧中国:前沿科学》

《木香》

《武汉日夜》

《漫步长安街》

《烟火拾味》

《生命缘:健康中国实践者》

《米尔斯探秘生态中国》

《脱贫大决战——我们的故事》

《苗鼓声声寄少年》

《蔬菜改变中国》

《行进中的中国》

《铁军:新四军的故事》

《闽宁纪事》

《雪龙二号》

《面孔——24小时》

观看地址

http://www.docuchina.cn/special/2021zb/index.shtml?spm=C70862.P63098527977.EnIadVg5dlDe.1

2021年第二季度

优秀国产纪录片

《敢教日月换新天》

观看地址:

http://tv.cctv.com/2021/06/18/VIDAGr17Tj2dDO4M1VxEOLzC210618.shtml

《国家公园:

野生动物王国》

观看地址:

https://tv.cctv.com/2021/06/05/VIDEqoB0TJopGjCOQ28isfKR210605.shtml

《山河岁月(第一季)》

观看地址:

https://tv.cctv.com/2021/05/17/VIDAIlHsIGuLEKDR2mMjsTae210517.shtml

《飞向月球(第二季)》

观看地址:

http://tv.cctv.com/2021/04/24/VIDAeIxoUjViVsoxIdYbHqnp210424.shtml

《暗流涌动》

观看地址:

https://tv.cctv.com/2021/04/01/VIDAsn1PEDk2Wu5uOs2tHXga210401.shtml

《长江之歌》

观看地址:

https://tv.cctv.com/2020/12/25/VIDAY6l0NZpBCDGYL1qdv8a2201225.shtml

《绝笔》

观看地址:

https://tv.cctv.com/2021/07/01/VIDATf4TyekfM0tQTLgn5mZG210701.shtml

《告别贫困》

观看地址:

https://tv.cctv.com/2021/02/24/VIDA7p5hC091LW55VDQEARvC210224.shtml

https://tv.cctv.com/2021/03/08/VIDEjy4ZTFHTrF6hNEEeNeKU210308.shtml

《家事如天》

观看地址:

http://tv.cctv.com/2012/12/17/VIDA1355686068919882.shtml

《青春之我(第一季)》

《我们一起走过》

观看地址:

http://tv.cctv.com/2018/11/23/VIDAQvn9XdVZ4iNYK5H9uuAE181123.shtml

《野性的呼唤(第二季)》

观看地址:

https://tv.cctv.com/2021/06/15/VIDAwk162kiGeX2P3EvtujOF210615.shtml

《刺刀下的劳工》

观看地址:

https://tv.cctv.com/2021/03/31/VIDAqzHtL2obDDJgyqSQGT6d210331.shtml

《我的时代和我

(第二季)》

观看地址:

https://v.youku.com/v_show/id_XNTE3MjQ2NDI4OA==.html?spm=a2hbt.13141534.1_3.1&s=adfbaa0c12dc44ee8552&scm=20140719.apircmd.61517.video_XNTE3MjQ2NDI4OA==

《一直看着你来的路口》

观看地址:

https://www.iqiyi.com/v_27xxlm09msw.html?vfm=2008_aldbd&fv=p_02_01

《百年巨匠——建筑篇》

观看地址:

https://www.iqiyi.com/v_12bd6mvu0lo.html

《我为冬奥制战衣》

《曙光》

观看地址:

https://www.bilibili.com/video/BV1th411a76i

《初心李大钊》

观看地址:

https://www.bilibili.com/bangumi/play/ep413256?bsource=baidu_aladdin

《诞生地》

观看地址:

https://www.bilibili.com/video/BV12o4y1Q7B3

《六个团子》

观看地址:

https://www.iqiyi.com/a_21kjj2v44j5.html?vfrm=pcw_jilupian&vfrmblk=B

《百年大党——老外讲故事·上海解放特辑》

观看地址:

https://www.bilibili.com/video/av418463841/

《下饭菜》

观看地址:

https://www.iqiyi.com/a_1oujltvxxj1.html

《理想照耀中国

http://jishi.cntv.cn/2015/05/04/VIDA1430732804999543.shtml

《百炼成钢:中国共产党的100年》

观看地址:

http://tv.people.com.cn/n1/2021/0330/c61600-32065047.html

《声歌嘹亮》

观看地址:

https://www.sohu.com/a/472881874_121106832

《我与大运河》

观看地址:

https://tv.cctv.com/2021/06/21/VIDAsVKSe3VoeLvlfhd5ruzB210621.shtml

《雪域戍边人》

观看地址:

https://www.bilibili.com/bangumi/play/ep391070

《年轻党员云在线》

观看地址:

https://www.mgtv.com/h/368366.html

《书店与菜市场》

观看地址:

https://www.mgtv.com/h/365544.html

《杂交水稻之父袁隆平》

观看地址:

https://www.mgtv.com/h/371287.html

《一代天娇——红线女(粤语版)》

《秘境神草》

观看地址:

https://www.miguvideo.com/mgs/website/prd/detail.html?cid=714974252&channelId=CAAAB000902005900000000&pwId=85f718dd360f4b0c86b195931a57fdf4

《家在青山绿水间——

更好的日子》

观看地址:

https://vod.gxtv.cn/video/videoShow_80345c33bd85460bbfcc1094dc34d4f6.html

《外国作家笔下的

百年成都》

《放羊的画家》

观看地址:

http://www.gsjqtv.com/folder6/folder25/folder72/folder110/2021-05-06/109609.html

《不辞长作新疆人》

观看地址:

http://www.xjkunlun.gov.cn/jzhxjg/wwey/120255.htm

《重返红旗渠》

观看地址:

http://www.centv.cn/p/400474.html

《解码战疫24小时》

观看地址:

http://www.centv.cn/z/350197/

《东方医学》

观看地址:

https://www.bilibili.com/bangumi/media/md28234601/?spm_id_from=666.25.b_6d656469615f6d6f64756c65.1

本文部分素材综合自国家广播电视总局官网、中国纪录片网等。

来源: 首都教育

@Author: Runsen」

基础命令

Linux系统的命令通常都是如下所示的格式:

命令名称 [命名参数] [命令对象]

获取登录信息

获取登录信息 - 「w」 / 「who」 / 「last」/ 「lastb」

maoli@ubuntu:~$ w
08:07:38 up 2 min,  1 user,  load average: 0.83, 0.64, 0.27
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
maoli    tty7     :0               08:06    2:38   2.29s  0.31s /sbin/upstart -
maoli@ubuntu:~$ who
maoli    tty7         2020-05-28 08:06 (:0)
maoli@ubuntu:~$ last
maoli    tty7         :0               Thu May 28 08:06    gone - no logout
reboot   system boot  4.15.0-99-generi Thu May 28 08:04   still running
maoli    tty7         :0               Fri May  1 15:20 - down   (01:26)
reboot   system boot  4.15.0-99-generi Fri May  1 15:20 - 16:47  (01:26)
maoli    tty7         :0               Fri May  1 10:12 - crash  (05:08)
wtmp begins Fri May  1 10:12:22 2020
maoli@ubuntu:~$ sudo lastb
[sudo] maoli 的密码: 

btmp begins Fri May  1 15:20:29 2020

查看自己使用的Shell

查看自己使用的Shell - 「ps」

Shell也被称为“壳”或“壳程序”,它是用户与操作系统内核交流的翻译官,简单的说就是人与计算机交互的界面和接口。目前很多Linux系统默认的Shell都是bash(Bourne Again SHell),因为它可以使用tab键进行命令和路径补全、可以保存历史命令、可以方便的配置环境变量以及执行批处理操作。

maoli@ubuntu:~$ ps
  PID TTY          TIME CMD
 3621 pts/1    00:00:00 bash
 5082 pts/1    00:00:00 ps

查看命令的说明和位置

查看命令的说明和位置 - 「whatis」 / 「which」 / 「whereis」

maoli@ubuntu:~$ whatis ps
ps (1)               - report a snapshot of the current processes.
maoli@ubuntu:~$ whatis python
python (1)           - an interpreted, interactive, object-oriented programmi...
maoli@ubuntu:~$ whereis ps
ps: /bin/ps /usr/share/man/man1/ps.1.gz
maoli@ubuntu:~$ whereis python
python: /usr/bin/python3.5m-config /usr/bin/python /usr/bin/python3.5 /usr/bin/python3.5m /usr/bin/python2.7 /usr/bin/python3.5-config /usr/lib/python3.5 /usr/lib/python2.7 /etc/python /etc/python3.5 /etc/python2.7 /usr/local/lib/python3.5 /usr/local/lib/python2.7 /usr/include/python3.5 /usr/include/python3.5m /usr/share/python /usr/share/man/man1/python.1.gz
maoli@ubuntu:~$ which ps
/bin/ps
maoli@ubuntu:~$ which python
/usr/bin/python

清除屏幕上显示的内容

清除屏幕上显示的内容 - 「clear」

查看帮助文档

查看帮助文档 - 「man」 / 「info」 / 「help」 / 「apropos」

maoli@ubuntu:~$ ps --help

Usage:
ps [options]

Try 'ps --help <simple|list|output|threads|misc|all>'
 or 'ps --help <s|l|o|t|m|a>'
for additional help text.

For more details see ps(1).
maoli@ubuntu:~$ man ps

PS(1)                                User Commands                                PS(1)
NAME
       ps - report a snapshot of the current processes.
SYNOPSIS
       ps [options]
DESCRIPTION
...

查看系统和主机名

查看系统和主机名 - 「uname」 / 「hostname」

maoli@ubuntu:~$ uname
Linux
maoli@ubuntu:~$ hostname
ubuntu

时间和日期

时间和日期 - 「date」 / 「cal」

maoli@ubuntu:~$ date
2020年 05月 28日 星期四 08:13:25 CST
maoli@ubuntu:~$ cal
     五月 2020         
日 一 二 三 四 五 六  
               1  2  
3  4  5  6  7  8  9  
10 11 12 13 14 15 16  
17 18 19 20 21 22 23  
24 25 26 27 28 29 30  
31                    
maoli@ubuntu:~$ cal 5 2020
     五月 2020         
日 一 二 三 四 五 六  
               1  2  
3  4  5  6  7  8  9  
10 11 12 13 14 15 16  
17 18 19 20 21 22 23  
24 25 26 27 28 29 30  
31        

重启和关机

  1. 重启和关机 - 「reboot」 / 「shutdown」
maoli@ubuntu:~$  shutdown -h +5   #五分钟关机
Shutdown scheduled for 四 2020-05-28 08:19:24 CST, use 'shutdown -c' to cancel. [root ~]# 
maoli@ubuntu:~$ shutdown -c
maoli@ubuntu:~$ shutdown -r 12:00
Shutdown scheduled for 四 2020-05-28 12:00:00 CST, use 'shutdown -c' to cancel
maoli@ubuntu:~$ shutdown -c

说明:在执行shutdown命令时会向登录系统的用户发出警告,可以在命令后面跟上警告消息来替换默认的警告消息,也可以在-h参数后通过now来表示立刻关机。

退出登录

退出登录 - 「exit」 / 「logout」

查看历史命令

查看历史命令 - 「history」

maoli@ubuntu:~$ history
...
  625  date
  626  cal
  627  cal 5 2020
  628  shutdown -c
  629  shutdown -r 12:00
  630  shutdown -c
  631  history

maoli@ubuntu:~$ !631  

说明:查看到历史命令之后,可以用!历史命令编号来重新执行该命令;通过history -c可以清除历史命令。

实用程序

文件和文件夹操作

创建/删除空目录

创建/删除空目录 - 「mkdir」 / 「rmdir」

[root ~]# mkdir runsen
[root ~]# mkdir -p abc/runsen
[root ~]# rmdir runsen

创建/删除文件

创建/删除文件 - 「touch」 / 「rm」

maoli@ubuntu:~$ touch readme.txt
maoli@ubuntu:~$  rm readme.txt 
rm: remove regular empty file ‘readme.txt ’? y
[root ~]# rm -rf xyz
  • touch命令用于创建空白文件或修改文件时间。在Linux系统中一个文件有三种时间: 更改内容的时间 - mtime。更改权限的时间 - ctime。最后访问时间 - atime。
  • rm的几个重要参数: -i:交互式删除,每个删除项都会进行询问。-r:删除目录并递归的删除目录中的文件和目录。-f:强制删除,忽略不存在的文件,没有任何提示。

切换和查看当前工作目录

  1. 切换和查看当前工作目录 - 「cd」 / 「pwd」

说明:cd命令后面可以跟相对路径(以当前路径作为参照)或绝对路径(以/开头)来切换到指定的目录,也可以用cd ..来返回上一级目录。返回到上上一级目录应该给cd ../../命令。

查看目录内容

查看目录内容 - 「ls」

  • -l:以长格式查看文件和目录。
  • -a:显示以点开头的文件和目录(隐藏文件)。
  • -R:遇到目录要进行递归展开(继续列出目录下面的文件和目录)。
  • -d:只列出目录,不列出其他内容。
  • -S / -t:按大小/时间排序。

查看文件内容

查看文件内容 - 「cat」 / 「tac」 / 「head」 / 「tail」 / 「more」 / 「less」 / 「rev」 / 「od」

maoli@ubuntu:~$  wget https://www.csdn.net/
--2020-05-28 08:25:01--  https://www.csdn.net/
正在解析主机 www.csdn.net (www.csdn.net)... 47.95.164.112
正在连接 www.csdn.net (www.csdn.net)|47.95.164.112|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 未指定 [text/html]
正在保存至: “index.html”

index.html              [  <=>               ] 420.39K  1.53MB/s    in 0.3s    

2020-05-28 08:25:02 (1.53 MB/s) - “index.html” 已保存 [430482]
maoli@ubuntu:~$ cat index.html
<!DOCTYPE html>
...
maoli@ubuntu:~$ head -10 index.html
<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
   <meta http-equiv="X-UA-Compatible" content="IE=Edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
   <meta name="apple-mobile-web-app-status-bar-style" content="black">
   <meta name="referrer"content="always">
   <meta name="msvalidate.01" content="3189512127C34C46BC74BED5852D45E4" />
   <title>CSDN-专业IT技术社区</title>
maoli@ubuntu:~$ tail -2 index.html 
<script src="https://g.csdnimg.cn/side-toolbar/2.0/side-toolbar.js"></script>
</html>
maoli@ubuntu:~$ less index.html  #相当于cat
maoli@ubuntu:~$ cat -n index.html |more
...

说明:上面用到了一个名为wget的命令,它是一个网络下载器程序,可以从指定的URL下载资源。

拷贝/移动文件

拷贝/移动文件 - 「cp」 / 「mv」

maoli@ubuntu:~$ mkdir backup
maoli@ubuntu:~$ cp index.html backup/
maoli@ubuntu:~$ cd backup/
maoli@ubuntu:~/backup$ ls
index.html
maoli@ubuntu:~/backup$ mv index.html csdn.html
maoli@ubuntu:~/backup$ ls
csdn.html

文件重命名

文件重命名 - 「rename」

查找文件和查找内容

查找文件和查找内容 - 「find」 / 「grep」

maoli@ubuntu:~/backup$ find ./ -name "*.html"
./csdn.html
maoli@ubuntu:~/backup$ find / -name "*.html"
/usr/local/java/jdk-11.0.6/README.html
/usr/local/python3/lib/python3.6/idlelib/help.html
/usr/local/python3/lib/python3.6/test/sgml_input.html
/usr/local/python3/lib/python3.6/test/test_difflib_expect.html
...
maoli@ubuntu:~/backup$  find . -type f -size +2k
./csdn.html
maoli@ubuntu:~/backup$ find . -type f -name "*.swp" -delete
maoli@ubuntu:~/backup$ grep "<script>" csdn.html -n
3192:        <script>
maoli@ubuntu:~/backup$ grep -E \<\/?script.*\> csdn.html -n
12:    <script src='//g.csdnimg.cn/tingyun/1.8.3/www.js' type='text/javascript'></script>
18:    <script src="//csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
19:    <script src="//g.csdnimg.cn/??login-box/1.0.7/login-box.js,login-box/1.0.7/login-auto.js" type="text/javascript"></script>
...

说明:grep在搜索字符串时可以使用正则表达式,如果需要使用正则表达式可以用grep -E或者直接使用egrep

创建链接和查看链接

创建链接和查看链接 - 「ln」 / 「readlink」

maoli@ubuntu:~/backup$ ls -l csdn.html
-rw-rw-r-- 1 maoli maoli 430482 5月  28 08:30 csdn.html
maoli@ubuntu:~/backup$ ln /home/maoli/backup/csdn.html /home/maoli/csdn
maoli@ubuntu:~/backup$ ls -l csdn.html
-rw-rw-r-- 2 maoli maoli 430482 5月  28 08:30 csdn.html

说明:链接可以分为硬链接和软链接(符号链接)。硬链接可以认为是一个指向文件数据的指针,就像Python中对象的引用计数,每添加一个硬链接,文件的对应链接数就增加1,只有当文件的链接数为0时,文件所对应的存储空间才有可能被其他文件覆盖。我们平常删除文件时其实并没有删除硬盘上的数据,我们删除的只是一个指针,或者说是数据的一条使用记录,所以类似于“文件粉碎机”之类的软件在“粉碎”文件时除了删除文件指针,还会在文件对应的存储区域填入数据来保证文件无法再恢复。软链接类似于Windows系统下的快捷方式,当软链接链接的文件被删除时,软链接也就失效了。

压缩/解压缩和归档/解归档

.压缩/解压缩和归档/解归档 - 「gzip」 / 「gunzip」 / 「xz」

maoli@ubuntu:~$ ls
 redis-4.0.10.tar.tar.gz
maoli@ubuntu:~$ gunzip  redis-4.0.10.tar.tar.gz
maoli@ubuntu:~$ ls
 redis-4.0.10.tar.tar

归档和解归档

归档和解归档 - 「tar」

maoli@ubuntu:~$  tar -xvf redis-4.0.10.tar
redis-4.0.10/
redis-4.0.10/.gitignore
redis-4.0.10/00-RELEASENOTES
redis-4.0.10/BUGS
redis-4.0.10/CONTRIBUTING
redis-4.0.10/COPYING
redis-4.0.10/INSTALL
redis-4.0.10/MANIFESTO
redis-4.0.10/Makefile
redis-4.0.10/README.md
redis-4.0.10/deps/
redis-4.0.10/deps/Makefile
redis-4.0.10/deps/README.md
...

说明:归档(也称为创建归档)和解归档都使用tar命令,通常创建归档需要-cvf三个参数,其中c表示创建(create),v表示显示创建归档详情(verbose),f表示指定归档的文件(file);解归档需要加上-xvf参数,其中x表示抽取(extract),其他两个参数跟创建归档相同。

将标准输入转成命令行参数

将标准输入转成命令行参数 - 「xargs」

下面的命令会将查找当前路径下的html文件,然后通过xargs将这些文件作为参数传给rm命令,实现查找并删除文件的操作。

maoli@ubuntu:~$   find . -type f -name "*.html" | xargs rm -f

下面的命令将a.txt文件中的多行内容变成一行输出到b.txt文件中,其中<表示从a.txt中读取输入,>表示将命令的执行结果输出到b.txt中。

maoli@ubuntu:~$ xargs < a.txt > b.txt

显示文件或目录

显示文件或目录 - 「basename」 / 「dirname」

其他相关工具

其他相关工具。

  • 「sort」 - 对内容排序
  • 「uniq」 - 去掉相邻重复内容
  • 「tr」 - 替换指定内容为新内容
  • 「cut」 / 「paste」 - 剪切/黏贴内容
  • 「split」 - 拆分文件
  • 「file」 - 判断文件类型
  • 「wc」 - 统计文件行数、单词数、字节数
  • 「iconv」 - 编码转换
maoli@ubuntu:~$ cat foo.txt
grape
apple
pitaya
maoli@ubuntu:~$ cat bar.txt
100
200
300
400
maoli@ubuntu:~$ paste foo.txt bar.txt
grape   100
apple   200
pitaya  300
        400
maoli@ubuntu:~$ paste foo.txt bar.txt > hello.txt
maoli@ubuntu:~$ cut -b 4-8 hello.txt
pe      10
le      20
aya     3
0
maoli@ubuntu:~$ cat hello.txt | tr '\t' ','
grape,100
apple,200
pitaya,300
,400
maoli@ubuntu:~$ split -l 100 sohu.html hello
maoli@ubuntu:~$ wget https://www.baidu.com/img/bd_logo1.png
maoli@ubuntu:~$ file bd_logo1.png
bd_logo1.png: PNG image data, 540 x 258, 8-bit colormap, non-interlaced
maoli@ubuntu:~$ wc index.html 
 3820  18696 430482 index.html
maoli@ubuntu wget http://www.qq.com -O qq.html
maoli@ubuntu iconv -f gb2312 -t utf-8 qq.html

管道和重定向

管道的使用

管道的使用 - 「|」

例子:查找当前目录下文件个数。

maoli@ubuntu:~$ find ./ | wc -l
80801

例子:列出当前路径下的文件和文件夹,给每一项加一个编号。

maoli@ubuntu:~$  ls | cat -n
    1 abc
    2 backup

例子:查找record.log中包含AAA,但不包含BBB的记录的总数

maoli@ubuntu:~$ cat record.log | grep AAA | grep -v BBB | wc -l

输出重定向

输出重定向和错误重定向 - 「>」 / 「>>」 / 「2>」

maoli@ubuntu:~$ cat readme.txt
banana
apple
grape
apple
grape
watermelon
pear
pitaya
maoli@ubuntu:~$ cat readme.txt | sort | uniq > result.txt
maoli@ubuntu:~$ cat result.txt
apple
banana
grape
pear
pitaya
watermelon

输入重定向

输入重定向 - 「<」

maoli@ubuntu:~$ echo 'hello, world!' > hello.txt
maoli@ubuntu:~$ echo 'I will show you some code.' >> hello.txt
maoli@ubuntu:~$ cat hello.txt
hello, world!
I will show you some code.

多重定向

多重定向 - 「tee」

下面的命令除了在终端显示命令ls的结果之外,还会追加输出到ls.txt文件中。

maoli@ubuntu:~$  ls | tee -a ls.txt
maoli@ubuntu:~$ cat ls.txt 
abc
backup

别名

「alias」创建别名

maoli@ubuntu:~$ alias ll='ls -l'
maoli@ubuntu:~$ alias frm='rm -rf'
maoli@ubuntu:~$ ll
量 144920
drwxrwxr-x  3 maoli maoli      4096 5月  28 08:20 abc
maoli@ubuntu:~$frm abc

「unalias」删除别名

maoli@ubuntu:~$ funalias frm
maoli@ubuntu:~$ frm index.html
-bash: frm: command not found

文本处理

字符流编辑器

字符流编辑器 - 「sed」

sed是操作、过滤和转换文本内容的工具。假设有一个名为fruit.txt的文件,内容如下所示。

maoli@ubuntu:~$ cat -n fruit.txt 
     1  banana
     2  grape
     3  apple
     4  watermelon
     5  orange

接下来,我们在第2行后面添加一个pitaya。

maoli@ubuntu:~$  sed '2a pitaya' fruit.txt 
banana
grape
pitaya
apple
watermelon
orange

在第2行前面插入一个waxberry。

maoli@ubuntu:~$ sed '2i waxberry' fruit.txt
banana
waxberry
grape
apple
watermelon
orange

删除第3行。

maoli@ubuntu:~$ sed '3d' fruit.txt
banana
grape
watermelon
orange

删除第2行到第4行。

maoli@ubuntu:~$ sed '2,4d' fruit.txt
banana
orange

将文本中的字符a替换为@。

maoli@ubuntu:~$ sed 's#a#@#' fruit.txt 
b@nana
gr@pe
@pple
w@termelon
or@nge

将文本中的字符a替换为@,使用全局模式。

maoli@ubuntu:~$ sed 's#a#@#g' fruit.txt 
b@n@n@
gr@pe
@pple
w@termelon
or@nge

模式匹配和处理语言

模式匹配和处理语言 - 「awk」

awk是一种编程语言,也是Linux系统中处理文本最为强大的工具,它的作者之一和现在的维护者就是之前提到过的Brian Kernighan(ken和dmr最亲密的伙伴)。通过该命令可以从文本中提取出指定的列、用正则表达式从文本中取出我们想要的内容、显示指定的行以及进行统计和运算,总之它非常强大。

假设有一个名为fruit2.txt的文件,内容如下所示。

\maoli@ubuntu:~$ cat fruit2.txt 
1       banana      120
2       grape       500
3       apple       1230
4       watermelon  80
5       orange      400

显示文件的第3行。

maoli@ubuntu:~$ awk 'NR==3' fruit2.txt 
3       apple       1230

显示文件的第2列。

maoli@ubuntu:~$awk '{print $2}' fruit2.txt 
banana
grape
apple
watermelon
orange

显示文件的最后一列。

maoli@ubuntu:~$ awk '{print $NF}' fruit2.txt 
120
500
1230
80
400

输出末尾数字大于等于300的行。

maoli@ubuntu:~$ awk '{if($3 >= 300) {print $0}}' fruit2.txt 
2       grape       500
3       apple       1230
5       orange      400

用户管理

创建和删除用户

创建和删除用户 - 「useradd」 / 「userdel」。需要用root账号创建

maoli@ubuntu:~$ su root
密码: 
root@ubuntu:/home/maoli# useradd Runsen
root@ubuntu:/home/maoli#  userdel Runsen
  • -d - 创建用户时为用户指定用户主目录
  • -g - 创建用户时指定用户所属的用户组

创建和删除用户组

创建和删除用户组 - 「groupadd」 / 「groupdel」

用户组主要是为了方便对一个组里面所有用户的管理。

修改密码

修改密码 - 「passwd」

root@ubuntu:/home/maoli# passwd maoli
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

如果使用passwd命令时没有指定命令作用的对象,则表示要修改当前用户的密码。如果想批量修改用户密码,可以使用chpasswd命令。

  • -l / -u - 锁定/解锁用户。
  • -d - 清除用户密码。
  • -e - 设置密码立即过期,用户登录时会强制要求修改密码。
  • -i - 设置密码过期多少天以后禁用该用户。

查看和修改密码有效期

查看和修改密码有效期 - 「chage」

设置maoli用户100天后必须修改密码,过期前15天通知该用户,过期后15天禁用该用户。

root@ubuntu:/home/maoli# chage -M 100 -W 15 -I 15 maoli
  1. 切换用户 - 「su」
root@ubuntu:/home/maoli#  su maoli
maoli@ubuntu:~$ 

以管理员身份执行命令

以管理员身份执行命令 - 「sudo」

maoli@ubuntu:~$  ls /root
ls: cannot open directory /root: Permission denied
maoli@ubuntu:~$ 
sudo ls /root
[sudo] password for maoli:

「说明」:如果希望用户能够以管理员身份执行命令,用户必须要出现在sudoers名单中,sudoers文件在 /etc目录下,如果希望直接编辑该文件也可以使用下面的命令。

编辑sudoers文件

编辑sudoers文件 - 「visudo」

这里使用的编辑器是vim,关于vim的知识在前面有讲解。

五十二、ViM的使用 该文件的部分内容如下所示:

## Allow root to run any commands anywhere 
root    ALL=(ALL)   ALL

## Allows members of the 'sys' group to run networking, software, 
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)   ALL

## Same thing without a password
# %wheel    ALL=(ALL)   NOPASSWD: ALL

## Allows members of the users group to mount and unmount the
## cdrom as root
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

## Allows members of the users group to shutdown this system
# %users  localhost=/sbin/shutdown -h now

显示用户与用户组的信息

显示用户与用户组的信息 - 「id」

root@ubuntu:/home/maoli# id
uid=0(root) gid=0(root) 组=0(root)

给其他用户发消息

给其他用户发消息 -「write」 / 「wall」

发送方:

root@ubuntu# write maoli
Hello Maoli
EOF

键入EOF表示信息结束,用Crtl+D组合键发送信息。输入内容会出现在用户的屏幕上,同时通信中止。 接收方:

maoli@ubuntu:~$  
Message from root on pts/0 at 9:41 ...
Hello Maoli
EOF
  1. 查看/设置是否接收其他用户发送的消息 - 「mesg」
maoli@ubuntu:~$   mesg
is y 
maoli@ubuntu:~$   mesg n
maoli@ubuntu:~$ mesg
is n

如果想要发送一条信息给系统中所有用户,可以使用wall命令,wall表示:write all。输入wall,然后编辑信息,如果shell支持可以使用中文。然后使用Crtl+D组合键发送信息。这样系统所有登录用户的桌面会收到信息。如 果在网络上,可以使用rwall命令把信息发送到局域网上所有的用户。

文件系统

文件和路径

  1. 命名规则:文件名的最大长度与文件系统类型有关,一般情况下,文件名不应该超过255个字符,虽然绝大多数的字符都可以用于文件名,但是最好使用英文大小写字母、数字、下划线、点这样的符号。文件名中虽然可以使用空格,但应该尽可能避免使用空格,否则在输入文件名时需要用将文件名放在双引号中或者通过\对空格进行转义。
  2. 扩展名:在Linux系统下文件的扩展名是可选的,但是使用扩展名有助于对文件内容的理解。有些应用程序要通过扩展名来识别文件,但是更多的应用程序并不依赖文件的扩展名,就像file命令在识别文件时并不是依据扩展名来判定文件的类型。
  3. 隐藏文件:以点开头的文件在Linux系统中是隐藏文件(不可见文件)。

目录结构

  1. /bin - 基本命令的二进制文件。
  2. /boot - 引导加载程序的静态文件。
  3. /dev - 设备文件。
  4. 「/etc」 - 配置文件。
  5. /home - 普通用户主目录的父目录。
  6. /lib - 共享库文件。
  7. /lib64 - 共享64位库文件。
  8. /lost+found - 存放未链接文件。
  9. /media - 自动识别设备的挂载目录。
  10. /mnt - 临时挂载文件系统的挂载点。
  11. /opt - 可选插件软件包安装位置。
  12. /proc - 内核和进程信息。
  13. 「/root」 - 超级管理员用户主目录。
  14. /run - 存放系统运行时需要的东西。
  15. /sbin - 超级用户的二进制文件。
  16. /sys - 设备的伪文件系统。
  17. /tmp - 临时文件夹。
  18. 「/usr」 - 用户应用目录。
  19. /var - 变量数据目录。

访问权限

改变文件模式

  1. 「chmod」 - 改变文件模式比特。
maoli@ubuntu:~/backup$ ls -l
总用量 424
-rw-rw-r-- 2 maoli maoli 430482 5月  28 08:30 csdn.html
maoli@ubuntu:~/backup$ chmod g+w,o+w csdn.html
maoli@ubuntu:~/backup$ ls -l
总用量 424
-rw-rw-rw- 2 maoli maoli 430482 5月  28 08:30 csdn.html
maoli@ubuntu:~/backup$ chmod 644 csdn.html 
maoli@ubuntu:~/backup$ ls -l
总用量 424
-rw-r--r-- 2 maoli maoli 430482 5月  28 08:30 csdn.html

说明:通过上面的例子可以看出,用chmod改变文件模式比特有两种方式:一种是字符设定法,另一种是数字设定法。除了chmod之外,可以通过umask来设定哪些权限将在新文件的默认权限中被删除。

改变文件所有者

  1. 「chown」 - 改变文件所有者。
maoli@ubuntu:~/backup$ ls -l
总用量 424
-rw-r--r-- 2 maoli maoli 430482 5月  28 08:30 csdn.html
maoli@ubuntu:~/backup$ sudo chown root csdn.html
[sudo] maoli 的密码: 
maoli@ubuntu:~/backup$ ls -l
总用量 424
-rw-r--r-- 2 root maoli 430482 5月  28 08:30 csdn.html
  1. 「chgrp」 - 改变用户组。

?

本文已收录 GitHub,传送门~[1] ,里面更有大厂面试完整考点,欢迎 Star。

?


Reference

[1]

传送门~: https://github.com/MaoliRUNsen/runsenlearnpy100