Linux
是一个基于Linux 内核的开源类Unix 操作系统,Linus Torvalds于 1991 年 9 月 17 日首次发布的操作系统内核。Linux 通常打包为Linux 发行版。
Linux
最初是为基于Intel x86架构的个人计算机开发的,但此后被移植到的平台比任何其他操作系统都多。由于基于 Linux 的Android在智能手机上的主导地位,截至 2022 年 5 月,Linux(包括 Android)在所有通用操作系统中拥有最大的安装基础。
Linux
也可以在嵌入式系统上运行,即操作系统通常内置在固件中并针对系统高度定制的设备。这包括路由器、自动化控制、智能家居设备、视频游戏机、电视(三星和 LG智能电视分别使用Tizen和WebOS)
Linux
是免费和开源软件协作最突出的例子之一。任何人都可以根据其各自的许可条款,例如GNU 通用公共许可证(GPL) ,以商业或非商业方式使用、修改和分发源代码。例如,Linux 内核在 GPLv2 下获得许可,但系统调用有一个特殊例外,因为没有系统调用例外,任何调用内核的程序都将被视为衍生程序,因此 GPL 必须适用于该程序。
1.Linux一切皆文件
2.只有一个顶级目录,不像windows分C盘、D盘、E盘
Linux | 含义 | windows |
---|---|---|
/bin | 所有用户可用的基本命令存放的位置 | windows没有固定的命令存放目录 |
/sbin | 需要管理员权限才能使用的命令 | |
/boot | linux系统启动的时候需要加载和使用的文件 | |
/dev | 外设连接linux后,对应的文件存放的位置 | 类似Windows中的U盘,光盘的符号文件。 |
/etc | 存放系统或者安装的程序的配置文件,注册服务等 | 类似windows中的注册表, |
/home | 家目录,linux中每新建一个用户,会自动在home中为该用户分配一个文件夹 | 类似windows中的"我的文档",每个用户有自己的目录。 |
/root | root账户的家目录,仅供root账户使用 | 类似windows中的Administrator账户的"我的文档" |
/lib | linux的命令和系统启动,需要使用一些公共的依赖,放在lib中,类似我们开发的代码执行需要引入的jdk的jar | |
/usr | 很多系统软件的默认安装路径 | 类似windows中的C盘下的Program Files目录。 |
/var | 系统和程序运行产生的日志文件和缓存文件放在这里 |
注意事项:命令区分大小写
命令格式 :命令 [-选项] [参数]
例 : ls -la /etc
说明:
- 1、个别命令使用不遵循此格式
- 2、当有多个选项时,可以写在一起
- 3、简化选项与完整选项-a 等于 --all
# 2. 查看文件列表
ls [-参数1参数2] [目标文件夹]
命令所在路径:/bin/ls
执行权限:所有用户
功能描述:显示目录文件
语法:ls 选项[-ald] [文件或目录]
-a 显示所有文件,包括隐藏文件
-l 详细信息显示
-d 查看目录属性
# 查看当前目录下的文件列表
ls
# 查看指定目录下的文件
ls /
# 查看详细信息,元数据信息(用户、组、大小、创建时间、权限信息、文件类型)
ls -l
# 查看隐藏文件
ls -a
# 参数并用
ls -la
# 当使用ls -l会显示文件的详细信息,包含权限信息:
-rw-r--r--
- 文件类型(- 文件 d 目录 l 软链接文件)
rw- r-- r--
u g o
u:所有者 g:所属组 o:其他人
r:读 w:写 x:执行
# 5. 切换目录
cd 目标文件夹
命令所在路径:shell内置
命令执行权限:所有用户
语法:cd [目录]
功能描述:切换目录
范例: $ cd /tmp/zhang/test1 切换到指定目录
$ cd .. 回到上一级目录
# 绝对路径切换
cd 绝对路径
# 相对路径切换
cd 相对路径
# 例子:切换到/etc/sysconfig/networks-scripts 目录下
# 4. 查看当前命令所在的目录
命令所在路径:/bin/pwd
执行权限:所有用户
语法:pwd
功能描述:显示当前目录
范例 :
[root@rhwbilla network-scripts]# pwd
/etc/sysconfig/network-scripts
# 特殊目录符号
~ 当前用户的home目录
. 当前目录
.. 上一级目录
# 5. 新建文件夹及文件
命令所在路径:/bin/mkdir
执行权限:所有用户
语法:mkdir -p [目录名]
功能描述:创建新目录-p 递归创建
范例: $ mkdir -p /tmp/zhang/test
$ mkdir /tmp/zhang/test1 /tmp/zhang/test2
# 在当前位置新建文件夹
mkdir 文件夹名
# 在指定目录位置,创建文件夹,并创建父文件夹
mkdir -p /a/b/文件夹名
# 在当前目录下新建文件
touch 文件名
# 6. 删除文件夹
命令名称:rmdir
命令所在路径:/bin/rmdir
执行权限:所有用户
语法:rmdir [目录名]
功能描述: 删除空目录
范例: $ rmdir /tmp/zhang/test
# 7. 删除文件
命令所在路径:/bin/rm
执行权限:所有用户
语法:rm -rf [文件或目录]
-r 删除目录
-f 强制执行
功能描述:删除文件
范例:$ rm /tmp/yum.log
删除文件/tmp/yum.log
$ rm -rf /tmp/zhang/test2
删除目录/tmp/zhang/test2
# 删除文件
rm 文件
# 删除文件夹
rm -r 文件夹
# 强制删除不询问
rm -rf 文件
# 8. 拷贝文件
命令所在路径:/bin/cp
执行权限:所有用户
语法:cp -rp [原文件或目录] [目标目录]
-r 复制目录
-p 保留文件属性
功能描述:复制文件或目录
范例:$ cp -r /tmp/zhang/test1 /root
将目录/tmp/zhang/test1复制到目录/root下
$ cp -rp /tmp/zhang/test2 /tmp/zhang/test2 /root
将/tmp/zhang目录下的test1和test2目录复制到/root下,保持目录属性
# 拷贝文件
cp 原文件 新文件
# 拷贝文件夹
cp -r 源文件夹 新文件夹
# 9. 移动文件或修改文件名
# 移动源文件到目标文件夹中
mv 文件 文件夹
# 修改文件A的名字为文件B
mv 文件A 文件B
# 8. 获取文件的md5指纹(数字签名)
md5sum 文件名
# 简介
1. 数字签名,又称数字指纹
2. 可以验证文件是否被修改
3. 一个文件通过计算得到的一串字符串,文件内容的唯一标记(文件内容不变,指纹不会变)
#1 创建文件命令名称:touch
命令所在路径:/bin/touch
执行权限:所有用户
语法:touch [文件名]
功能描述:创建空文件
范例:
$ touch test
# 查看文件中的全部信息(适合查看小文档)
cat 文件名
命令所在路径:/bin/cat
执行权限:所有用户
语法:cat [文件名]
功能描述:显示文件内容
-n 显示行号
范例:
$ cat /etc/issue
$ cat -n /etc/services
# 分屏显示命令名称:more
命令所在路径:/bin/more
执行权限:所有用户
语法:more [文件名]
(空格) 或f 翻页
(Enter) 换行
q或Q 退出
功能描述:分页显示文件内容
范例:
$ more /etc/services
# 以分页的方式浏览文件信息(适合查看大文档),进入浏览模式
less 文件名
# 浏览模式快捷键
↑ #上一行
↓ #下一行
G #最后一页
g #第一页
空格 #下一页
/关键词 #搜索关键词
# 退出浏览模式,回到Linux命令行模式
q #退出
命令所在路径:/usr/bin/less
执行权限:所有用户
语法:less [文件名]
功能描述:分页显示文件内容(可向上翻页)
范例:
$ less /etc/services
tips: 按下 / 后可以搜索 会反显高亮 按q退出(more也可以)
# 取首n行命令名称:head
命令所在路径:/usr/bin/head
执行权限:所有用户
语法:head [文件名]
功能描述:显示文件前面几行
-n 指定行数
范例:
$ head -n 20 /etc/services
# 取尾n行 命令名称:tail
命令所在路径:/usr/bin/tail
执行权限:所有用户
语法:tail [文件名]
功能描述:显示文件后面几行
-n 指定行数
-f 动态显示文件末尾内容
范例:
$ tail -n 18 /etc/services
# 实时滚动显示文件的最后10行信息(默认10行)
tail -f 文件名
# 显示文件的最后20行信息
tail -n 20 文件名
tail -n -20 文件名
# 显示文件信息从第20行至文件末尾
tail -n +20 文件名
# 查找文件 命令名称:find
命令所在路径:/bin/find
执行权限:所有用户
语法:find [搜索范围] [匹配条件]
功能描述:文件搜索
# 语法
find 搜索路径 -name "文件名关键词"
# 例子
find / -name "passwd"
find / -name "ifcfg-*"
范例:
$ find /etc -name init
在目录/etc中查找文件init
-iname 不区分大小写
$ find /etc -name *init*
在目录/etc中查找文件名包含init
$ find /etc -name init???
在目录/etc中查找文件名init开头并有3个字符的
$ find /etc -name init*
在目录/etc中查找文件名init开头的
tips:* 匹配任意字符,?匹配单个字符
$ find / -size +204800
在根目录下查找大于100MB的文件
+n 大于 -n 小于 n 等于
$ find /home -user shenchao
在根目录下查找所有者为shenchao的文件
-group 根据所属组查找
$ find /etc -cmin -5
在/etc下查找5分钟内被修改过属性的文件和目录
-amin 访问时间 access
-cmin 文件属性 change
-mmin 文件内容 modify
$ find /etc -size +163840 -a -size -204800
在/etc下查找大于80MB小于100MB的文件
-a 两个条件同时满足
-o 两个条件满足任意一个即可
$ find /etc -name inittab -exec ls -l {} \;
在/etc下查找inittab文件并显示其详细信息
-exec/-ok 命令 {} \; 对搜索结果执行操作
tips:-exec直接执行,ok会询问操作
-type 根据文件类型查找
f 文件 d 目录 l 软链
-inum 根据i节点查找
# 文件资料库查找命令名称:locate
命令所在路径:/usr/bin/locate
执行权限:所有用户
语法:locate 文件名
功能描述:在文件资料库中查找文件
范例:
$ locate inittab
tips:新建文件locate不到,可以updatedb,更新文件资料库后查找[tmp不在文件资料库内]
$ locate -i text01 // -i 作用你不区分大小写类似 -iname
#查看命令位置命令名称:which
命令所在路径:/usr/bin/which
执行权限:所有用户
语法:which 命令
功能描述:搜索命令所在目录及别名信息
范例:
$ which ls
#查看命令位置命令名称:whereis
命令所在路径:/usr/bin/whereis
执行权限:所有用户
语法:whereis [命令名称]
功能描述:搜索命令所在目录及帮助文档路径
范例:
$ whereis ls
# 文本搜索命令名称:grep
命令所在路径:/bin/grep
执行权限:所有用户
语法:grep -iv [指定字串] [文件]
功能描述:在文件中搜寻字串匹配的行并输出
-i 不区分大小写
-v 排除指定字串
# 语法
grep -参数 要查找的目录范围
# 参数
-n 显示查找结果所在行号
-R 递归查找目录下的所有文件
# 例子
grep aries /etc
grep aries /etc/passwd
范例:
# grep mysql /root/install.log
# grep -v ^# /etc/inittab 去除以#开头的所有行信息,^表示以XXX开头
# 文件链接 命令名称:ln
命令所在路径:/bin/ln
执行权限:所有用户
语法:ln -s [原文件] [目标文件]
-s 创建软链接
功能描述:生成链接文件
范例:
#创建文件/etc/issue的软链接/tmp/issue.soft
$ ln -s /etc/issue /tmp/issue.soft
#创建文件/etc/issue的硬链接/tmp/issue.hard
$ ln /etc/issue /tmp/issue.hard
# 文件名
该文件的名字
# inode
该文件的元数据
# datablock
该文件真正保存的数据
1、inode中保存的是文件的元数据
2、ls命令查看的都是linux的元数据信息
3、数据块中才是文件的真正数据
硬链接特征:
1、拷贝cp -p + 同步更新
2、可通过i节点识别
3、不能跨分区
4、不能针对目录使用
ln 源文件 硬链接文件
软链接特征:类似Windows快捷方式
- 1、lrwxrwxrwx l 软链接
软链接文件权限都为:rwxrwxrwx- 2、文件大小-只是符号链接
- 3、/tmp/issue.soft -> /etc/issue 箭头指向原文件
ln -s 目标文件或文件夹 软连接名字
1. 创建组
`groupadd 组名`
2. 删除组
`groupdel 组名`
3. 查找系统中的组
`cat /etc/group | grep -n “组名”`
说明:系统每个组信息都会被存放在/etc/group的文件中
1. 创建用户
`useradd -g 组名 用户名`
2. 设置密码
`passwd 用户名`
3. 查找系统账户
说明:系统每个用户信息保存在`/etc/passwd`文件中
4. 切换用户
`su 用户名`
5. 删除用户
`userdel -r 用户名`
linux系统未来可能有程序员、用户、数据库管理员、项目经理等各种角色各种级别人使用,甚至还有身份不明的人链接到linux,控制不好权限容易导致系统崩溃、数据丢失等问题。
权限字母 | 含义 | 对文件 | 代表命令 | 对文件夹 | 代表命令 |
---|---|---|---|---|---|
R? | 读 | 查看文件内容和复制文件 | more cat less cp head tail | 查看文件夹下的文件 | ls |
W(w) | 写 | 编辑文件 | vi | 在文件夹内创建和删除文件 | rm touch |
X(x) | 执行 | 执行该文件(执行必须具备r权限) | - | 切换到文件夹 | cd |
ACL access controll list
)
# 修改文件权限 命令名称:chmod
命令所在路径:/bin/chmod
执行权限:所有用户
语法:chmod [{ugoa}{+-=}{rwx}] [文件或目录]
[mode=421 ] [文件或目录]
-R 递归修改
功能描述:改变文件或目录权限
权限的数字表示
r ---- 4 w ---- 2 x ---- 1
rwxrw-r-- 7 6 4
范例:
赋予文件testfile所属组写权限
$ chmod g+w testfile
修改目录testfile及其目录下文件为所有用户具有全部权限
$ chmod -R 777 testdir
# 权限设置1
语法:chmod u±rwx,g±rwx,o±rwx 文件名
运算符:
- 删除权限
+ 添加权限
= 赋值权限
## 给文件的所有者添加执行权限
chmod u+x 文件名
## 给文件的其他人删除所有权限
chmod o-rwx 文件名
## 给文件的所属组设置读写权限
chmod g=wx 文件名
# 权限设置2
# 文件的每个归属方的权限的值使用rwx之和计算出来的。
# 语法
`chmod [-R] nnn 文件`
-R 递归设置文件夹内所有文件
# 设置文件的权限为(所有者可读可写可执行,所属组可读可写,其他人可读)
chmod 764 文件名
# 设置文件所有者
语法:chown [-R] user名:group名 文件名
参数:-R 如果是文件夹,需要使用这个参数,可以将文件夹及其内部所有文件的所有者和组全部修改
注意:命令权限需要root
命令所在路径:/bin/chown
执行权限:所有用户
语法:chown [用户] [文件或目录]
功能描述:改变文件或目录的所有者
范例:
改变文件test的所有者为zhang
$ chown zhang test
## 修改文件所有者
chown 用户名 文件名
## 修改文件所属组
chown :组名 文件名
## 修改文件所有者和所属组
chown 用户名:组名 文件名
## 修改文件夹的所有者和所属组
chown [-R] 用户名:组名 文件夹
命令名称:chgrp
命令所在路径:/bin/chgrp
执行权限:所有用户
语法:chgrp [用户组] [文件或目录]
功能描述:改变文件或目录的所属组
范例:
改变文件text01的所属组为group01
$ chgrp group01 text01
命令名称:umask
命令所在路径:Shell内置命令
执行权限:所有用户
语法:umask [-S]
-S 以rwx形式显示新建文件缺省权限
功能描述:显示、设置文件的缺省权限
范例:
tips: 新建文件是默认没有x权限(比如:防止木马病毒攻击)
$ umask -S
# 查看权限
ls -la 文件
ll 文件
命令名称:man
命令所在路径:/usr/bin/man
执行权限:所有用户
语法:man [命令或配置文件]
(空格) 或f 翻页
(Enter) 换行
q或Q 退出
功能描述:获得帮助信息
范例:
$ man ls
查看ls命令的帮助信息
$ man services
查看配置文件services的帮助信息
命令:whatis
语法:whatis 命令
功能描述:获得命令的简单介绍信息
范例:whatis ls
命令名称:help
命令所在路径:Shell内置命令
执行权限:所有用户
语法:help 命令
功能描述:获得Shell内置命令的帮助信息
范例:
$ help umask
查看umask命令的帮助信息
命令名称:useradd
命令所在路径:/usr/sbin/useradd
执行权限:root
语法:useradd 用户名
功能描述:添加新用户
范例:
$ useradd zhangdapao
命令名称:passwd
命令所在路径:/usr/bin/passwd
执行权限:所有用户
语法:passwd 用户名
功能描述:设置用户
范例:
$ passwd zhangdapao
命令名称:who
命令所在路径:/usr/bin/who
执行权限:所有用户
语法:who
功能描述:查看登录用户信息
范例:
$ who
显示所有登录用户信息
命令名称:w
命令所在路径:/usr/bin/w
执行权限:所有用户
语法:w
功能描述:查看登录用户详细信息
范例:
$ w
命令 | 含义 |
---|---|
su | 切换到root用户 |
su root | 切换到root用户 |
su - | 切换到root用户,同时切换目录到/root |
su - root | 切换到root用户,同时切换目录到/root |
su 普通用户 | 切换到普通用户 |
su - 普通用户 | 切换到普通用户,同时切换普通用户所在的目录 |
命令名称:gzip
命令所在路径:/bin/gzip
执行权限:所有用户
语法:gzip [文件]
功能描述:压缩文件
压缩后文件格式:.gz
范例:
gzip text01
命令名称:gunzip [= gzip -d]
命令所在路径:/bin/gunzip
执行权限:所有用户
语法:gunzip [压缩文件]
功能描述:解压缩.gz的压缩文件
范例:
$ gunzip text01.gz
tips:只能压缩文件不能压缩目录
压缩语法:tar -zcvf 压缩后文件名 被压缩文件
解压缩语法 tar -zxvf 压缩文件名 -C 解压后文件所在目录
- 参数1
参数 描述 -z 操作tar.gz文件需要使用 -x 解压缩 -c 压缩 -v 显示压缩或者解压缩的执行过程信息 -f 要处理的文件file,必须放在最后 参数2:-C 指定解压后的文件存放的位置
tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
命令名称:tar
命令所在路径:/bin/tar
执行权限:所有用户
语法:tar 选项[-zcf] [压缩后文件名] [目录]
-c 打包
-v 显示详细信息
-f 指定文件名
-z 打包同时压缩
功能描述:打包目录 压缩后文件格式:.tar.gz
范例:
$ tar -zcf Japan.tar.gz Japan
将目录Japan打包并压缩为.tar.gz文件
tar命令解压缩语法:
-x 解包
-v 显示详细信息
-f 指定解压文件
-z 解压缩
范例:
$ tar -zxvf Japan.tar.gz
命令名称:zip
命令所在路径:/usr/bin/zip
执行权限:所有用户
语法:
zip 选项[-r] [压缩后文件名] [文件或目录]
-r 压缩目录
功能描述:压缩文件或目录
压缩后文件格式:.zip
范例:
$ zip text01.zip text01
压缩文件
$ zip -r zhang.zip zhang
压缩目录
tips:会保留原文件
命令名称:unzip
命令所在路径:/usr/bin/unzip
执行权限:所有用户
语法:unzip [压缩文件]
功能描述:解压.zip的压缩文件
范例:$ unzip text01.zip
指令名称:write
指令所在路径:/usr/bin/write
执行权限:所有用户
语法:write <用户名>
功能描述:给用户发信息,以Ctrl+D保存结束
范例:
write zhang
指令名称:wall
命令英文原意:write all
指令所在路径:/usr/bin/wall
执行权限:所有用户
语法:wall [message]
功能描述:发广播信息
范例:
wall HelloWord
命令名称:ping
命令所在路径:/bin/ping
执行权限:所有用户
语法:ping 选项 IP地址
-c 指定发送次数
功能描述:测试网络连通性
范例:
ping 192.168.1.156
命令名称:ifconfig
命令所在路径:/sbin/ifconfig
执行权限:root
语法:ifconfig 网卡名称 IP地址
功能描述:查看和设置网卡信息
范例:
ifconfig
命令名称:mail
命令所在路径:/bin/mail
执行权限:所有用户
语法:mail [用户名]
功能描述:查看发送电子邮件
范例:
mail root
命令名称:last
命令所在路径:/usr/bin/last
执行权限:所有用户
语法:last
功能描述:列出目前与过去登入系统的用户信息
范例:
last
命令名称:netstat
命令所在路径:/bin/netstat
执行权限:所有用户
语法:netstat [选项]
功能描述:显示网络相关信息
选项:
-t : TCP协议
-u : UDP协议
-l : 监听
-r : 路由
-n : 显示IP地址和端口号
范例:
netstat -tlun 查看本机监听的端口
netstat -an 查看本机所有的网络连接
netstat -rn 查看本机路由表
查看某一端口是否被占用:netstat -tunlp |grep 2181
命令名称:setup
命令所在路径:/usr/bin/setup
执行权限:root
语法:setup
功能描述:配置网络
范例:
setup
命令名称:mount
命令位置:/bin/mount
执行权限:所有用户
命令语法:mount [-t 文件系统] 设备文件名 挂载点
范例:
mount -t iso9660 /dev/sr0 /mnt/cdrom
1. 命令名称:shutdown
shutdown [选项] 时间
shutdown now
选项:
-c: 取消前一个关机命令
-h: 关机
-r: 重启
2.查看ip地址
ip a
ip addr
3.ping网络(测试网络连通)
ip 目标机器的ip
4.查看系统时间
date
5.注销
logout
6.重启
reboot
7.清屏
clear
8.静态查看系统进程
ps -aux
9.实时查看系统进程
top
# 快捷键
↑ 下翻
↓ 上翻
q 退出
10.关闭进程
kill 进程id
11.强制关闭进程(谨慎使用)
kill -9 进程id
12.覆盖输出
# 将命令1的执行结果,输出到后面的文件中。
`覆盖写入`
命令1 > 文件
# 例子
date > date.log
13. 追加输出
# 将命令1的执行结果,输出到后面的文件中。
`追加写入`
命令1 >> 文件
# 例子
date >> date.log
例如:sshd network firewalld 等
# 服务器管理命令
systemctl status 服务名
# 启动服务
systemctl start 服务名
# 重启服务
systemctl restart 服务名
# 停止服务
systemctl stop 服务名
# 禁止服务随linux启动。
systemctl disable 服务名
# 设置服务随linux启动。
systemctl enable 服务名
服务名:network
[root@centos7 dirnew]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
----------------网卡对应的文件内容---------------------
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="0bd5d8a5-fe1b-42de-82bd-bfa7d2984b95"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.199.8" # 修改这里的ip地址即可
PREFIX="24"
GATEWAY="192.168.199.2"
DNS1="192.168.199.2"
DNS2="8.8.8.8"
IPV6_PRIVACY="no"
[root@centos7 dirnew]# systemctl restart network #重启网卡服务
服务名:firewalld
# 开启防火墙
systemctl start 服务名
# 关闭防火墙(服务器重启后还会自动开启防火墙)
systemctl stop firewalld
# 禁止防火墙开机启动
systemctl disable firewalld
# 查看主机名
hostname
# 设置主机名
hostnamectl set-hostname 主机名
域名解析
本地hosts编辑
[root@centos7 ~]# vim /etc/hosts
--------------下面是文件------------------
192.168.199.8 centos7
# 远程登录linux
ssh 远程linux的ip或者映射域名
简介
ssh登录远程linux,免去输入密码的麻烦
# 生成公钥和私钥
[root@centos7 ~]# ssh-keygen
------------执行结果-----------
[root@centos7 ~]# tree .ssh
.ssh
├── id_rsa # 私钥
├── id_rsa.pub # 公钥
└── known_hosts
# 发送公钥
`保存公钥的文件为/root/.ssh/authorized_keys`
[root@centos7 .ssh]# cat id_rsa.pub > authorized_keys
# 发送公钥
[root@centos7 .ssh]# ssh-copy-id 目标主机的ip
scp 本地的文件 root@远程linuxip:/远程linux的文件路径
scp -r 本地的目录 root@远程linuxip:/远程linux的文件路径
Vim 简介:
Vim是一个功能强大的全屏幕文本编辑器, 是Linux/UNIX上最常用的文本编辑器, 它的作用是建立、编辑、显示文本文件。
Vim 没有菜单,只有命令。
命令 | 作用 |
---|---|
a | 在光标所在字符后插入 |
A | 在光标所在行尾插入 |
i | 在光标所在字符前插入 |
I | 在光标所在行行首插入 |
o | 在光标下插入新行 |
O | 在光标上插入新行 |
命令 | 作用 |
---|---|
:set nu | 设置行号 |
:set nonu | 取消行号 |
gg | 到第一行 |
GG | 到最后一行 |
nG | 到第n行 |
:n | 到第n行 |
$ | 移至行尾 |
0 | 移至行首 |
命令 | 作用 |
---|---|
x | 删除光标所在处字符 |
nx | 删除光标所在处后n个字符 |
dd | 删除光标所在行,ndd删除n行 |
dG | 删除光标所在行到文件末尾内容 |
D | 删除光标所在处到行尾内容 |
:n1,n2d | 删除指定范围的行 |
命令 | 作用 |
---|---|
yy | 复制当前行 |
nyy | 复制当前行以下n行 |
dd | 剪切当前行 |
ndd | 剪切当前行以下n行 |
p、P | 粘贴在当前光标所在行下或者行上 |
命令 | 作用 |
---|---|
:w | 保存修改 |
:w 文件名 | 另存为指定文件 |
:wq | 保存修改并退出 |
ZZ | 快捷键,保存修改并退出 |
:q! | 不保存修改退出 |
:wq! | 保存修改退出(文件所有者和root均可忽略只读权限强制写入) |
配置MobaXterm的默认文本编辑器
免去vim命令的麻烦
源码包:脚本安装
二进制包:RPM包
源码包的优点是:
开源,如果有足够的能力,可以修改源代码
可以自由选择所需的功能
软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
卸载方便
源码包的缺点
安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误
编译过程时间较长,安装比二进制安装时间长
因为是编译安装,安装过程中一旦报错新手很难解决
二进制包的优点
包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
安装速度比源码包安装快的多
二进制包缺点:
经过编译,不再可以看到源代码
功能选择不如源码包灵活
依赖性
RPM包依赖性
树形依赖: a→b→c
环形依赖: a→b→c→a
模块依赖: 模块依赖查询网站:www.rpmfind.net
简介:类似于windows中的.exe程序
1. 安装rpm软件
语法:`rpm -ivh xxx.rpm`
选项:
-i(install) 安装
-v(verbose) 显示详细信息
-h(hash) 显示进度
--nodeps 不检测依赖性
2. 查看系统中是否已安装的过该rpm软件
语法:`rpm -qa 软件名`
3. 卸载rpm软件
语法:`rpm -e 软件名`
选项:
-e(erase) 卸载
--nodeps 不检查依赖性
4. 升级rpm软件
语法:rpm -Uvh 包全名
选项:
-U(upgrade) 升级
5. 例子:安装tree工具
作用:查看某个目录下的文件信息
# 以树状结构查看2层文件信息
tree -L 2 要查看的路径
yum基于rpm实现的,提供了除了rpm的安装软件、卸载软件等功能以外还有,自动查找、下载软件并自动处理软件的彼此之间的依赖关系,下载并安装依赖包。
1.列出所有可以安装的软件包
yum list
查询所有可用软件包列表
2.查找软件包
yum search all 软件名
yum search 关键字
搜索服务器上所有和关键字相关的包
3.安装软件
yum –y install 包名
选项:
install 安装
-y 自动回答yes
4.升级软件
yum -y update 包名
选项:
update 升级
-y 自动回答yes
5.卸载软件
yum -y remove 包名
选项:
remove 卸载
-y 自动回答yes
yum grouplist
列出所有可用的软件组列表
yum groupinstall 软件组名
安装指定软件组,组名可以由grouplist查询出来
yum groupremove 软件组名
卸载指定软件组
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文件名为sh。
C Shell: C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名
Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh
Bash: Bash与sh兼容,现在使用的Linux 就是使用Bash作为用户的基本Shell。
命令名称:echo
echo [选项] [输出内容]
选项: -e: 支持反斜线控制的字符转换
控制字符 | 作用 |
---|---|
\ | 输出\ |
\a | 输出警告音 |
\b | 退格键,向左删除键 |
\c | 取消输出行末的换行符,和“-n”选项一致 |
\e | ESCAPE键 |
\f | 换页符 |
\n | 换行符 |
\r | 回车键 |
\t | 制表符,Tab键 |
\v | 直制表符 |
\0nnn | 按照八进制ASCII码表输出字符,0为数字零,nnn为三位八进制数 |
\xhh | 按照十六进制ASCII码表输出字符,其中hh是两位十六进制数 |
示例:
[root@zhangRabbitMQ zhang]# echo -e "ab\bc"
ac
[root@zhangRabbitMQ zhang]# echo -e "a\tb\tc\nd\te\tf"
a b c
d e f
[root@zhangRabbitMQ zhang]# vi /tmp/hello.sh
#!/bin/bash
echo "helloword"
[root@zhangRabbitMQ zhang]# chmod 755 /tmp/hello.sh
[root@zhangRabbitMQ zhang]# /tmp/hello.sh
helloword
历史命令:history
命令名称:history
[root@localhost ~]# history [选项] [历史命令保存文件]
选项:
-c: 清空历史命令
-w: 把缓存中的历史命令写入历史命令保存文件
~/.bash_history
历史命令的调用
使用上、下箭头调用以前的历史命令
使用“!n”重复执行第n条历史命令
使用“!!”重复执行上一条命令
使用“!字串”重复执行最后一条以该字串开头的命令
命令与文件补全
命令别名
[root@localhost ~]# alias 别名='原命令'
#设定命令别名
[root@localhost ~]# alias
#查询命令别名
命令的执行顺序
让别名永久生效,需要把配置写入配置文件/root/.bashrc中
Bash 常用快捷键
同时输出正确和错误
多命令顺序执行
管道符:|
命令名称:|
# 语法,将命令1的输出结果,作为命令2的输入: 命令1 | 命令2
命令格式:
[root@localhost ~]# 命令1 | 命令2
#命令1的正确输出作为命令2的操作对象
例子:
[root@localhost ~]# ll -a /etc/ | more
[root@localhost ~]# netstat -an | grep "ESTABLISHED"
查找aries用户:cat /etc/passwd | grep -n “baizhi”
查找aries组:cat /etc/group | grep -n “baizhi”
查找sshd进程:ps -aux | grep sshd
通配符
其他特殊符号
什么是变量
变量设置规则
变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。
在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。
变量用等号连接值,等号左右两侧不能有空格。
变量的值如果有空格,需要使用单引号或双引号包括。
在变量的值中,可以使用“\”转义符。
如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“ 变量名”或用 变量名”或用 变量名”或用{变量名}包含。
如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。
环境变量名建议大写,便于区分。
变量分类
用户自定义变量 ? 环境变量:这种变量中主要保存的是和系统操作环境相关的数据。
位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
本地变量
[root@localhost ~]# name="shen chao"
[root@localhost ~]# aa=123
[root@localhost ~]# aa="$aa"456
[root@localhost ~]# aa=${aa}789
[root@localhost ~]# echo $name
[root@localhost ~]# set
查看当前系统全部变量
[root@localhost ~]# unset name
环境变量是什么
设置环境变量
export 变量名=变量值
申明变量
env
查询变量
unset 变量名
删除变量
系统常见环境变量
PATH:系统查找命令的路径
[root@localhost ~]# echo $PATH /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin: /sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PATH="$PATH":/root/sh
PATH变量叠加
PS1:定义系统提示符的变量
\d:显示日期,格式为“星期 月 日”
\h:显示简写主机名。如默认主机名“localhost”
\t:显示24小时制时间,格式为“HH:MM:SS”
\T:显示12小时制时间,格式为“HH:MM:SS”
\A:显示24小时制时间,格式为“HH:MM”
\u:显示当前用户名
\w:显示当前所在目录的完整名称
\W:显示当前所在目录的最后一个目录
\#:执行的第几个命令
\$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”
示例:
[root@localhost ~]# PS1='[\u@\t \w]\$ '
[root@04:50:08 /usr/local/src]#PS1='[\u@\@ \h \# \W]\$‘
[root@04:53 上午 localhost 31 src]#PS1='[\u@\h \W]\$ '
位置参数变量
示例:
#!/bin/bash
num1=$1
num2=$2
sum=$(( $num1 + $num2))
#变量sum的和是num1加num2
echo $sum
#打印变量sum的值
[root@zhangRabbitMQ zhang]# /tmp/sum.sh 1 2
3
declare声明变量类型
数值运算
[root@localhost ~]# declare [+/-][选项] 变量名
选项:
-: 给变量设定类型属性
+: 取消变量的类型属性
-i: 将变量声明为整数型(integer)
-x: 将变量声明为环境变量
-p: 显示指定变量的被声明的类型
方法1:
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22 #给变量aa和bb赋值
[root@localhost ~]# declare -i cc=$aa+$bb
方法2:expr或let数值运算工具
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
#给变量aa和变量bb赋值
[root@localhost ~]# dd=$(expr $aa + $bb)
#dd的值是aa和bb的和。注意“+”号左右两侧必须有空格
方法3:“$((运算式))”或“$[运算式]” (推荐)
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
[root@localhost ~]# ff=$(( $aa+$bb ))
[root@localhost ~]# gg=$[ $aa+$bb ]
source命令
source命令通常用于保留、更改当前shell中的环境变量。
[root@localhost ~]# source 配置文件
或
[root@localhost ~]# . 配置文件
环境变量配置文件简介
环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH、HISTSIZE、PS1、HOSTNAME等默认环境变量。
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc
配置文件列表如下:
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc
tips:/etc 目录下的对所有用户都生效
~/.bash_profile 和 ~/.bashrc -> 每个用户自己的配置文件,只对用户生效。
配置文件读取顺序
上图从左到右如果有叠加。后面的命令会覆盖前面的命令。
/etc/profile的作用:
USER变量:
LOGNAME变量:
MAIL变量:
PATH变量:
HOSTNAME变量:
HISTSIZE变量:
umask:
调用/etc/profile.d/*.sh文件
~/.bash_profile的作用
用了~/.bashrc文件。
在PATH变量后面加入了“:$HOME/bin”这个目录
注销时生效的环境变量配置文件
其他配置文件
Shell登录信息
正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配
。grep、awk、sed等命令可以支持正则表达式。
通配符用来匹配符合条件的文件名,通配符是完全匹配
。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。
基础正则表达式
示例1:"*" 前一个字符匹配0次或多次
● grep "a*" test_rule.txt
#匹配所有内容,包括空白行
● grep "aa*" test_rule.txt
#匹配至少包含有一个a的行
● grep "aaa*" test_rule.txt
#匹配最少包含两个连续a的字符串
● grep "aaaaa*" test_rule.txt
#则会匹配最少包含四个个连续a的字符串
示例2:"." 匹配除了换行符外任意一个字符
● grep "s..d" test_rule.txt
#“s..d”会匹配在s和d这两个字母之间一定有两个字符的单词
● grep "s.*d" test_rule.txt
#匹配在s和d字母之间有任意字符
● grep ".*" test_rule.txt
#匹配所有内容,0或多个任意字符
示例3: "^" 匹配行首,"$" 匹配行尾
● grep "^M" test_rule.txt
#匹配以大写“M”开头的行
● grep "n$" test_rule.txt
#匹配以小写“n”结尾的行
● grep -n "^$" test_rule.txt
#会匹配空白行
示例4:"[]" 匹配中括号中指定的任意一个字符,只匹配一个字符
● grep "s[ao]id" test_rule.txt
#匹配s和i字母中,要不是a、要不是o
● grep "[0-9]" test_rule.txt
#匹配任意一个数字
● grep "^[a-z]" test_rule.txt
#匹配用小写字母开头的行
示例5:"[^]" 匹配除中括号的字符以外的任意一个字符
● grep "^[a-z]" test_rule.txt
#匹配不用小写字母开头的行
● grep "^[a-zA-Z]" test_rule.txt
#匹配不用字母开头的行 “\” 转义符
● grep "\.$" test_rule.txt
#匹配使用“.”结尾的行
示例6:"\{n\}" 表示其前面的字符恰好出现n次
● grep "a\{3\}" test_rule.txt
#匹配a字母连续出现三次的字符串
● grep "[0-9]\{3\}" test_rule.txt
#匹配包含连续的三个数字的字符串
示例7:"\{n,\}" 表示其前面的字符出现不小于n次
● grep "^[0-9]\{3,\}[a-z]" test_rule.txt
#匹配最少用连续三个数字开头的行
示例8:"\{n,m\}" 匹配其前面的字符至少出现n次,最多出现m次
???????● grep "sa\{1,3\}i" test_rule.txt
#匹配在字母s和字母i之间有最少一个a,最多三个a
[root@localhost ~]# cut [选项] 文件名
选项:
-f 列号: 提取第几列
-d 分隔符: 按照指定分隔符分割列
1.创建演示文件student.txt
[root@localhost ~]# vi student.txt
ID Name gender Mark
1 Liming M 86
2 Sc M 90
3 Gao M 83
示例
[root@localhost ~]# cut -f 2 student.txt
#提取第二列
[root@localhost ~]# cut -f 2,3 student.txt
#提取第二第三列
[root@localhost ~]# cut -d ":" -f 1,3 /etc/passwd
#以:为分隔符提取第一第三列
2.cut命令的局限
[root@localhost ~]# df -h | cut -d " " -f 1,3
#有空格时提取会出问题,不能识别多个空格情况
[root@localhost ~]# printf ’输出类型输出格式’ 输出内容
输出类型:
%ns : 输出字符串。n是数字指代输出几个字符
%ni : 输出整数。n是数字指代输出几个数字
%m.nf : 输出浮点数。m和n是数字,指代输出的整数位数和小数位数。如%8.2f代表:2位是小数,8位是整数。
其中输出格式选项有:
输出格式:
控制字符 | 作用 |
---|---|
\a | 输出警告声音 |
\b | 输出退格键,也就是Backspace键 |
\f | 清除屏幕 |
\n | 换行 |
\r | 回车,也就是Enter键 |
\t | 水平输出退格键,也就是Tab键 |
\v | 垂直输出退格键,也就是Tab键 |
[root@localhost ~]# awk ‘条件1{动作1} 条件2{动作2}…’ 文件名
条件(Pattern):
一般使用关系表达式作为条件
x > 10 判断变量 x是否大于10
x>=10 大于等于
x<=10 小于等于
动作(Action):
格式化输出
流程控制语句
示例
[root@zhangRabbitMQ zhang]# vi /tmp/student.txt
id name java linux mysql
1 bilei 88 88 88
2 zhang 60 60 60
[root@zhangRabbitMQ zhang]# awk '{printf $2 "\t" $5 "\n"}' /tmp/student.txt
name mysql
bilei 88
zhang 60
BEGIN
#awk 'BEGIN{printf "This is a transcript \n" } {printf $2 "\t" $6 "\n"}' student.tx
END
# awk 'END{printf "The End \n" }
{printf $2 "\t" $6 "\n"}' student.txt
FS内置变量
#cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN {FS=":"} {printf $1 "\t" $3 "\n"}'
关系运算符
#cat student.txt | grep -v Name | awk '$6 >= 87 {printf $2 "\n" }'
sed 是一种几乎包括在所有 UNIX 平台(包括 Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。
[root@localhost ~]# sed [选项] ‘[动作]’ 文件名
选项:
-n: 一般sed命令会把所有数据都输出到屏幕 , 如果加入此选择,则只会把经过 sed命令处 理的行输出到屏幕。
-e: 允许对输入数据应用多条sed命令编辑
-i: 用sed的修改结果直接修改读取数据的文件, 而不是由屏幕输出
动作:
a \: 追加,在当前行后添加一行或多行。添加多行时,除最后 一行 外,每行末尾需要用“\”代 表数据未完结。
c \: 行替换,用c后面的字符串替换原数据行,替换多行时,除最 后一行外,每行末尾需“\”代 表数据未完结。
i \: 插入,在当期行前插入一行或多行。插入多行时,除最后 一行 外,每行末尾需要“\”代
表数据未完结。
d: 删除,删除指定的行。
p: 打印,输出指定的行。
s: 字串替换,用一个字符串替换另外一个字符串。格式为“行范 围s/旧字串/新字串/g”(和vim
中的替换格式类似)。
示例
[root@zhangRabbitMQ zhang]# vi /tmp/student.txt
id name java linux mysql
1 bilei 88 88 88
2 zhang 60 60 60
#查看文件的第二行
[root@zhangRabbitMQ tmp]# sed '2p' student.txt
id name java linux mysql
1 bilei 88 88 88
1 bilei 88 88 88
2 zhang 60 60 60
#只显示第二行
[root@zhangRabbitMQ tmp]# sed -n '2p' student.txt
1 bilei 88 88 88
#删除第二行到第四行的数据,但不修改文件本身
[root@zhangRabbitMQ tmp]# sed '2,3d' student.txt
id name java linux mysql
[root@localhost ~]# sort [选项] 文件名
选项:
-f: 忽略大小写
-n: 以数值型进行排序,默认使用字符串型排序
-r: 反向排序
-t: 指定分隔符,默认是分隔符是制表符
-k n[,m]: 按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)
示例
[root@localhost ~]# sort /etc/passwd
#排序用户信息文件
[root@localhost ~]# sort -r /etc/passwd
#反向排序
[root@localhost ~]# sort -t ":" -k 3,3 /etc/passwd
#指定分隔符是“:”,用第三字段开头,第三字段结尾排序,就是只用第三字段排序
[root@localhost ~]# sort -n -t ":" -k 3,3 /etc/passwd
#指定分隔符是“:”,用第三字段开头,第三字段结尾排序,以数值型进行排序
[root@localhost ~]# wc [选项] 文件名
选项:
-l: 只统计行数
-w: 只统计单词数
-m: 只统计字符数