linux
Linux命令 ---账号管理
管理里用户命令 su root ----切换权限 useradd aaa ---创建用户 passwd aaa ---设置密码 usermod -l czbk aaa 把用户aaa的用户名变成czbk ctrl + d 退出用户 userdel 用户名 删除用户 管理用户组命令 groupadd ----创建一个用户组 groupmod ----修改用户组名 -n kaifazu kaifa 改名kaifa改为kafazu groups itcast ---查询用户所属组 groupdel kaifazu ---删除用户组 管理用户组内成员 groupadd kaifazu useradd user1 useradd user2 useradd user3 gpasswd -a user1 kaifazu gpasswd -a user2 kaifazu gpasswd -a user3 kaifazu grep 'kaifazu' /etc/group 查看组内成员 日期管理 date 显示当前时间 date -d "2020-12-12 11:11:11" 展示时间 CST 北京时间 date -s "2020-12-12 11:11:11" 设置时间(需要管理员权限) 显示用户 logname[--help][--version] 显示登录账号的信息 切换用户 su su -c command 切换用户执行迷你改良,只想完毕之后再变为原来的使用者 例:su -c ls root 切换到root命令中执行ls id命令 当前用户的详细信息 sudo 提高普通用户的操作权限 sudo ls 提高权限执行ls命令 sudu -u root ls 指定root 执行ls命令 top命令 实时显示process状态 ps命令 当前的进程信息 kill命令 杀死进程 kill + pid 杀死pid的进程 likk - 9 pid 强制杀死进程 kill -9 $(ps -ef\grep 用户名)杀死指定用户所有进程 kill -u 用户名 杀死指定用户所有进程 关机命令 shutdown shutdown 一分钟后关机 shutdown -c 取消关机 shutdown -h now 立马关机 shutdown +1 "1分钟以后关机" 一分钟后关机 shutdown -r +1 "准备重启了" 一分钟后重启 重启命令 reboot who命令 显示当前登录系统的用户 who -H 显示明细(标题)信息 timedatectl 矫正服务器时间、时区 timedatectl list-timezones 展示所有时区 timedatectl set-timezone "Asia/Shanghai" 设置时区 timedatectl set-ntp false 禁用ntp时间 timedatectl set-time "2030-01-01 11:11:11" timedatectl set-ntp true 开启ntp时间 目录管理:只有一个根目录,所有文件和目录都在根目录下 ls 目录名称 列出目录里的内容 ls -l 详细信息 ls -a 隐藏信息 ls -al 当前所有文件都展示详细信息 pwd 查看当前的路径 pwd -P cd 命令 切换目录 cd ..回退 mkdir 创建目录 创建一个文件夹 mkdir -p aaa/bbb 创建多级目录 rmdir 删除空的目录 rmir -p bbb/ccc 删除ccc,如果删完之后bbb时空的,bbb也一起删除 rm 删除文件或者目录 touch a.txt创建文件 rm a.txt 删除文件 rm -r aaa 删除目录和目录里面所有的内容 cp 文件复制 cp aaa/a.txt ccc 把aaa中的a.txt 拷贝到ccc中 cp aaa/* ccc 把aaa中的文件拷贝到ccc中 cp -r aaa/* ccc 把aaa中的所有文件夹和文件拷贝到ccc中 mv命令 改名 移动文件或文件夹 mv 文件名 文件名 将源文件名改为目标文件名 mv 文件名 目录名 将文件移动到目标目录 mv aaa/* ccc 把aaa里面所有的东西剪切到ccc中 mv ccc/a.txt aaa 只剪切一个文件 文件基本属性: d 目录 - 文件 | 为链接文档 权限:r:可读 w:可写 x:可执行 -:没有当前权限 例:drwxr-xr-x 2-4位:属主权限 5-7位:属组权限 8-10位:其他用户权限 chgrp 更改属组 chgrp root aaa 把指定aaa用户组改为root chgrp -v itcast aaa 把aaa用户组改为itcast 多一个提示语句 chown 属主名 文件名 更改属主 chown 属主名:属组名 文件名 更改属主和属组 chown root aaa 把aaa所有者改为root chown root:root bbb 把bbb所有者和属组都改为root chown -R root:root aaa 将aaa文件夹和里面所有的属主和属组都改为root chmod权限命令 数字权限 读-4 写-2 执行-1 无权限-0 语法:chmod 数字权限 文件或目录 chmod -R 770 aaa 设置权限 chmod -R 符号权限 aaa u-user g-group o-other a-all _+(加入) -(除去) =(设定) chmod u=rwx,g=rx,o=r a.txt 例题: useradd java --添加三个用户 useradd erlang useradd golang groupadd dev-group --添加一个组 gpasswd -a java dev-group --将三个用户添加到一个组中 gpasswd -a erlang dev-group gpasswd -a golang dev-group grep 'dev-group' /etc/group --查看组中的用户 mkdir -p /tmp/work --创建一个文件夹work chgrp -R dev-group /tmp/work --把文件夹所属的用户组改为dev-group chmod -R 770 /tmp/work 更改权限 ls -al --查看当前文件夹内的文件所有信息 touch命令 如果文件不存再就创建文件,如果存在就修改时间属性 touch a.txt touch a{1..10}.txt 创建a1-a10 stat a.txt 查看文件的属性 vi/vim编辑器 vi:只能是编辑文本内容,不能对字体段落进行排版,不支持鼠标操作,没有菜单,只有命令 vim:是从vi发展出来的一个文本编辑器,代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序中被广泛使用。 vi/vim 命令 编辑 末行模式 语法:vim 文件名 如果文件已经存在,会直接打开该文件 如果文件不存在,打开一个临时文件,在博爱出且退出后,就会新建一个文件 i insert 在当前字符前插入文本 I insert 在行首插入文本 a append 在当前字符后插入文本 A append 在当前行末添加文本 o 在当前行后插入一空行 O 在当前行前插入一空行 :q 当vim进入文件没有对文件内容做任何操作可以按“q"退出 :q! 当vim进入文件对文件内容有操作但不想保存退出 :wq 正常保存退出 :wq! 强行保存退出,只针对与root用户或文件所有人 cat small.txt 查看小文件内容 只能查看小型文件 cat -n small.txt 有行号 less 查看大文件 less a.txt 查看a.txt的内容 less -N a.txt(加入行号) tail 查看文件的最后部分 tail -3 big.txt 查看文件的后三行 tail -f big.txt 动态查看文件的最后部分 tail -4f big.txt 动态查看文件的最后四行 tail -n+2 big.txt 从第二行开始到文件的末尾 tail -c 45 big.txt 文件的最后字符 head 和tail类似 grep命令 grep 关键字 文件 根据关键词,搜索文本文件内容 grep ri small.txt 含有关键字的整行显示出来 grep -n ri small.txt 含有关键字的整行(包括行号)显示出来 grep -i a small.txt 含有a的展示出来忽略大小写 grep -v ri small.txt 只要不包含ri的每行都展示出来 ps -ef 展示所有进程 ps -ef |grep sshd 含有sshd展示出来 ps -ef | grep sshd | grep -v "grep" ps -ef | grep -c sshd 包含sshd的个数 vim定位行 vim 文件名+行数 查看文件并定位到具体行数 例 vim a.txt +5 echo命令 echo 字符串 展示文本 echo 字符串>文件名 将字符串写道文件中(覆盖文件中内容) echo 字符串>>文件名 将字符串写道文件中(不覆盖文件中的内容) cat 不存在的目录 &>> error.log 将命令的失败结果追加到error.log 文件的后面 awk命令 cat a.txt | awk '/zhang|li/' 包含zhang和li的行进行展示 cat a.txt | awk -F ' ' '{print $1,$2,$3,$4}' 先按照空格进行切割然后再进行打印 cat a.txt | awk -F ' ' '{OFS="==="}{print $1,$2,$3,$4}'先按照空格进行切割然后中间以===再进行打印 cat a.txt | awk -F ' ' '{print touppper($1)}' 转为大写tolower变为小写,lenth计算长度 cat a.txt | awk -F ' ' 'BEGIN{}{totel=totel+$4}END{print totel}'计算第四列的总分并显示 cat a.txt | awk -F ' ' 'BEGIN{}{totel=totel+$4}END{print totel,NR}' NR 总行数 cat a.txt | awk -F ' ' 'BEGIN{}{totel=totel+$4}END{print totel,NR,(totel/NR)}' NR 总行数 平均分 软连接 ln -s aaa/bbb/ccc/ddd/eee/a.txt a.txt 生成软连接(快捷方式) find 命令再指定目录下查找文件 find . -name "*.txt" .表示当前目录 查找当前目录下.txt的所有文件 find . -ctime -1 查找一天之内操作的文件 find / -ctime "*.txt" 查找根目录下的所有.txt文件 备份压缩 gzip 压缩文件 gzip a.txt 压缩a.txt 文件 gzip * 压缩所有文件 gzip -dv *解压所有文件并列出详细信息 gunzip 解压文件 gunzip *( 解压所有文件) tar命令 打包、压缩和解压(文件/文件夹) tar -cvf a.tar a.txt c表示创建一个新的文件 v显示过程 f指定新的文件名 打包 tar -zcvf b.gz b.txt z表示压缩通过gzip指令处理压缩文件 tar -zcvf aaa.gz aaa 压缩指定文件夹 tar -ztvf aaa.gz t查看压缩文件例的内容 tar -zxvf aaa.gz 解压 zip unzip命令 -q不显示指令执行的过程 -r递归处理,将指定目录下的所有文件和子目录一并处理。 zip -q -r aaa.zip aaa 压缩指定文件/文件夹 upzip 只能解压.zip扩展名的压缩文件 -l显示压缩文件内所包含的文件 -d 指定文件解压缩后所要的存储目录 unzip -l aaa.zip 显示压缩文件下包含的文件 unzip -d bbb aaa.zip 解压到bbb文件夹下 bzip2 新的压缩算法 bzip2 a.txt 压缩文件会删除原来的文件 bunzip2 -v a.txt.bz2 解压并显示详细信息 网络与磁盘管理 ifconfig 查看当前网卡 ifconfig ens37 down 关闭网卡 ifconfig ens37 up 开启网卡 ifconfig nes37 192.168.23.199 netmask 255.255.255.0 配置IP地址和子网掩码 ping命令 检测是否与主机联通 ping www.baidu.com 检测是否与百度联通 ping -c 2 www.baidu.com 指定次数 netstat命令 显示网络状态 netstat -a 显示所有连接中的Socket netstat -i 显示网卡列表 lsblk 硬盘的使用情况 lsblk -f 系统的信息 df命令 显示硬盘的使用情况(文件系统) df aaa 文件夹的使用情况 df --total 文件的所有使用信息 df -h 转换单位便于阅读 mount命令挂载设备 挂载点创建 mkdir aaa mount -t auto /dev/cdrom aaa 挂载到aaa 卸载 umount aaa yum -y install tree -y如果有选择命令全是yes(安装tree) yum remove tree 卸载tree yum list tom* 查找tom开头的软件名称 yum源 修改yum源 yum -y install wget cd /ect/yum.repos.d/ mv CentOS-Base.repo CentOS-Base.repo.back ym install -y wget 安装下载工具 wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 下载阿里云的Centos-7.repo文件 cat CentOS-Base yum clean all 清理之前的缓存,并重新加载yum yun makecash 建立一个缓存文件 yum search tomcat 查找软件,验证阿里云的yum源是否可以正常使用 rpm 用来管理Linux各项套件的程序 rpm只能安装已经下载到本地机器上的rpm包。 shell入门 shell是一个命令解释器 shell是位于操作系统和应用程序之间,是他们二者最主要的接口 shell负责把应用程序的输入命令信息解释给操作系统,将操作系统指令处理后的结构解释给应用程序 echo $SHELL展示SHELL /bin/bash linux中默认的shell 手工方式:手工敲 脚本方式:写到一个文件中,然后运行这个文件,达到执行的效果,这个文件就叫做脚本文件。 编写第一个shell 新建一个文件后缀名为sh 书写内容 #!/bin/bash #这是临时shell脚本 echo 'nihao' echo 'itcast' 执行 touch a.sh 新建 vim a.sh 编写 #! /bin/bash #这是第一个脚本文件 echo"itcast" echo"nihao" :wq! chmod 777 a.sh ./a.sh shell注释 单行注释 # 多行注释 :<<! 多行注释 ! !可以是任意字符 shell变量 普通变量 number=10 定义变量 echo $number 展示number bash a.sh 运行 a='10' echo $a 展示a a='$number' 展示$number 会将''里面的值原样输出 b="$number" 展示10 会将number中的值拿出来再进行赋值 命令变量 c=`date` echo $c 展示时间 d=$(date) echo $d 展示时间 执行`或者$()范围内的命令 将命令执行后的结果赋值给变量 使用变量 $变量名 非标准写法图省事 "$变量名" 非标准写法,图省事 ${变量名} 在双引号里面要使用变量的值 "${变量名}" result="现在的时间为${d}" echo "${result}" 只读变量 readonly变量名 删除变量 unset变量名 readonly result unset result shell数组 #定义一个数组 arr=(a b c d e f) #给数组中的元素赋值 arr[0]=A 获取数组中的元素 echo ${arr[0]} echo ${arr[1]} 获取数组的长度 echo "数组的长度${#arr[*]}" echo "数组的长度${#arr[@]}" shell算数运算符 num1=`expr 2 + 2` echo "整数2+2的结果问$num1" num2=`expr 2 - 2` echo "整数2-2的结果为$num2" #整数相乘 num3=`expr 2\* 2` echo "整数2*2的结果为$num3" #变量相加 a=10 b=20 num4=`expr $a + $b` echo "变量a和变量b相加的结果为$num4" #赋值 c=30 num5="${c}" echo "变量c的值赋值给num5,打印num5的值$num5" #自增 e=1 ((e++)) echo "变量e为1,自增之后,结果为$e" bash 文件名 运行或./ 文件名 shell字符串运算符 a="aaa" b="bbb" #判断两个字符串是否相等 # $?可以获取上一条语句的执行结果 [ "${a}"="${b}" ] echo "判断两个字符串是否相等,0为真,1为假:$?" #判断两个字符串是否不相等 [ "${a}"!="$[b]" ] echo "判断两个字符串是否不相等,0为真,1为假:$?" #判断字符串的长度是否为0 [ -z "${a}" ] echo "判断字符串的长度是否为0,0为真,1为假: $?" #判断字符串的长度是否不为0 [ -n "${a}" ] echo "判断字符串的长度是否部位0,0为真,1为假:$?" #判断字符串是否为空 [ $"{$a}" ] #如果不为空,那么就是0 echo "判断字符串是否为空: $?" #获取字符串的长度 echo "获取字符串的长度 ${#a}" #关系运算符 #只能比较数字,不支持字符串,除非字符串的值是数字 a=10 b-20 #比较两个数是否相等 [ "${a}" -eq "${b}" ] echo "a和b两个数字比较的结果为:$? " ] #-ne 不灯于 #-gt 大于 #-lt 小于 #-ge 大于等于 #-le 小于等于 #if语句 #查找一个进程,如果这个进程存在,就打印true if[ $(ps -ef | grep -c "ssh") -gt 1 ] then echo "true" fi #查找一个进程,如果这个进程存在打印true,否则打印false if[ (ps-ef | jgrep -c "ssh") -gt 1 ] then echo "true" else echo "false" fi #if第三种格式 #定义a b 三种提示判断 a=10 b=20 if [ "${a}" -eq "${b}"] then echo "相等" elif["${a}" -lt "${b}"] then echo "a小于b" else echo "a大于b" fi shell选择语句 #选择结构语句 v="czbk" case "${v}" in "czbk") echo "传智播客" ;; "baidu") echo "百度" ;; "guge" echo "谷歌" ;; esac shell循环语句 for loop in A B C do echo $loop done while循环 a=1 while[ "${a}" -le 10 ] do echo "${a}" ((a++)) done shell函数 函数名(){} 函数调用 直接写函数名 有参无返回值 cabk(){ echo "第一个参数$1" echo "第一个参数$2" } 调用: czbk a b 有参有返回值 czbk(){ echo "接收到参数$1和$2" return$(($1+$2)) } czbk 10 20 echo $? #在方法种键盘录入两个整数,返回这两个整数的和 #read 斌来年国民那个 ---表示把键盘录入的数据赋值给这个变量 method(){ echo "请输入第一个数" read number1 echo "请输入第二个数" read number2 echo "两个数字分别为${number1},${number2}" return $(($number1+$number2)) } #方法的调用 method echo $?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)