Linux随身笔记
1.Linux概述
Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生
Linus Torvalds和后来陆续加入的众多爱好者共同开发完成。
Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程
各种工具和数据库的操作系统。
1.1Linux版本
Linux 的版本继承了 Unix 的版本定制规则,分为内核版本和发行版本
内核版本:内核就是一个核心,其他软件都基于这个核心,不能直接使用,内核版本统一在 http://www.linux.org
发布
发行版本:由各个 Linux 发行商发布,Linux 发行商有权选择 Linux 的内核版本。常见的 Linux 的发行版本:
RedHat、CentOS、Debian、Ubuntu
内核版本分为稳定版和开发版,区分方式是根据次版本的奇偶判定,奇数为开发版,偶数为稳定版
2.安装Linux虚拟机
2.1 安装虚拟机软件
什么是虚拟机
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整
计算机系统。
2.2安装Centos 7系统
3.配置静态IP
配置网络的目的主要是为了固定虚拟机的内网IP,方便我们在真实的操作系统中使用Linux连接工具软件进行远程连
接。
1.关闭虚拟机
2.点击编辑,选择倒数第二个选项“虚拟网络编辑器器”,出现下面的“虚拟网络编辑器器”窗口。选择NAT模式, 注意
子网IP前三位与NAT设置的网关IP、DHCP网段一致
设置NAT
设置DHCP范围
2.3.进入操作系统配置网卡信息
执行命令
vi /etc/sysconfig/network-scripts/ifcfg-ens33
进入编写该文件模式,按i进入编辑模式
修改为:
BOOTPROTO=static
ONBOOT=ues
IPADDR=192.168.142.111
NETMASK=255.255.255.0
GATEWAY=192.168.142.2
DNS1=8.8.8.8
写完后保存退出
按esc进入命令模式
输入:wq保存并退出
2.4.重启执行命令重启网卡服务
systemctl restart network
2.5.检查IP是否改变
命令:ip addr
2.5 测试网络是否连通
命令:ping www.baidu.com
这样表示连接成功
按ctrl+c退出
4.给虚拟机进行快照
快照其实就是还原点,我们设置了快照。以后如果被我们玩坏了,也可以快速的还原到以前状态!
VMware快照
5.远程连接工具
主要功能是向Linux系统远程发送命令
Xshell:目前最好用
SecureCRT:收费
Putty:早就停止维护了,很多东西支持的很差。但因为习惯依旧很多人支持
6.Linux常用命令
6.1常用快捷键
- tab键:命令或者路径提示及补全;
- ctrl+c:放弃当前输入,终止当前任务或程序;
- ctrl+l:清屏;
- ctrl + insert:复制;
- 鼠标右键:粘贴;
- alt+c :断开连接 / ctrl + shfit + R 重新连接
- alt+1/2/3/4/5… :切换会话窗口
- 上下键:查找执行行过的命令,或者是history命令
6.2终端命令格式
command [-options] [parameter]
command : 命令名, 相应功能的英文单词或单词的缩写
[-options] : 选项, 可用来对命令进行控制, 也可以省略
parameter : 传给命令的参数, 可以是 零个、一个 或者 多个
6.3常用命令
序号 | 命令 | 对应 | 作用 |
---|---|---|---|
01 | ls | list | 查看当前目录下的内容 |
02 | pwd | print working derectory | 查看当前所在文件夹 |
03 | cd [目录名] | change directory | 切换文件夹 |
04 | touch [文件名] | touch | 如果文件不存在, 新建文件 |
05 | mkdir [目录名] | make directory | 创建目录 |
06 | rm [文件名] | remove | 删除指定的文件名 |
07 | clear | clear | 清屏 |
6.4目录操作命令
Linux中并没有文件夹的概念,应该叫目录。
6.4.1切换目录
cd(change directory) 功能: 切换目录
pwd(print work directory) 功能: 显示当前工作目录
pwd:查看当前所在路径
cd:切换目录
1. cd … :切换到上级目录
2. cd - :后退到上一次所在目录
3. cd / :去根目录
4. 绝对路径:/开始的目录,从根目录开始
5. 相对路径:直接目录,从当前目录开始
6.4.2查看目录内容
ls(list) 功能:列出目录内容
a(all) 功能:所有
h(human) 功能:人性化的显示(单位:K、G等)
- ls:查看目录下的内容:
* ls -a : 查看全部内容,包含隐藏文件
* ls -l : 查看内容的详细信息,效果等同于 ll命令
* ls -lh: 以人能读懂的方式显示文件大小
6.5创建文件
通过 touch
命令 创建文件
第一步: 创建一个空白文件
touch 不存在的文件
第二步: 修改文件的末次访问时间
touch 存在的文件
案例
[root@linux121 ~]# touch test.txt
6.6创建目录命令
通过 mkdir
命令 创建目录
基本语法
mkdir [-p] 要创建的目录
选项 | 英文 | 含义 |
---|---|---|
-p | parent | 可以递归创建目录 |
案例
[root@linux121 ~]# mkdir test
[root@linux121 ~]# mkdir -p test/test1
注意:[通过 mkdir -p 目录名 命令 创建目录, 新建目录的名称 不能与当前目录中 已有的目录或文件同名]
6.7rmdir 删除一个空的目录
基本语法: rmdir 要删除的空目录,remove 即移除
案例
[root@linux121 ~]# mkdir test2
[root@linux121 ~]# rmdir test2
注意:如果该目录中存在文件或其他目录是该命令是不能删除的.
6.8touch创建文件和rm 删除文件
6.8.1创建文件的命令
touch 文件名称
注意事项:
touch 文件名1 文件2 .. 可以创建多个文件
6.8.2删除命令
语法
rm [-参数] 文件/目录 (功能描述:递归删除目录中所有内容)慎用
通过 rm -rf 文件/目录 命令实现删除 文件和目录的功能, rm 对应的英文是 remove 含义: 删除
参数 | 英文 | 含义 |
---|---|---|
-f | force (强制) | 强制删除,忽略不存在的文件, 无需提示 |
-r | recursive (递归) | 递归地删除目录下的内容, 删除文件夹 时必须加此参数 |
文本操作指令:
* touch 文件名 :创建文件
* rm:删除文件或目录
* rm 文件名:删除一个文件
* rm -f 文件名:不经确认就删除文件
* rm -r 目录:递归删除一个目录及目录中的内容
* rm -rf 目录: 递归删除一个目录,不经确认
* rm -rf :清空当前文件夹
* **rm -rf /:自杀行为,不要尝试**
案例:
1)删除空目录
[root@linux121 test]# rmdir test1
2)递归删除目录中所有内容
[root@linux121 test]# rm -rf test2
6.9cp 复制拷贝命令
通过 cp 实现复制将指定的 文件 或 目录 复制到 两一个 文件 或 目录中
基本语法:
(1)cp source dest (功能描述:复制source文件到dest)
(2)cp -r sourceFolder targetFolder (功能描述:递归复制整个文件夹)
命令 | 英文 | 作用 |
---|---|---|
-r | recursive (递归) | 递归复制目标目录的内容 |
案例:
(1)复制文件
[root@linux121 opt]# cp test.txt test1.txt
(2)递归复制整个文件夹
[root@linux121 opt]# cp -r abc /tmp
6.10mv (move)
通过 mv 命令可以用来 移动 文件 或 目录, 也可以给 文件或目录重命名
基本语法:
(1)mv oldNameFile newNameFile (功能描述:重命名)
(2)mv /temp/movefile /targetFolder (功能描述:递归移动文件)
案例:
1)重命名
[root@linux121 test]# mv file1 file11 (把file1文件夹改名为file11)
2)移动文件
[root@linux121 test]# mv file11 test (把file11文件夹放到test文件夹内
6.11cat 查看文件内容
查看文件内容,从第一行行开始显示。
基本语法
cat [选项] 要查看的文件
选项
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行行字节 $ 显示出来;
-n :列出行号,连同空白行也会有行号,与 -b 的选项不不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
-A :相当于 -vET 的整合选项,可列列出一些特殊字符而不不是空白而已;
6.12more 查看文件内容
查看文件内容,一页一页的显示文件内容。
基本语法:
more 要查看的文件
功能使用说明:
空格键 (space):代表向下翻一页;
Enter:代表向下翻『一行』;
q代表立刻离开 more ,不再显示该文件内容。
Ctrl+F 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
案例:
[root@linux121 test1]# more test1.java
6.13less 查看文件内容
less 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 允许使用[pageup] [pagedown]往回
滚动。
基本语法:
less 要查看的文件
功能使用说明
空格键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字符串 :向下搜寻『字符串』的功能;n:向下查找;N:向上查找;
q :离开 less 这个程序;
案例
[root@linux121 test1]# less test1.java
6.14head查看文件内容
查看文件内容,只看头几行,优点:对于大文件不必都加载,只显示头几行行即可。
基本语法:
head 文件名 :查看前10行
head -n 3 文件名 :查看文件的前3行
head -c 3 文件名 :查看文件的前3个字符
6.15tail 查看文件内容
查看文件内容,只看尾巴几行行,优点:可以查看文件实时追加的内容。
基本语法
(1)tail -n 10 文件 (功能描述:查看文件头(从末尾开始数)10行行内容,10可以是任意行行数)
(2)tail -f 文件 (功能描述:实时追踪该文档的所有更更新)
案例
tail -10 文件名
tail -f 文件名
tail -10f 文件名 (ctrl + c 是退出)
6.16组合命令
Linux中的命令组合后,可以产生神奇的效果!
append 追加
replace 替换,覆盖
重定向输出>和>>
重定向输出;
重定向输出,又追加功能
示例:
cat /etc/passwd > a.txt 将输出定向到a.txt上
cat /etc/passwd >> a.txt 输出并且追加
echo 控制台输出的内容 (类似sout)
管道 “|”
管道符号| 的作用是: 将一个命令的输出作为另一个命令的输入.
配合使用的命令
ps(Process Status) 进程状态 ps -ef
grep(Global Regular Expression Print) 全局正则表达式版本(搜索)
逻辑控制&&
./startup.sh && tail -100f catalina.out
6.17history查看所敲命令历史
基本语法:
history
案例
[root@linux121 test]# history
6.18打包和解包命令
打tar包
打包之后的大文件 需要以 .tar 结尾.
tar 打包命令格式
# 将 一系列文件 打包成 一个大文件
tar -cvf 打包名.tar 被打包的目录
tar -cvf 打包名.tar 被打包的文件1 被打包的文件2 被打包的文件3
tar 选项说明
命令 | 英文 | 含义 |
---|---|---|
c | create | 生成档案文件, 创建打包文件 |
v | verbosely(啰嗦的) | 像 ‘唐僧’ 一样报告进度 |
f | file | 指定档案的文件名称, f后面一定是 .tar 文件, 所以必须放到左后 |
6.19解tar包
tar 解包命令格式
解包: tar -xvf 打包之后的文件名.tar [ -C 指定解包位置 ]
# 将一个打包后的 分解成 一系列小文件, 分解位置为 当前目录
tar -xvf 打包名.tar
# 将一个打包后的 分解成 一系列小文件, 分解位置为 指定目录
tar -xvf 打包名.tar -C 解包路径位置
命令 | 英文 | 含义 |
---|---|---|
x | extract (提取) | 解包 |
C (大写C) | directory (目录) | 默认保存到当前目录, 通过 -C 更改解压目录, 注意: 解压目录必须存在 |
小结
打包: tar -cvf 打包之后的文件名.tar 被打包的目录或文件名
解包: tar -xvf 打包之后的文件名.tar [ -C 指定解包位置 ]
6.20gzip格式 压缩 和 解压缩
打包 和 压缩 是两件事
类似与 先将冬天衣服放到压缩袋, 再抽取里面的空气
在 Linux 中, 最常用的压缩文件格式是 xxx.tar.gz
在 tar 命令中有一个选项 -z 可以调用 gzip , 从而可以方便的实现压缩和解压缩的功能
命令格式如下
# 压缩文件
tar -zcvf 打包压缩文件名.tar.gz 被压缩的文件/目录
# 解压缩文件
tar -zxvf 打包文件.tar.gz
# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目录路径
tar 的选项说明
命令 | 英文 | 含义 |
---|---|---|
z | gzip | 使用gzip压缩和解压缩 |
j | bzip2 | 使用bzip2压缩和解压缩 |
6.21bzip2 格式 压缩 和 解压缩
bzip 是压缩的第二种方式
类似与 先将冬天衣服放到压缩袋, 再抽取里面的空气
在 Linux 中, bzip2 压缩文件格式是 xxx.tar.bz2
在 tar 命令中有一个选项 -j 可以调用 bzip2 , 从而可以方便的实现压缩和解压缩的功能
命令格式如下
# 压缩文件
tar -jcvf 打包压缩文件名.tar.bz2 被压缩的文件/目录
# 解压缩文件 (绩效潍坊)
tar -jxvf 打包文件.tar.bz2
# 解压缩到指定路径
tar -jxvf 打包文件.tar.bz2 -C 目录路径
注意:注意事项: 如果报错tar (child): bzip2:无法 exec: 没有那个文件或目录
要安装bzip2的包
yum install -y bzip2
tar 的选项说明
命令 | 英文 | 含义 |
---|---|---|
z | gzip | 使用gzip压缩和解压缩 |
j | bzip2 | 使用bzip2压缩和解压缩 |
打包压缩: tar -jcvf 打包之后的文件名.tar.bz2 被打包压缩的目录或文件名
解包解压缩: tar -jxvf 打包之后的文件名.tar.bz2 [ -C 指定解包位置 ]
6.22时间日期
6.22.1date 显示当前时间
基本语法:注意命令与参数之间有空格
(1)date (功能描述:显示当前时间)
(2)date +%Y (功能描述:显示当前年年份)
(3)date +%m (功能描述:显示当前月份)
(4)date +%d (功能描述:显示当前是哪一天)
(5)date +%Y%m%d … (功能描述:显示当前年年月日各种格式 )
(6)date "+%Y-%m-%d %H:%M:%S" 或者单引号也可以 (功能描述:显示年年月日时分秒)
6.22.2date显示非当前时间
显示的是字符串串描述的时间,不是当前时间。
基本语法:
(1)date -d '1 days ago' (功能描述:显示前一天日期)
(2)date -d yesterday +"%Y-%m-%d"(同上)
(3)date -d next-day +"%Y-%m-%d" (功能描述:显示明天日期)
(4)date -d 'next monday' (功能描述:显示下周一时间)
6.22.3设置系统时间
基本语法:
date -s 字符串时间
6.22.4cal查看日历
基本语法:
cal [选项] (功能描述:不加选项,显示本月日历)
选项:
-3 ,显示系统前一个月,当前月,下一个月的日历 具体某一年年,显示这一年年的日历。
6.23搜索查找
6.23.1find 查找文件或者目录
find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
基本格式:
find path [options]
按照文件名查找
(1)find /etc -name yum.conf #在/etc目录下文件yum.conf
(2)find /etc -name 'yum' #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘yum’的文件
(3)find . -name 'yum*' #表示当前目录下查找文件名开头是字符串‘yum’的文件
按照文件特征查找
(1)find / -atime -2 # 查找在系统中最后48小时访问的文件 (Access Time,文件读取访问时间)
(2)find / -empty # 查找在系统中为空的文件或者文件夹
(3)find / -group susan # 查找在系统中属于group为susan的文件
(4)find / -mtime -1 #查找在系统中最后24小时里修改过的文件 (modify time)
(5)find / -user susan #查找在系统中属于susan这个用户的文件
(6)find / -size +10000c #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB) (7)find / -size -1000k #查找出小于1000KB的文件
使用混合查找方式查找文件
参数有: !,-and(-),-or(-o)
(1)find /tmp -size +10c -and -mtime +2 #在/tmp目录下查找大于10字节并在最后2分钟内修改的文件
(2)find / -user root -or -user susan #在/目录下查找用户是root或者susan的文件文件
(3)find /tmp ! -user susan #在/tmp目录中查找所有不属于susan用户的文件
grep 过滤查找
grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。
基本格式:
grep [options] 范围
主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-i:不区分大小写
-n:显示匹配行及行号。
-w:显示整个单词
-r:递归查询
6.24vi编辑器
在Linux下一般使用vi编辑器来编辑文件。
vi既可以查看文件也可以编辑文件。
而vim是vi的升级版本,具备更多的功能.
vi如果目标文件不存在,会创建新的文件。但是如果新文件没做编辑,退出后还会消失。
vi的三种模式介绍
编辑模式(插入模式):对文本进行输入和修改
底行模式:退出vim或者查找、替换功能
命令模式(一般模式):通过快捷命令操作数据,打开vi默认就是命令模式
注意:
如果vim命令不能使用需要安装:
yum -y install vim-enhanced
编辑模式
命令模式按下:i、o、a进入编辑模式:
i:光标不动
o:另起一行
a:光标到下一个字符
按ESC退出编辑模式,进入命令模式
底行模式
命令模式下,按‘:’或者‘/’进入底行模式,可以输入命令
1)退出vim:(重点重点重点)
:q 未编辑时退出vim
:q! 编辑后,退出并且不保存
:wq 编辑后,退出且保存
:x 编译后保存
2)撤销上次操作(扩展—一般模式下)
u 撤销上一次操作(ctrl + z windows操作)
ctrl + r 恢复上一次被撤销的操作 (ctrl + y windows操作)
3)设置行号(了解) 底行模式
:set nu 显示行号
:set nonu 不显示行号
4)替换文本(了解)
:s/old/new/ 用new替换old,替换当前行的第一个匹配
:s/old/new/g 用new替换old,替换当前行的所有匹配
:%s/old/new/ 用new替换old,替换所有行的第一个匹配
:%s/old/new/g 用new替换old,替换整个文件的所有匹配
5)查找 (一般模式)
/文本 搜索指定文本,高亮显示,按n显示下一个,按N显示前一个
:整数 快捷跳转到指定行
命令模式(一般模式)
p(pause) 将之前dd或yy的数据粘贴到光标位置
yy 复制光标所在行
5yy 复制光标及下面共5行
dd 剪切当前行
5dd 剪切光标及下面共5行
6.25用户及组管理
useradd 添加新用户
(注意:当前用户必须有添加用户的权限)
基本语法:
useradd 用户名 (功能描述:添加新用户)
案例:
[root@linux121 ~]# useradd hadoop
passwd 设置用户密码
基本语法:
passwd 用户名 (功能描述:设置用户密码)
案例
[root@linux121 ~]# passwd hadoop
id 判断用户是否存在
基本语法:
id 用户名
案例:
[root@linux121 ~]#id hadoop
su 切换用户
基本语法:
su 用户名称 (功能描述:切换用户,只能获得用户的执行行权限,不能获得环境变量)
u - 用户名称 (功能描述:切换到用户并获得该用户的环境变量及执行权限)
案例:
[root@linux121 ~]#su hadoop
[root@linux121 ~]#su - hadoop
userdel 删除用户
基本语法:注意区别
(1)userdel 用户名 (功能描述:删除用户但保存用户主目录)
(2)userdel -r 用户名 (功能描述:用户和用户主目录,都删除)
案例:
(1)删除用户但保存用户主目录
[root@linux121 ~]#userdel hadoop
(2)删除用户和用户主目录,都删除
[root@linux121 ~]#userdel -r hadoop
who 查看登录用户信息
基本语法
(1)whoami (功能描述:显示自身用户名称)
(2)who am i (功能描述:显示登录用户的用户名)
(3)who (功能描述:看当前有哪些用户登录到了了本台机器器上)
设置Linux普通用户具有root权限即sudo的使用
sudo命令
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性 。
2)修改配置文件 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
vim /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tom ALL=(ALL) ALL
使用tom用户登录,操作管理员命令
本质:使用临时管理员权限
#不切换root用户,也可以完成添加用户的功能
sudo useradd lisi
sudo passwd lisi
cat /etc/passwd 查看创建了哪些用户
cat /etc/passwd
用户组管理命令
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户 组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。 用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新
groupadd 新增组
基本语法
groupadd 组名
案例: 添加一个hadoop组
[root@linux121 ~]#groupadd hadoop
groupdel删除组
基本语法:
groupdel 组名
案例
[root@linux121 ~]# groupdel hadoop
groupmod修改组
基本语法:
groupmod -n 新组名 老组名
案例 修改hadoop组名称为hadoop1
[root@linux121 hadoop]# groupmod -n hadoop1 hadoop
cat /etc/group 查看创建了了哪些组
cat /etc/group
usermod修改用户
基本语法:
usermod -g 用户组 用户名
案例: 将用户hadoop加入mygroup用户组
[root@linux121 ~]#usermod -g mygroup hadoop
文件权限
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,
Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls –l
命令来显示一个文件的属性以及文件所属的用户和组。
文件权限
权限分段,每一段代表不同的用户:
属主权限:当前文件所属用户的权限,在Linux中每一个文件都有所属的用户
属组权限:当前文件的用户所在组的其它成员的权限
其它用户权限:跟文件所属用户不在同组的其它用户的权限
每一段中的内容都是一样的,分别限定:读(r=4)、写(w=2)、执行(x=1)
rwx 7 具备所有权限(421)
rw- 6 具备读写权限(420)
r-x 5 具备读和执行权限(401)
r-- 4 具备只读权限(400)
-wx 3 具备写和执行权限(021)
-w- 2 具备写权限(020)
–x 1 具备执行权限(001)
— 0 000
文件权限管理
修改文件权限
- chmod 修改文件权限
* chmod 755 a.txt
* chmod u=rwx,g=rx,o=rx a.txt
* 上面两种方式是等效的。将a.txt这个文件修改为:
* 所属用户具备所有权限:rwx=7
* 本组用户具备读和执行权限:rx=5
* 其他用户具备读和执行权限:rx=5