linux 1
一:Linux操作系统简述
Linux操作系统是由内核(Kernel)、外壳(Shell)、实用工具。
Linux包括很多发行版,比如:Debian、Ubuntu(是在Debian的基础上衍生出来的)、
Redhat等等。
Linux内核的主要功能:
1.进程调度
负责给不同的进程分配CPU资源。
2.内存管理
负责给不同的进程分配内存,Linux操作系统还支持虚拟内存。
3.网络接口
具体实现网络协议标准。
4.虚拟文件系统
通过操作虚拟文件系统可以读取、存储硬盘上的数据。
5.进程间通信
实现进程之间交换数据、通信的功能。
二:Linux中的文件系统
Linux中所有的文件都在根目录(/)下,Linux文件系统就是一个树形结构的系统,
“树根”就是根目录(/)。
三:常用命令:
Linux命令的一般格式:
命令 [-选项] [参数]
eg: ls -l
ls -l /dev/sd* # 查看/dev目录下的以sd开头的设备文件名
which 命令名
who 查看当前登录用户
pwd # 用来显示当前所在的工作目录
ifconfig # 查看ip地址
init 0 # 关机
四:硬盘分区(fdisk)、格式化(mkfs)、挂载(mount)
1.分区:
新添加的硬盘首先应该进行分区,分区的过程中有三种类型的分区可供选择:
主分区(最多4个)、扩展分区、逻辑分区(逻辑分区的序号从5开始)。
2.格式化:
将分区添加到文件系统中
3.挂载:
通过操作挂载点(mount point)来操作硬盘分区。
挂载点是一个空目录。
具体操作:
查看某块硬盘的分区表:eg: fdisk -l /dev/sda # 查看第一块SCSI类型硬盘的分区表
例:对新添加的/dev/sdb 硬盘进行分区、格式化、挂载
fdisk /dev/sdb 对sdb硬盘进行分区
mkfs -t ext4 /dev/sdb1 将sdb1分区创建为ext4类型的文件系统
mkfs.ext4 /dev/sdb2 将sdb2分区创建为ext4类型的文件系统
mkdir /mnt/sdb1 创建一个空目录,作为/dev/sdb1分区的挂载点
mount /dev/sdb1 /mnt/sdb1 将/dev/sdb1分区挂载到/mnt/sdb1挂载点,以后操作
/mnt/sdb1目录(挂载点)就相当于操作/dev/sdb1分区。
五:apt-get命令操作软件包
apt-get install 软件包包名 # 安装指定名称的软件包
源文件:/etc/apt/sources.list
apt-get remove 软件包包名 # 删除指定名称的软件包
六:安装VMware Tools工具
可以将Windows文件粘贴到虚拟机上,虚拟机上还可以全屏显示。
=======================================================================================
linux 2
一:NAT
NAT(Net Address Translation):网络地址转换。用来与主机共享同一个IP。
二:apt-get使用
apt-get install 软件包名
apt-get remove 软件包名
apt源:/etc/apt/sources.list
解决vi编辑文本时上下键、回退键错乱的问题:
apt-get remove vim-common
apt-get install vim
三:主目录(home目录)与工作目录
主目录(home目录):在创建用户时,由系统管理员给用户分配的目录,每个用户
都有自己的主目录。一般主目录是:/home/登录名,但是root用户
的主目录是/root。
工作目录:用户当前所在的目录。
四:绝对路径与相对路径
绝对路径:从根目录(/)开始的路径为绝对路径,绝对路径一定是以"/"开头的。
相对路径:相对于当前工作目录的路径。
几个命令:
显示当前工作目录: pwd
改变目录:cd 目标目录
返回上级目录: cd ..
返回主目录(家目录):cd ~
五:目录的常用操作:
1. mkdir 要创建的目录
mkdir -p 要创建的目录 # 如果父目录不存在,则创建相应的父目录
两年
2. 删除目录
rm -d 目录名 # 删除空目录
rm -r 目录名 # 删除目录和它所包含的内容(递归删除)
六:文件的常用操作
1. touch 文件名[,可以创建多个文件] # 创建文件
创建完文件后,可以对该文件进行编辑,编辑方法:
vi 文件名
输入a,进入编辑模式,编辑文本;
写入并退出,先按Esc键,再输入冒号":",在冒号后输入wq。
退出不保存:q!
2. cat 文件名 # 显示文件的内容
3. cp [选项] 源文件或目录 目标文件或目录
eg: 将apt源拷贝到当前目录下
cp /etc/apt/sources.list ./
将当前工作目录下的a.txt拷贝到a2.txt
cp a.txt a2.txt
将/etc/apt目录拷贝到当前目录下
cp -rf /etc/apt ./
4.rm [选项] 文件或目录
eg:删除当前目录下的a.txt文件
rm a.txt
5.ln [选项] 源文件或目录 链接文件或目录
软链接(-s):别名“符号链接”,本身几乎不占用空间。
相当于“快捷方式”,可以通过软链接方便的访问文件或目录。
eg: 在当前目录下创建一个名为mycp的软链接。
ln -s /bin/cp mycp
然后,使用创建好的mycp软链接进行拷贝操作:
./mycp a.txt a2.txt
硬链接:与源文件占有的空间相同,不能给目录创建硬链接。
6.mv移动命令
mv 源文件 目标文件 # 剪切并给源文件重命名
mv 源文件... 目标目录 # 将多个文件剪切到目标目录中
mv [选项]... -t 目标目录 源文件... # 同上
7.tar压缩和解压缩命令
压缩命令: tar [选项] 创建的压缩文件 要压缩的目录
选项解释: c:创建新归档文件
v:显示详细信息
f:使用归档文件
z:调用gzip实现压缩
例如:将当面目录下的test3目录压缩为mytest.tar.gz压缩文件
tar -cvzf mytest.tar.gz test3
解压缩命令:
tar [选项] 待解压缩的文件
选项解释: x :用来解压缩
8. grep查找
例如:查找出当前目录下文件名(或目录名)中含有'y'的文件或目录
ls | grep 'y'
其中,竖线|为“管道符”,“管道符”的作用是将前面命令的执行
结果作为后面命令的源。
9. find命令
find 路径 [选项]
例如:从根目录下查找文件扩展名为txt的文件
find / -name *.txt
从根目录下查找文件扩展名为txt的文件,并对查找出的文件进行长格式显示
find / -name *.txt -exec ls -l {} \;
=================================================================================
linux 3
一:用户的管理
三个重要的配置文件:
1. /etc/passwd # 该配置文件的每一行配置的是用户的信息
2. /etc/shadow # 该配置文件中存储有每个用户加密后的密码
3. /etc/group # 该配置文件中存储了用户组信息
添加用户的方法:
方法一: useradd [选项] 用户名
选项: -c 备注
-d home目录
-s shell程序
-g 用户的主组(初始组)
-G 用户的附加组
-m 创建主目录(家目录) 注意:-m必须添加
-u 新用户的id
新创建的用户必须设置密码,才能进行登录,设置(更改)密码的命令:
passwd 用户名
方法二:adduser 用户名
用这种方式创建用户,会以交互的方式创建其他信息。
删除用户的方法:
userdel [选项] 用户名
选项:-r 删除用户的主目录和邮件池
-f 强制删除
修改用户的方法:
usermod [选项] 用户名
选项:-u 用户id
-g 用户的主组
-G 用户的附加组
例如:将alice用户的id修改为1008,主组修改为sport_group
usermod -u 1008 -g sport_group alice
注意:用户的主组只能有一个,但用户的附加组可以有多个
二:用户组的管理
1. 用户组的创建
groupadd [选项] 用户组名
选项:
-g :用来显式指定新建组的组id。
2. 将用户添加到组中
gpasswd -a 用户名 组名
3. 将用户从指定组中删除
gpasswd -d 用户名 组名
4. 查看用户所在的全部组
groups [用户名]
5. 删除组
groupdel 组名
6. 修改组
groupmod [选项] 组名
选项: -g 用来修改组id
-n 用来修改组名
eg:将组id改为9529
groupmod -g 9529 sport_group
将组名改为my_sport_group
groupmod -n my_sport_group sport_group
三:文件和目录的权限
1. chmod [选项]... 模式[,模式]... 文件...
注意:
u:文件所属用户
g:文件所属的组
o:其他用户
a:所有用户
对于目录,执行权限(x)决定了能否进入该目录。
chmod [选项]... 八进制模式 文件...
每个八进制数字可以拆分成三个二进制位
例如:chmod 345 a.txt
最终的权限位为: -wxr--r-x
2. chown改变所属用户或用户组
chown 新所属用户:新所属用户组 文件或目录
思考:newgrp命令、chgrp命令的用法
linux 4
一:查看文本信息命令
1. cat命令
显示文本文件的内容:cat [选项] 文件名称[,...]
选项:-n #输出行号
进行文件内容的合并:cat [选项] 文件名1 文件名2 ... > 合并后的文件名
通过键盘输入文本内容: cat > 文本内容保存的文件名
2. more命令
more [选项] 文件名
注意:“回车键”显示下一行
“空格键”显示下一屏
"q"退出
3. less命令
less [选项] 文件名
可以使用“上下键”进行查阅
例子:
find / | more # 分屏显示根目录的系统路径
find / | less # 分屏显示根目录的系统路径,使用less进行查看(可以使用“上下键”)
cat /proc/cpuinfo | more # 分屏显示cpu信息
cat /proc/meminfo | more # 分屏显示内存信息
4. head命令
head命令用来从头显示若干行,默认10行
head [选项] 文件名
例如:显示kern.log的前5行内容
head -n 5 kern.log
如果要在显示的内容前加上行号,则:head -n 5 kern.log | cat -n
另一种写法显示前5行内容:
head -5 kern.log
5. tail命令
tail命令用来从末尾显示若干行,默认10行
tail [选项] 文件名
6. gedit命令
可以随意编辑
二:vi编辑器
使用"vi 文件名"可以对一个文件进行编辑。
使用vi编辑文件的过程中有三种模式:一般模式、编辑模式(输入模式)、命令模式。
如何从一般模式进入编辑模式:按a或i键进入。
如何从编辑模式进入命令模式:先按Esc键,再按输入冒号":",
输入相应命令:w写入、q退出、!不保存。
一般模式下的常用快捷键:
x:删除光标位置的字符
X:删除光标前面的字符
dd:删除当前行
D:删除从光标所在字符至行尾的内容
$:将光标移动至当前行的末尾
^:将光标移动至当前行的开头
G:光标跳转至最后一行的行首
y$:从光标处开始复制到行尾
p: 粘贴
三:VMWare的两个连接网络模式
1. NAT模式
当访问网络时,共享的是物理机IP。
2. 桥接模式
IP地址与主机互相独立,虚拟机相当于一台独立的机器。
四:安装SSH服务的步骤与使用
安装ssh服务:
sudo apt-get install openssh-server
启动ssh服务:
sudo service ssh start
查看ssh服务是否启动:
sudo service ssh status
关闭防火墙:
ufw disable
使用SSH远程连接:
ssh 要连接的用户名@连接用户所在的IP地址
思考:如何从vi搜索某些文本?
进入一般模式后,直接按斜杠(/),斜杠后面输入要搜索的目标文本,
按“Enter回车键”找到第一个符合搜索条件的文本,之后,按"n"查找
下一个(按"N"查找上一个)。
head -3 a.txt > b.txt
Linux 5
一:Shell介绍
Shell是用户与内核之间的桥梁,也可以当作操作系统中的编程语言。
Shell与用户交互的模式:在交互环境下每次执行一条命令;通过编写Shell脚本的方式。
二:Shell的编写与执行
1. Shell解释器 #!解释器
2. Shell的变量类型
环境变量: Shell环境下已经存在的一些系统变量,eg:PWD、UID、PATH。
自定义变量:变量名=变量值 # 自定义变量等号两边不能加空格
预定义变量:$0 当前执行的shell脚本的程序名
$1 $2 .... $n 代表第一个、第二个...第n个位置参数的值
$# 传递的位置参数的个数
$* 所有位置参数的值
$? 返回上一条命令是否执行成功,成功为0,失败为非0。
3.Shell脚本执行方式:
方式一:直接通过脚本文件的位置执行 (必须添加x执行权限)
方式二:sh 脚本文件位置
方式三:source 脚本文件位置
三:Shell的程序流程控制
1. if条件判断语法:
if [ 判断条件表达式 ]
then
# 测试通过执行此处脚本
else
# 测试未通过,在此执行脚本
fi
注意:文件判断的常用选项:-d 是否为目录
-f 是否为文件
-e 是否存在
2. for循环语句
for 循环变量 in 表达式
do
# 循环内容
done
3. while循环语句
while [ 判断条件表达式 ]
do
# 循环内容
done
四:计划定时任务
1. 使用crontab命令操作定时任务,crontab的常用选项:
-e : 编辑当前用户的定时任务文件
-r : 删除当前用户的定时任务
-l : 列出当前用户的所有任务
如果当前用户要编辑其他用户的定时任务,则需要有root权限(sudo),而且
需要指定-u选项。eg: sudo crontab -u jerry -e
注意:每个用户都有自己的定时任务文件。
用户定时任务文件:
m h dom mon dow command
32 */2 * * * date >> /home/jerry/jerrylog.txt
意思是:每天间隔2小时的32分,将当前时间写入对应的文件
2.如果要执行以root用户权限执行的任务,应该在/etc/crontab文件下加入任务,
user字段填写root就可以用root权限执行。
3./etc/cron.daily 每天都会执行该目录下的所有脚本
/etc/cron.weekly 每周都会执行该目录下的所有脚本
/etc/cron.monthly 每月都会执行该目录下的所有脚本
Linux 6
一:Git简述与基本配置
Git是一个分布式的版本控制工具,简单易用。
Git全局配置:
git config --global user.name "用户名" # 配置使用Git的用户名
git config --global user.email "邮箱" # 配置使用Git的邮箱
git config --global color.ui true # 配置颜色提示为打开状态
git config -l # 查看当前所有的git配置
二:Git的操作:
1. git init 工作区目录名
使用该命令可以创建并初始化一个工作区,以目录的形式出现。
在工作区的根目录下,有一个.git目录(版本库,或本地仓库)
2. git add 添加到暂存区的内容
使用该命令可以将工作区中相关内容的改动添加到暂存区。
3. git commit -m "提交信息"
将暂存区中的内容提交到本地某个分支上
注意:在工作区中修改的内容不能直接commit提交,但可以使用
git commit -a -m "提交信息"一个命令既添加到暂存区,紧接着
提交到本地仓库分支上,但不建议这样使用。
4. git log
该命令用来查看提交日志,可以使用git log --pretty=oneline的方式显示
简短的提交日志。
5. git status
操作git的状态
6. git reset
git reset的作用是重置提交id(commit id)。
该命令有两个常用的参数:
--soft : 重置提交id,但并不修改暂存区和工作区的内容。
--hard : 重置提交id,并且将暂存区和工作区的内容强制恢复到当前
重置commit id状态。该命令很危险!
例如:git reset --soft HEAD~1 # 将当前commit id重置到上一次提交,但并
不修改工作区与暂存区的内容。
git reset --hard 701162444b6aabc25e3b56ddff645cc3214b6956
# 将当前提交id重置为"7011xxx"的状态,并强制工作区与
暂存区的内容恢复到该提交id的状态。
特别注意:一旦使用git reset的--hard参数,则工作区和暂存区将强制恢复。
如果后悔了,可以使用git reflog来查看所有的提交(commit)和重置(reset)日志。
三:GitHub
GitHub是一个代码托管网站。
1.在本地操作系统(Linux)上使用命令创建密钥
ssh-keygen -t rsa -C "邮箱"
2.寻找id_rsa.pub文件里面存放的“公钥”,将其复制到GitHub上自己的帐号里(SSH keys)里。
3.在GitHub上创建一个远程仓库,选中“Initialize this repository with a README”复选框。
4.在本地进行git clone "远程仓库的地址"操作,在本地创建一个与远程仓库对应的仓库。
5.cd "克隆下来的目录(本地仓库)"
6.git remote add 远程主机名(习惯上origin) 远程仓库的ip # 将远程仓库与本地仓库进行关联
7.在本地仓库中进行开发(git add 、git commit)
8.git push -u origin master # 将本地仓库的修改推送到远程仓库
四:git分支管理
git branch 新建分支名 # 创建新分支
git branch # 查看所有分支
git checkout 分支名 # 切换分支
git checkout -b 新建分支名 # 新建一个分支后,直接切换到该新建分支
git merge 合并分支名 # 将某个分支的成果合并到当前分支
思考:git pull 与 git fetch的区别?如何故意制造冲突?
五:补充
git diff 对比暂存和工作区内容差异
git diff --cached 对比本地库和暂存区差异