Linux学习

1. vi和vim编辑器

快捷键:
(1)复制当前行yy,当前向下5行 5yy, 粘贴 p ,撤回 u
(2)删除当前行dd,删除当前向下的5行 5dd
(3)在文件中查找某个单词[命令行下 /关键字,回车 查找,输入n 查找下一个
(4)设置文件行号 [命令行下 :set nu 和 :set nonu]
(5)最末行G 最首行gg,将光标移动到20行 [20 shift+g]

2. 关机和重启

shutdown -h now 立即关机
shutdown -h 1 1分钟后关机
shutdown -r now 立即重启
halt 关机
reboot 重启
sync 把内存数据写到磁盘中 (关机重启前重要的一步)
logout 退出登陆,注销用户远程登陆有效

3. 用户管理

3.1 用户

useradd [选项] 用户名 添加用户
useradd -d 指定目录 用户名 添加用户,给新创建的用户指定家目录
passwd 用户名 设置用户密码
userdel 用户名 仅删除用户
userdel -r 用户名 删除用户及其主目录
id 用户名 查询用户信息
su – 用户名 切换用户
exit 退出当前用户
whoami / who am i 查看当前用户

3.2 组管理

groupadd 组名 新增组
groupdel 组名 删除组
useradd -g 用户组 用户名 增加用户时添加组
usermod -g 用户组 用户名 修改用户的组
cat /etc/group 查看所有组
id 用户名 查看用户所在组

3.3 用户文件

用户配置文件 /etc/passwd
组配置文件 /etc/group
口令文件 /etc/shadow

4. 实用指令

运行级别 配置文件/etc/inittab
0:关机 1:单用户(找回丢失密码) 2:多用户无网络服务
3:多用户有网络服务 4:未使用 5:图形界面 6:系统重启
init 数字 切换运行级别

5. 帮助指令 man、help获得帮助信息

man [命令或配置文件] (功能描述,获得帮助信息)
help 命令 (功能描述,获得shell内置命令的帮助信息)

6. 文件目录类

pwd 显示当前工作目录的绝对路径
ls [选项] [目录或是文件] -a 显示当前目录所有问价和目录,包括隐藏的
-l 以列表的方式显示信息
cd ~或cd : 回到家目录
cd… 返回上一级 绝对路径:/home 相对路径: …/
mkdir [选项] 要创建的目录 创建目录 -p 创建多级目录
rmdir [选项] 要删除的空目录
rm -rf 要删除的非空目录
touch 文件名 创建空文件(可同时多个文件)
cp [选项] 被拷贝对象 目标目录 复制文件 -r 递归复制整个文件夹
\cp 强制覆盖
rm [选项] 要删除的文件或目录 -r 删除整个文件夹
-f 强制删除不提示
mv 旧文件名 新文件名 重命名
mv 当前文件 目标文件夹 移动文件
cat [选项] 要查看的文件(只读) 查看文件内容 -n 显示行号 | more 分页
more 文件名 基于VI编辑器的文本过滤器,以全屏方式按页显示文本
空格键 向下一页;enter键 向下一行;q 退出;Ctrl F 向下一屏;
Ctrl B返回上一屏;= 显示当前行号;:f 输出文件名和当前行的行号
less 文件名 空白键 向下翻一页 ;[page down] ;[page up] ;
/字串 向下搜索(n向下N向上)
?字串 与/字串相反 q退出
指令和>>指令
// >输出重定向和>>追加
基本语法
(1)ls -l > 文件 (将列表的内容写到文件中,覆盖)
(2)ls -l >> 文件 (将列表的内容追加到文件的末尾)
(3)cat 文件1 > 文件2 (将文件1的内容覆盖到文件2)
(4)echo “内容” >> 文件 (将内容追加到文件末尾)
echo [选项] [输出内容] 输出内容到控制台输出环境变量
echo $PATH
head [选项] 文件 查看文件前10行 -n数字 查看前n行
tail [选项] 文件 与head相反 -f 实时追踪文件更新 (重要)
tail -f log.txt
ln -s [原文件或目录] [软连接名] 给原文件创建一个软链接
history 查看历史命令 !数字 执行第n个历史命令

7.时间日期类

date指令
(1) date 显示当前日期
(2) date +%Y 显示当前年份
(3) date +%m 显示当前月份
(4) date +%d 显示当前天
(5) date “+%Y-%m-%d %H:%M:%S” 显示日期
(6) date -s “2018-10-10 11:11:11” 设置系统时间
cal [选项] 查看日历
(1) cal 显示当前日历
(2) cal 2020 显示2020年日历

8.搜索查询类指令

find指令
从指定目录向下递归遍历其各个子目录,将满足条件的文件或目录显示在终端
find [搜索范围] [选项-name -user -size]
(1)find /home -name hello.txt 文件名搜索 (*.txt通配符查找 \转义)
(2)find /root -user root 文件拥有者搜索
(3)find /root -size +20M 文件大小搜索(+n 大于n , –n 小于n)
locate指令
(1)安装locate模块 yum -y install mlocate
(2)使用 updatedb 创建locate数据库
(3)locate bad.txt 搜索文件
grep指令和管道符号| cat bad.txt | grep -n good
管道符号| 表示将前一个命令的输出结果输出传递给后面的命令处理
grep [选项] 查找内容 源文件 选项-n 显示匹配行及行号
-i 忽略字母大小写

9.压缩和解压缩

gzip压缩和gunzip解压缩
gzip 文件 压缩文件为.gz格式,不保留源文件
gunzip 文件.gz 解压缩
zip压缩和unzip解压
zip [选项] XXX.zip 要压缩的文件 压缩
unzip [选项] XXX.zip 解压
选项: -r 递归压缩,压缩目录 zip -r mypackage.zip /root/*
-d 解压到指定目录 unzip -d /root/mupack/ mypackage.zip
tar解压缩
tar打包指令,压缩文件为.tar.gz的文件
tar [选项] XXX.tar.gz XXX文件 将XXX文件打包为XXX.tar.gz
选项 :-c产生tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包.tar文件
tar -zcvf a.tar.gz bad.txt good.txt 同时打包两个文件
tar -zcvf rooqt.tar.gz /root/gf/ 打包整个目录
tar -zxvf a.tar.gz 解压文件
tar -zxvf a.tar.gz -C /root/gf/ 解压到制定文件夹

10.组管理和权限管理

ls -ahl 查看文件的所有者
实例:
(1)创建一个组police groupadd police
(2)创建一个用户tom,属于police useradd -g police tom passwd tom
(3)使用tom创建文件ok.txt touch ok.txt
chown 用户名 文件名 修改文件所有者 chown tom apple.txt
文件所有者改变,文件所在组不一定改变
chgrp 组名 文件名 修改文件所在组
usermod -g 组名 用户名 改变用户所在组
usermod -d 目录名 用户名 改变该用户登录的初始目录
文件权限 -rw-r–r-- 1 root root 291 Jan 10 18:33 bad.txt
0位为文件类型,-为普通文件,d为目录文件,l为软链接,c为字符设备,b为块文件
1至3位为所有者的权限,4至6位为所在组用户的权限,7至8位为其他组权限
r读权限,w写权限(删除需要对该目录有写权限),x执行权限(可进入目录),可用数字表示,r=4,w=2,x=1,rwx=7
文件数目 1为硬链接,是一般文件;其他数字为该目录文件的子目录数目
文件大小(字节) 291
最后修改日期
修改文件权限 chmod
方式一: + - = 变更权限 (u所有者,g所有组,o其他人 ,a所有人)
(1) chmod u=rwx,g=rx,o=x 文件目录名
(2) chmod o+w 文件目录名
(3) chmod a-x 文件目录名
方式二:通过数字变更
r=4 w=2 x=1 rwx=7
chmod u=rwx,g=rx,o=x 文件名 相当于chmod 751 文件名
修改文件所有者
chown newowner file 修改文件所有者
chown newowner:newgroup file 修改文件所有者和所有组
-R 如果是目录,使其所有子文件或目录递归生效

11. crond任务调度

系统在某个时间执行的特定的命令或程序
crontab [选项]
-e 编辑定时任务,-l 查询定时任务, -r 删除当前用户所有的crontab任务
任务的要求:设置任务调度文件:/etc/crontab ; 设置个人任务调度;
执行crontab -e 命令; (对于简单的任务,直接在crontab中加入任务,复杂任务需要写脚本)。
占位符 第一个* 一小时当中的第几分钟 0-59
第二个* 一天当中的第几小时 0-23
第三个* 一个月当中的第几天1-31
第四个* 一年当中的第几个月 1-12
第五个* 一周当中的星期几 0-7
符号说明: * 表示任何时间 ,表示不连续的时间 -代表连续的时间范围 /n表示每隔多久
service crond restart 重启任务调度
每隔一分钟,将当前的日期信息,追加到/tmp/mydata 文件中
(1)编写文件 /home/mytask1.sh
date>>/tmp/mydate
(2)给mytask1.sh一个可执行权限
(3)crontab -e
(4)
/1 * * * * /home/mytask1.sh

12.磁盘分区和挂载

(1)mbr分区:最多支持四个主分区,系统只能安装在主分区,扩展分区要占一个主分区,mbr最大只支持2TB,但拥有最好的兼容性。
(2)gtp分区:支持无限主分区,最大支持18EB
Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘
对于 IDE 硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指 IDE 硬盘了。“x”为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),“~”代表分区,前四个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。例,hda3 表示为第一个 IDE 硬盘上的第三个主分区或扩展分区,hdb2 表示为第二个 IDE 硬盘上的第二个主分区或扩展分区。
对于 SCSI 硬盘则标识为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和 IDE 硬盘的表示方法一样。
lsblk [选项] 查看当前系统的分区情况 -f
增加一块硬盘
1)虚拟机添加硬盘
2)分区 fdisk /dev/sdb
3)格式化 mkfs -t ext4 /dev/sdb1
4)挂载 先创建一个 /home/newdisk , 挂 载 mount /dev/sdb1 /home/newdisk
5)设置可以自动挂载(永久挂载,当你重启系统,仍然可以挂载到 /home/newdisk) 。
vim /etc/fstab
/dev/sdb1 /home/newdisk ext4 defaults 0 0
磁盘情况查询指令 df [选项] -h -lh
查询指定目录的磁盘占用情况 du [选项] /目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
统计文件数 ls -l /root | grep “^-” | wc -l 列举、过滤、汇总
统计目录数 ls -l /root | grep “^d” | wc -l 列举、过滤、汇总
包括子文件夹 -R
树状显示目录 tree (yum install tree安装tree)

13.网络环境配置

1. 自动获取IP

2. 设置固定IP

(1)修改配置文件指定IP,并连接到外网 ,编辑
vi /etc/sysconfig/network-scripts/ifcfg-ens33
(2)修改
ONBOOT=yes
BOOTPROTO=static
添加
IPADDR=192.168.44.145
NETMASK=255.255.255.0
GATEWAY=192.168.44.2
DNS1=192.168.44.2
(3)重启网络服务 service network restart

3. 随机生成uuid

14.进程管理

基本:(1)每个执行的程序都称为进程,且分配一个ID号;(2)每个进程对应一个父进程,父进程可以复制多个子进程;(3)进程的存在前台或后台(守护进程)
ps [选项] 查看正在执行的进程(PID进程识别号,TTY终端机号,TIME此进程所需要CPU时间,CMD正在执行的命令或进程名)
-a 显示当前终端的所有进程信息
-u 以用户格式显示进程信息
-x 显示后台进程运行的参数
-ef 父进程 -e显示所有进程,-f全格式
ps -aux|more
ps -aux | grep xxx
USER(用户名)PID(进程号) %CPU(CPU) MEM(内存)VSZ(虚拟内存) RSS(物理内存)TTY(使用的终端) STAT(进程状态,S休眠,R运行,Z僵尸进程,D短期等待,T被跟踪) START(启动时间)TIME(占用CPU的总时间) COMMAND(进程执行时的命令行) PPID父进程 C计算执行优先级的因子
kill [选项] 进程号 通过进程号终止进程 -9 强迫进程立即停止
killall 进程名称 通过进程名称杀死进程
pstree [选项] 直观的查看进程 -p 显示进程的PID -u 显示进程的所属用户

服务管理service 运行在后台,监听某个端口,等待其他程序的请求,即守护进程

service 服务名 [选项 start stop restart reload status]
systemctl [选项 start restart reload status] 服务名
systemctl status firewalld.service
Windows的dos下 Telnet ip 端口
查看服务名 (方式1,使用setup系统服务;方式2,/etc/init.d/服务名称)
服务的运行级别,查看或修改默认级别: vi/etc/inittab
chkconfig 对每个服务的各个运行级别设置自启动/关闭
chkconfig --list|grep xxx 查看服务
chkconfig 服务名 --list
chkcconfig --level 5 服务名 on/off

进程监控指令
top [选项] 动态监控指令 -d 秒数 指定top命令每隔几秒更新
-i 使top不显示任何闲置或者僵尸进程
-p 通过指定监控进程id来仅仅监控某个进程的状态
交互指令 p 以CPU使用率排序
M以内存使用率排序
N 以PID排序
q 退出top
u 回车 用户名 监视特定用户
k 回车 进程ID 终止指定进程

监控网络状态
netstat [选项] -an 按一定顺序排列输出
-p 显示哪个进程在调用

15. RPM与YUM

rpm包,Redhat package manager 红帽软件包管理工具

rpm -qa | grep xx 查询已安装的rpm列表,noarch通用版本
rpm -q 软件包名 查询软件包是否安装
rpm -qi 软件包名 查询软件包信息
rpm -ql 软件包名 查询软件包中的文件
rpm -qf 文件全路径名 查询文件所属的 软件包

rpm -e RPM包的名称 卸载rpm包 --nodeps 强制删除
rpm -ivh rpm包全路径名称 安装rpm包
-i安装 -v提示 -h进度条
yum list | grep xx软件列表
yum install xx 下载安装
ubuntu
sudo apt-get update 更新源
sudo apt-get install package 安装包
sudo apt-get remove package 删除包
sudo apt-cache show package 获取包的信息
sudo apt-get source package 下载该包的源代码

16.shell脚本编程

格式要求:以 #!/bin/bash 开头,并有执行权限
执行方式:

(1)输入脚本的路径,赋予其执行权限,执行

(2)执行脚本,sh 脚本路径。

shell变量
shell变量分为系统变量和用户自定义变量
系统变量
$HOME $PWD $PATH $USER等等
显示当前shell中所有变量 set
shell 变量的定义
定义变量 变量=值
撤销变量 unset 变量
声明静态变量 readonly 变量 (不能unset)

echo " path=$PATH,pwd=$PWD"
A=5 
echo "A=$A "   
echo "A=$A"

定义变量的规则
(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头
(2)等号两侧不能有空格
(3)变量名称一般为大写
将命令的返回值赋给变量
(1)a=’la -la’ 反引号,运行引号中的命令,并把结果返回给A
(2)A=$(ls -la) 等价于反引号

	B=`ls -la`
	echo "B=$B"
	C=$(date)
	echo $C

设置环境变量
在/etc/profile文件中 export 变量名=变量值 (将shell变量输出为环境变量)
BIN=2468
export BIN
source 配置文件 (将修改后的配置信息立即生效)
source /etc/profile
echo $变量名 (查询环境变量的值)
echo B I N ( 在 / e t c / p r o f i l e 文 件 中 配 置 环 境 变 量 BIN (在/etc/profile文件中配置环境变量 BIN/etc/profileABC,则$ABC可以在shell文件中引用)

多行注释 :<<! 注释内容 !

位置参数变量
shell脚本内部获得外部命令行的参数
$n(n为数字,0代表命令行本身,1-9代表第一到第九个参数,第十以上的参数${n}
$* (代表命令行中的所有参数,把所有参数看成一个整体)
$@ (代表命令行中的所有参数,把每个参数区别对待)
$# 代表命令行中所有参数的个数

预定义变量
shell设计者事先定义好的变量
$$ 当前进程的进程号
$! 后台运行的最后一个进程的进程号
$? 最后一次执行的命令的返回状态
运算符
$((运算式))或$[运算式]
'expr m + n' (运算符间要有空格)
*乘 /除 %取余
条件判断
[ 条件 ] 条件左右有空格,非空返回true,可使用$?验证(0为true,>1为FALSE )
-lt 小于 -le 小于等于 -eq 等于 -gt 大于 -ge大于等于 -ne不等于
[ 23 -gt 22 ]
= 字符串相同
-r 有读权限 -w 写权限 -x执行权限
-f 文件存在并且是一个常规文件 -e文件存在 -d文件存在并是一个目录
[ -e 文件路径 ]

if [ "ok" = "ok" ]
then
        echo "equal"
fi

if [ 23 -gt 22 ]
then
        echo "大于"
fi

case $变量名 in
“值1”)
如果变量的值等于值1,则执行程序1
;;
“值2”)
如果变量的值等于2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上 程序,则执行此程序
;;
esac

case $2 in
        "1")
                echo "周一"
                ;;
        "2")
                echo "周二"
                ;;
        *)
                echo "other"
                ;;
esac

for循环

for 变量 in 值1 值2 值3
do
程序
done

for j in "$@"
do
        echo "the numm is $@"
done 

for ((初始值;循环控制条件;变量变化))
do
程序
done

for i in "$*"
do
        echo "the num is $i"
done
echo "================"

SUM=0
for ((i=1;i<=100;i++))
do
        SUM=$[$SUM+$i]
done
echo "sum=$SUM"

while循环
while [ 条件判断式 ]
do
程序
done

SUM=0
i=0
while [ $i -le $1 ]
do
        SUM=$[$SUM+$i]
        i=$[$i+1]
done
echo "sum=$SUM"

read读取控制台输入
read [选项] [参数]
-p指定读取值时的提示符
-t 指定读取值时等待的时间(秒)
参数:指定读取值的变量名

read -p “请输入一个数” NMU1
echo “输入的值为 $NMU1”

系统函数
basename 返回完整路径最后/的部分,常用于获取文件名
basename [pathname] [suffix]
basename [string] [suffix] basename命令会删除所有的后缀包括最后一个“/”字符,然后将字符串显示出来
选项suffix为后缀,如果suffix被指定basename会将pathname或string中的suffix去掉

dirname 文件绝对路径 从给定的包含绝对路径的文件名中除去文件名部分剩下路径部分

自定义函数

[ function ] funname[()]
{
action;
[return int;]
}

调用直接写函数名 funname [值]

计算两个参数的和

function getSum(){
        SUM=$[$n1+$n2]
        echo "和是 $SUM"
}

read -p "请输入第一个数n1" n1
read -p "请输入第二个数n2" n2

调用getSum

getSum $n1 $n2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值