Linux

Linux

目录结构和特点

  • 一切皆是文件

  • 根目录/,所有的文件都挂在在这个节点下

  • Linux文件或者目录名称最长可以有256个字符

  • 以.开口开头的文件为隐藏文件,需要-a参数才能显示

  • . 代表当前目录

  • … 代表上一级目录

在这里插入图片描述

一 目录管理命令

1.1 目录切换命令

相对路径:在输入路径时,最前面不是/或者~,表示相对当前目录所在的目录位置

绝对路径:在输入路径时,最前面是/或者~,表示从根目录/家目录开始的具体位置位置

  • cd usr 切换到该目录下 usr 目录
  • cd ..(或cd../) 切换到上一层目录
  • cd / 切换到系统根目录
  • cd ~ 切换到用户主目录
  • cd - 切换到上一个操作所在目录

1.2 目录操作命令

  • mkdir 目录名称: 增加目录

    • -p:可以递归创建目录 例如:mldir -p a/b/c/d/e
  • rm [-rf] 目录/文件:删除文件/目录

    注意:

    使用rm命令要格外小心,因为数据删除后不能恢复!rm 不仅可以删除目录,也可以删除其他文件或压缩包,为了增强大家的记忆, 无论删除任何目录或文件,都直接使用rm -rf 目录/文件/压缩包。

    • -f:强制删除,忽略不存在的文件,无需提示
    • -r:递归地删除目录下的内容,删除文件夹时必须加此参数
  • mv 要剪切的文件的路径 /新位置:剪切

  • mv 要修改的文件 /新文件名:重命名

    mv 语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作。并且可以剪切的同时重命名

    • -I:覆盖文件前提示
    • -u:只替换已经更新过的文件
  • cp -rl 目录名称 目录拷贝的目标位置:拷贝目录

    注意:cp 命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不用写-r 递归。

    • -r:若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
  • \cp -r 目录名称 目录拷贝的目标位置:如果文件重复了 linux 默认会提示是否覆盖,但是这个提示覆盖是每一个文件都会提示!当文件不多时还好,可是文件一多就很烦了,用此命令就可以无需提示直接覆盖

  • ls:查看目录信息

    • -a:显示指定目录下所有子目录与文件,包括隐藏文件
    • -l:含义以列表方式显示文件的详细信息
    • -h:配合-l以人性化的方式显示文件大小

ls通配符的联合使用

通配符作用
*代表任意个数个字符
?代表任意一个字符,至少1个
[]表示可以匹配字符组中的任意一个
[abc]匹配a、b、c中的任意一个
[a-f]匹配从a到f范围内的任意一个字符

二 文件管理命令

2.1 文件操作命令

  • touch 文件名称: 文件的创建(增)

    创建文件或修改文件时间,如果文件不存在,可以创建一个空白文件如果文件已经存在,就会修改文件的末次修改日期

  • vim 文件 修改文件的内容(改)

    • 底线模式选项:

      • :wq :(w)表示保存(q)表示退出;一般情况会直接使用 :wq 保存退出
      • q! :代表强制退出不保存
      • :set nu:让文件显示行号,便于观看
    • 编辑模式:

      • home/end:一行的首尾
      • PgUp/PgDn:分页
      • ctrl+ ->/<- : 此行可以调到空格

    使用 vim 编辑器主要作用就是修改配置文件,下面是一般步骤: vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q! (输入 wq 代表写入内容并退出,即保存;输入 q!代表强制退出不保存)

  • cat/tac/more/less/tail 文件名称 :文件查看命令(查)

    • cat:查看文件所有内容,适合用于内容少的文本文件
    • tac:从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
    • more: 一页一页的显示文件内容,适合用于查看内容比较多的文本内容
    • less:more 类似,但是必more更强大,按需加载文件,当文件大小比较大的时候就使用less
    • tail: 只看尾巴几行
      • -n :不加-n 默认10行
      • -f :可以对文件动态监控,例如像 tomcat 这种日志会动态变化的
    • head:查看文件的前几行
      • -n :不加-n 默认10行

在 less/more 这个程序的运行过程中,有几个操作键可以按

操作键功能
pagedown下一页
pageup一次滚动手册页的一行
/stringn/N 上一个/下一个
q退出

2.2 压缩文件操作命令

  • tar -zcvf/-jcvf 打包后文件名.tar 被打包的文件/路径:压缩文件

  • tar -zxvf/-jxvf 压缩文件路径.tar :解压文件

  1. 将 /test 下的 test.tar.gz 解压到当前目录下可以使用命令:tar -xvf test.tar.gz
  2. 将 /test 下的 test.tar.gz 解压到根目录/usr 下:tar -xvf test.tar.gz -C /usr(- C 代表指定解压的位置)
  • -C:解压缩到指定路径目录,注意:要解压缩的目录必须存在
  • -j:压缩/解压为bz2格式
  • -z:压缩/解压为gz格式

注意:f选项必须放在最后

2.3 文件所搜命令

Linux 文件是树状的,所以搜索范围越精确越搜索速度就越快

  • find / -name fileName
    • -name:按照文件名查找,可以使用通配符
    • -user:按照用户查找
    • -size:按照文件大小查找;+ 大于 - 小于 n 等于

省略路径,表示当前文件夹下查找。

三、管理命令

3.1 用户管理命令

  • whoami:查看当前登录用户的账户名

  • who: 查看当前所有登录用户列表

  • id[user]:查看用户UID和GID信息

  • su -user:切换用户;权限高的用户切换到权限低的用户时,不需要密码。低用户到高用户时需要密码

  • exit、logout:退出当前账号

  • useradd -mg 用户名:添加用户账号

    • -m: 自动建立用户家目录
    • -g: 指定用户所在的组,否则会建立一个和同名的组
  • passwd 用户名:更改或创建用户的密码,只有管理者可以指定用户名称,一般用户只能变更自己的密码。

  • userdel 选项 用户名:删除用户帐号

    • r:选项会自动删除用户家目录,不加只会删除用户。一般情况下建议保留用户目录!
  • usermod -g groupName username :修改用户的组,修改后需要重新登录才能生效

  • cat /etc/passwd|grep 用户名:使用useradd指令所建立的帐号,实际上是保存在 /etc/passwd文本文件中。所以可以使用该命令查看

3.2 用户组管理命令

什么是用户组!?用户组类似于角色一样。root 创建一个组并且给这个组赋予权限,然后将用户放入组中,这样就实现了用户权限的统一管理了。

  • groupadd 用户组:增加一个新的用户组
  • groupdel 用户组 :要删除一个已有的用户组
  • groupmod 选项 用户组 : 修改用户组的属性
  • cat /etc/group:用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。所以可以使用该命令查看

四 权限命令

4.1 Linux中用户分类

  • 所有者(u):一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者
  • 所在组(g):哪一个用户创建了这个文件,那个用户所在的组就是文件所在组
  • 其他组(o):除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。

4.2 Linux 中权限分类

Linux 所有数据都拥有权限

权限一般分为:读 r (readable)、写 w (writable)、执行 e (executable)

  • r:代表权限是可读,r 也可以用数字 4 表示

  • w:代表权限是可写,w 也可以用数字 2 表示

  • x:代表权限是可执行,x 也可以用数字 1 表示

  • chmod u=rwx,g=rw,o=r aaa.txt 或者 chmod 764 aaa.txt:两种格式, aaa.txt 的权限为文件所有者有全部权限,文件所有者所在的组有读写权限,其他用户只有读的权限。

chown这个命令也可以更改,但是基本不用,过个眼熟

五 其他命令

  • pwd :显示当前所在位置

  • clear:清理屏幕

  • history 10:查看已经执行过的10条命令,参数可以按照自己的需求,也可以不写

    • !编号 :执行该条命令
  • echo string:将字符串打印在控制台上

  • echo string > fileName:重定向(会覆盖原来的内容),将>前面的结果写入文件中

  • echo string >> fileName:追加(不会覆盖)

细节:如果文件不存在,会自动创建

六 链接

Linux 链接分两种:一种被称为硬链接(Hard Link),另一种被称为符号链接/软链接(Symbolic Link)

硬链接:相当于复制了一份后再双向绑定,当修改了其中一份,另一份也会被修改。

软链接:软链接文件有类似于 Windows 的快捷方式。主文件被删除后,软链接就无法使用

  • ln -s 被链接的源文件 链接文件:源文件要使用绝对路径!
    • -s:没有-s选项建立的是一个硬链接文件

七、Linux系统信息命令

7.1 时间日期命令

  • date:显示当前时间(有中文)

    • date “+%Y-%m-%d %H:%M:%S” :格式化,- 可以换为自己想要的格式
    • +%Y:显示当前年份
    • +%m:显示当前月份
    • +%d:显示现在是哪一天
  • cal :显示当前月份日历

    • 2022:显示当前一整年的日历,年份可以自行更改
  • date -s "2020-11-03 20:12:10": 修改时间

7.1 磁盘命令

暂无

7.2 关机/重启

  • shutdown 选项 参数(now、+10、20:20) :不加-r就是关机,参数可以指定关机/重启的时间

    • -r now:重新启动

    • -c :取消重启/关机计划

不指定选项和参数,默认表示1分钟之后关闭电脑

远程维护服务器时,最好不要关闭系统,而应该重新启动系统

八、管道符与 grep 的使用

grep 普遍上有两种用法:一种是单独使用,第二种是和管道符一起使用

  • grep "要搜索的字符串" 要搜索的文件:单独使用,查找路径中的文件包含 “yes” 字符串的文件,并打印出该字符串的行。
    • n 显示匹配行和行号
    • i 忽略大小写

什么是管道符?就是将前面指令执行后的结果交给后面的指令再执行,不只是grep可以跟管道符组合使用其他很多命令也都可以

cat /home/hello.txt | grep "yes":grep后面没有跟路径,那么就是查找打印台上的文本内容

九、进程命令

  • ps -ef:查看进程,UID(用户id)、PID(进程id)、PPID(父进程id)、C(进程占用CPU的百分比)、等等
  • ps -aux:查看进程,USER(用户名)、%CPU(进程占用的CPU百分比 )、STAT (进程的状态 )
    • a:显示终端上的所有进程,包括其他用户的进程
    • u: 显示进程的详细状态
    • x: 显示没有控制终端的进程
  • pstree :查看进程树
    • p:显示pid
    • u:显示进程的所属用户
  • kill -9 进程的pid:终止指定代号的进程,-9表示强行终止
  • top:动态查看进程
    • 选项:

      • -d :秒数
      • -i:不显示任何闲置或僵死进程
    • 互动:进入top命令时可以让top按指定模式排序

      • u:输入u后,再输入用户名,就可以监视登入的用户
      • k:输入k后,再输入端口号,杀死进程(例如就可以杀死用户)

十、软件安装

10.1 rpm

  • rpm -qa | grep firefox:查看系统中是否安装了火狐
  • rpm -qi 软件包名:查看软件包详细信息
  • rpm -ivh rpm包全路径:安装rpm包
  • rpm -e 软件包名:卸载软件包,卸载的时候如果存在依赖建议不删除
    • –nodeps :强行卸载

10.2 yum

yum 下载机制类似于maven 在远程有一个yum服务器,服务器中有很多软件包。linux 能够从指定的服务器自动下载RPM包并且安装,并且可以自动处理依赖关系一次下载所安装包的依赖包

  • yum list | grep 软件包:查看 yum 服务器上是否有想要的安装包
  • yum install 软件包:安装软件包

wget url

十一、服务管理命令

  • systemctl [start|stop|restart|status] 服务名

    • start:将服务开启开启

    • stop:将服务关闭

    • restart:将服务重启

    • status:查看服务当前状态

  • systemctl list-unit-files | grep 服务名:查看该服务是否是开机自动启动状态

  • systemctl is-enabled 服务名:查看该服务是否是开机自动启动状态

  • systemctl enable 服务名: 设置该服务为开机自动启动状态

  • systemctl disable 服务名:设置该服务为开机不启动状态

十二、防火墙命令

  • firewall-cmd --permanent --add-port=端口号/协议:开启此端口号的防火墙
  • firewalls-cmd --permanent --remove-port=端口号/协议:关闭此端口号的防火墙
  • firewall-cmd --reload:重启防火墙,每当关闭或开启某一个端口的防火墙时,需要就需要重启
  • firewall-cmd --query-port=端口号/协议:查询某一端口防火墙的开启或关闭状态
  • firewall-cmd --list-all:查看所有开启的端口

十三、网络通信命令

  • ifconfig:查看当前系统的网卡信息
  • ping ip/域名:查看与某台机器的连接情况
  • netstat -tunlp:查看当前系统的所有端口使用
  • lsof -i:端口号:查看某一个端口的使用情况

十四、shell 命令

14.1 什么是shell?

Linux 内核是不可以直接识别我们的命令的,中间是有一层shell解析器在解析我们的指令。shell有很多种其中我们国内大部分都是用bash shell

14.2 shell 脚本入门

14.2.1 shell’s helloword
  1. shell 脚本文件的后缀名是 .sh
  2. 编写玩的 shell 脚本是没有执行权的,需要用命令chmod 添加执行权 或 sh 脚本文件
14.2.2 shell 变量
14.2.2.1 shell 变量定义
  • 变量名=值:声明变量
  • unset 变量:撤销变量
  • readonly 变量名=值:定义静态变量

shell 变量使用

  • $变量名:使用用户自定义变量
  • $(命令):调用系统命令的返回结果

定义变量的规则

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头
  2. 等号两侧不能有空格
  3. 变量名一般为大写,这个是规范
echo "hello word~"

A=100
echo A=$A

unset $A
echo A2=$A

readonly B=100
echo B=$B

C=$(cal)
C2=`cal`


#hello word~
#A=100
#./hello,word.sh: line 8: unset: `100': not a valid identifier
#A2=100
#B=100
#C= March 2022 Su Mo Tu We Th Fr Sa 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
#C2= March 2022 Su Mo Tu We Th Fr Sa 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
14.2.2.1 shell 位置参数变量

什么是位置变量?就是类似于形参,在执行脚本文件时时传入

  • $数字:$0代表文件本身,$1-9 代表形参

  • $*:显示该脚本文件中的所有形参值

  • $@:显示该脚本文件中的所有形参值

  • $* :显示脚本中有几个位置变量参数

# shell 脚本
echo "0=$0 1=$1 2=$2"
echo all params=$*
echo all params=$@
echo num of param=$#


[root@iZwz9834shcoibb59kv53wZ opt]# ./hello,word.sh 1 2
0=./hello,word.sh 1=1 2=2
all params=1 2
all params=1 2
num of param=2
14.2.3 运算符

shell 运算符3种写法

  • $(()) :基本不用
  • $[]:常用
  • expr m + n:难用!m 和 n 中间必须有空格,并且乘法是这样的 /*

14.3 shell流程控制

14.3.1 if条件判断
#单分支
if [条件判断]
then [业务代码]
fi

#多分支
if [条件判断]
then [业务代码]
elif[条件判断]
then [业务代码]
fi
  • 字符串比较
    • =
  • 两个整数比较
    • -lt :小于
    • -le:小于等于
    • -eq:等于
    • -gt:大于
    • -ge:大于等于
    • -ne:不等于
  • 按照文件权限判断
    • -r:是否有读权限
    • -w:有写权限
    • -x:有执行权限
  • 安装文件类型判断
    • -f:文件是否存在是常规文件
    • -e:文件存在
    • -d:是否是目录
if [ ok = ok ]
then echo string  true
fi

if [ 1 -eq 1 ]
then echo num true
fi

if [ -d /root ]
then echo file is exist
fi

if [ -w /root ]
then echo you have power
fi


[root@iZwz9834shcoibb59kv53wZ opt]# ./hello,word2.sh 
string true
num true
file is exist
you have power

切记[]中前后一定要空格!要不然就会报错

14.3.2 case 条件判断
case $1 in
1)
echo "今天周一"
;;
2)
echo "今天周二"
;;
*)
echo "other....."
;;
esac

[root@iZwz9834shcoibb59kv53wZ opt]# ./hello,word3.sh 1
今天周一
[root@iZwz9834shcoibb59kv53wZ opt]# ./hello,word3.sh 2
今天周二
[root@iZwz9834shcoibb59kv53wZ opt]# ./hello,word3.sh 3
other.....
14.3.3 for循环
for ((初始值;循环控制条件;变量变化))
do 业务代码
done
SUM=0 
for(( i=1;i<=$1;i++))
do SUM=$[$SUM+$i]
done
echo $SUM

[root@iZwz9834shcoibb59kv53wZ opt]# ./hello,word4.sh 100
5050
[root@iZwz9834shcoibb59kv53wZ opt]# ./hello,word4.sh 10
55
14.3.4 while循环
while [条件判断]
do
业务代码
done

while 和 条件判断中间必须要有空格

SUN=0
I=0
while [ $I -le $1 ]
do
SUN=$[ $SUN+$I ]
I=$[ $I + 1 ]
done


[root@iZwz9834shcoibb59kv53wZ opt]# ./hello,word5.sh 100
5050

14.4 shell 函数

14.4.1 read
  • read (选项) (参数) (选项) (参数)

    • -p:指定读取时的提示符

    • -t:指定读取的等待时间,如果没有在指定时间内输入,就将不等待;如果不加此参数将一直等待

read -p 请输入一个数字 NUM1
echo 您输入的数字为 $NUM1
read -t 10 -p 请再输入一个数组 NUM2
echo 您再次输入的数字为 $NUM2


[root@iZwz9834shcoibb59kv53wZ opt]# ./hello,word6.sh 
请输入一个数字100
您输入的数字为 100
请再输入一个数组2000
您再次输入的数字为 2000
14.4.2 自定义函数
function functionname(){
	#业务代码
}

funname 参数

调用函数不用加括号,参数直接写在后面即可

函数定义时不用定义参数,函数体中直接用即可

function getSum(){
	SUM=$[ $A + $B ]
	echo 求和结果为: $SUM
}
read -p 第一个数: A
read -p 第二个数: B
getSum $A $B


[root@iZwz9834shcoibb59kv53wZ opt]# ./hello,word7.sh 
第一个数:10
第二个数:48
求和结果为: 58
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LinTianhong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值