Linux操作系统——Ubuntu Ubuntu打开命令行窗口的方式1 快捷键 ctrlaltt2 在左上角搜索 terminal命令系统ls 查看目录ll 展示详细信息ls -ll 路径 在当前路径查看其他路径下的文件夹内容ls -a 显示所有文件cdchange directory更改目录pwdprint working directory显示当前路径cd ~ 跳转到主工作目录cd - 回到上一次的目录cd … 进入上一级目录reboot 重启shutdown -r now 立刻重启 仅root用户shutdown -r 10 10分钟后重启half 关机poweroff 关机cat a 查看文件a的内容cat a b c d 同时查看abcd四个文件的内容cat /proc/cpuinfo 查看cpu的规格型号 cpucat /etc/passwd 查看所有用户free -h free free -m free -g 查看内存的基本信息df -h 查看硬盘的使用情况top 查看任务管理器ps -aux 查看整个电脑中所有的进程的使用情况结束正在运行的某个进程kill 进程编号 kill -KILL 进程编号kill -9 进程编号ip addrping ip地址或者网址 查看自己的电脑和某个网络间是否畅通文件夹mkdir [路径]/新目录名称 创建新目录mkdir -p d/e/f 递归建立新目录mkdir 11 22 33 同时创建多个文件夹rmdir 带路径指引的目录名 删除空目录mv 原文件或子目录名称 新名称 修改名称mv /a/d/g /b/e/gg 将文件或文件夹/a/d/g移动到/b/e下并修改文件名为gg使用mv命令搬移时会产生覆盖的危险cp 带路径指引的源文件名 带路径指引的目标文件名复制文件cp -a 目录目录复制整个目录文件夹rm -r 目录树的起点目录 删除整棵目录树tree 目录 树状图查看文件目录touch 文件的位置和名字 创建文件vimvi hello.cpp 新建或打开hello.cppvim hello.cpp 新建或打开hello.cppvim是vi的升级版进入编辑模式i、a、o退出编辑模式escw 保存文件q 退出编辑器q 退出编辑器不保存wq 退出编辑器保存gcc hello.cpp -o hello 编译hello.cpp./hello 运行hello复制 yy5yy 复制5行删除dd3dd 删除三行撤销u回到首行gg到尾行G向上下移动n - 方向键快速退出ZZ 或shiftzz显示行号 :set nu不显示行号 :set no nu开始的行号,结束的行号 s/旧内容/新内容/g:1,4s/你/cindy/g查找/要查看的字符转义符1,s 代表 1 行到最后一行 : 1 , s 代表1行到最后一行 :1,s代表1行到最后一行:1,s/./ok/g 代表把文件中所有的字符替换为ok:1,$s/./ok/g 代表只替换文件中的. 通过\进行了转义sudo apt-get install vim 安装vimsudo apt-get install git 安装gitsudo apt-get update 更新语言时间date 显示当前时间cal 查看本月日历cal 11 2019 查看2019年11月的日历cal -y 2019 查看2019年整年的日历cal -y 查看今年日历cal -y | more 屏幕显示满一屏后暂停输出并在屏幕下方显示“more”回车向上翻一行空格向上翻一屏cal -j 2019 以Julian日历的方式显示2019年的日历cal -jy 2 2019 以Julian日历的方式显示2019年2月的日历clear 清屏who 显示用户的账号密码logname 显示账号whoami 显示密码man 命令 查看该命令的帮助信息-f 取消确认a* 以a开头的所有文件[a-zA-Z]??? 以英文字母开头文件名长度为4个字符的文件*.txt 以txt为后缀的文件*全体文件ln 带路径指引的文件名带路径指引的目录名 硬链接删除文件时两个目录下都需要删除压缩gzip 文件名 压缩gunzip 文件名 解压bzip2 文件名 压缩bunzip2 文件名 解压tar czvf 文件名.tar.gz dir 压缩tar czvf 文件名.tar.bz2 dir 压缩tar xvf 文件名.tar.gz 解压打包不压缩tar -cf 包名 要被打包的内容tar -cvf 包名 要打包的文件查看tar包里面的内容tar -tf tar包名解压包tar -xf 包名追加文件tar -rf tar包名 要追加的文件压缩并打包 tar -zcf 压缩包的名字 要被压缩的文件查看你压缩包的内容tar -ztf 压缩包的名字解压压缩包tar -zxf 压缩包的名字快捷键Ctrla 移动到行首aheahCtrle 移动到行尾endCtrlf 向前移动一个字符forwardCtrlb 向后移动一个字符backwardCtrll 清空屏幕clearCtrlp 上翻前一条命令previousCtrln 下翻下一条命令nextCtrld 删除光标后的一个字符altd 删除光标后的一个单词altback pace 删除光标前的一个单词Ctrlk 删除光标至行末的部分killCtrlu 删除光标至行首的部分unix-line-discardCtrlw 删除光标前的一个单词wordCtrly 粘贴最后删除的对象yank查看文件查看文件在Linux客户端查看文件cat 文件名查看文件多行数据more 文件名回车下一行空格翻页b向上翻页查看文件的头几行内容 head -n 行数 文件名查看文件的尾几行 tail -n 行数 文件名读取文件的总行数wc -l 文件名查看文件有多少个字数不包括空行wc -w 文件名查看文件的字节数wc -c 文件名统计次数 每一行uniq -c 文件名对字符串进行排序 sort 文件名对文件的内容先进行排序再统计把相同的内容排序放在一起统计次数就不会重复了sort 文件名| uniq -csort 文件名| uniq -c|sort -n 升序sort 文件名| uniq -c|sort -n -r 降序sedsed指令仅显示不会修改文件 sed -i 会去修改文件指定位置新增sed “行号 i\要写的内容” 文件名删除某行sed “行号d” 文件名删除多行删除多行 sed “m,nd” 文件名修改数据sed “开始的行号,结束的行号s/旧内容/新内容/g” 文件名查询数据sed -n “行号p” 文件名查询m到n行sed -n “m,np” 文件名空行: /^KaTeX parse error: Expected group after ^ at position 6: / 2,/^̲/ 从第二行开始到第一个空行结束d 代表删除 !d代表删除选中之外所有的数据; 代表拼接两个指令 -e 代表拼接多个sed指令/^KaTeX parse error: Expected group after ^ at position 42: …有数据 sed -e 2,/^̲/!d;/^$/d’ eat.txtgrep 正则查询判断数据是以什么开头 ^表示数据的范围[] [0-9a-zA-Z]取反[^]判断数据是以什么结尾$通配符 .代表只能匹配一个数据 相当于sql中_重复前面的数据N次a这里代表有N个a.*例grep “1” a.txt 所有以数字开头但是不包括8开头的数据grep ‘a’ 1.txt 包含小写字母a的行数据grep 2.*[A-Z] 1. t x t 所有以小写字母开头大写字母结尾的行的数据 g r e p ′ [ a − z ] 1.txt 所有以小写字母开头大写字母结尾的行的数据 grep [a-z]1.txt所有以小写字母开头大写字母结尾的行的数据grep′[a−z]’ 1.txt|sed -n ‘5,10p’ 以小写字母结尾的第5行到10行的数据查询两个文件共有的数据 grep -Ff 文件名1 文件名2查询某个指令所有的历史操作 history|grep 指令名称awk 提取NR:表示已读的行数 NF:代表文件被切割后的列数按行打印awk ‘NRn’ 文件名m到n行awk ‘NRm,NRn’ 文件名按列打印数据awk ‘{print $n}’ 文件名1列和3列awk ‘{print $1,$3}’ u.txt用下划线拼接awk ‘{print $1_$3}’ u.txtawk -F “分隔符” ‘{print $n}’ 文件的名字awk -F “分隔符” -v 变量1值 -v变量2值 ‘print $n’ 文件名awk -F “,” -vday22 -vm12 ‘{print $2,$6/day,$6,$6*m}’ emp.txt对列的数据进行筛选 !awk -F “,” ‘$63000’ emp.txt 第6列值小于3000的 且 ||或 awk -F “,” $820||$810’ emp.txtawk -F “,” ‘{if($62000) print $2,$6,“C”;else if($63000) print $2,$6,“A”;else print $2,KaTeX parse error: Expected EOF, got } at position 6: 6,B}̲ emp.txt awk -…i}{print s}’ aw.txtcut 提取-f 提取第几列-d 分隔符-c 字符的范围例截取文件的第1列和第3列 cut -d “,” -f 1,3 emp.txt截取某个身份证年月日 cut -c 7-14 id.txtfind 查找find 要查询的范围 查询的方式 查询的值且 -a 或者 -o按照名字去查询 -namefind / -name emp.txt 查询根目录下名为emp.txt的文件的位置find / -name “.txt 查询根目录下文件名.txt结尾的find /bin -name .sh” -o -name “*.txt”按照类型查询 type -f 文件 l 链接 d 文件夹find /home -type l home 文件夹下的所有链接文件find 要查询的位置 -size 文件的大小 find / -size 20m查询空的文件或者文件夹 -empty find /home -emptyfind 文件的位置 -perm 权限 find / -perm 644权限操作创建用户 useradd 用户名创建密码 passwd 用户名切换用户 su 用户名创建一个和root同组的用户 useradd -g 组名 用户名查看用户的登陆信息id 用户名删除用户userdel -r 用户名权限读 read r 4写 write w 2 执行 excute x 1修改权限chmod ugo u所有者 g分组 o 其它人crontab 定时任务操作查看是否有定时任务启动service crond status查看当前的自己的用户是否有定时任务crontab -ldate 查看当前时间校时date -s ‘2023-7-22 10:47:35’ 手动强行调整时间安装时间服务器yum -y install ntp设置系统的时区 tzselect添加一个定时调度任务crontab -e删除定时任务crontab -r覆盖写入 追加写入如果要永久的关闭某个服务器 chkconfig:off onchkconfig 服务的名字 off 开机关闭某个服务chkconfig 服务的名字 on 开机开启某个服务exit/ctrld 退出当前用户关闭防火墙sudo systemctl stop firewalldsudo systemctl disable firewalldshell 脚本创建vi vim touch文件名.sh规范#!/bin/bash #!/bin/sh注释 #多行注释 :EOF 。。。EOF运行脚本 sh bash 脚本的名称变量1、默认是字符串格式2、赋值有空格必须要用引号3、单引号赋值成纯字符串双引号可以识别变量4、系统命令要用反引号5、确保精度常见系统变量 {} 确保精度 常见系统变量确保精度常见系统变量HOME:当前用户的家目录$PWD:当前属于哪个路径$SEHLL:使用的解释器$USER:当前是哪个用户输出echoecho系统的指令echo $(系统的指令)-e 激活转义符-E 关闭转义符输入read -p “提示语句” 变量名查看字符串长度echo ${#变量名}字符串替换 echo ${变量名/旧内容/新内容} 只替换第一个echo ${变量名//旧内容/新内容} 替换所有 //字符串截取 echo ${变量名/开始位置/截取个数}数组变量名元素1 元素2 元素3 用空格隔开echo ${数组名} 和 ${数组名[0]}输出的都是数组到的第一个元素echo ${数组名[]} 查看所有echo ${数组名[-1]} 查看最后一个echo ${#数组名[]} 查看数组长度echo ${#数组名[2]} 查看数值元素的长度echo数组名 [ ∗ ] : 0 : 4 截取前四个数组的增删改数组名 [ {数组名[*]:0:4} 截取前四个 数组的增删改 数组名[数组名[∗]:0:4截取前四个数组的增删改数组名[{#数组名[]}]值 在数组最后插入数据数组名[下标]值 将第几个元素修改unset 数组名[元素下标] 删除第几位的元素本身序号保留后续元素的下标不会前移将系统命令保存成数组取值是命令执行的结果的数组的值#!/bin/basha(ls /wr)echo ${a[]}echo ${a[-1]}数字运算整数$[] echo[ [[a$b]$(()) echo( ( ((((a*$b))echoexpr $a $bechoexpr $a \* $bechoexpr $a /$blet cabechoc 小数 y u m − y i n s t a l l b c e c h o c 小数yum -y install bc echo c小数yum−yinstallbcechoab ∣ b c e c h o s c a l e 4 ; b|bc echo scale4;b∣bcechoscale4;a*$b|bc 保留4位小数条件判断 test文件类型-e 文件 判断文件是否存在-d 文件 判断是否是目录文件且存在-f 文件 判断是否是普通文件且存在-L 文件 判断是否是链接文件快捷方式-s 文件 判断文件是否存在且非空文件权限-r 文件 判断文件存在且有读权限-w 文件 判断文件存在且有写权限-x 文件 判断文件存在且有执行权限比较两个文件文件1 -nt 文件2 判断文件1的修改时间是否比文件2新文件1 -ot 文件2 判断文件1的修改时间是否比文件2旧比较两个整数eq: equal 相等 nenot equal 不等 gt: great than 大于 ltless than小于gegreat equal 大于等于 le: less equal 小于等于m -eq n 判断 m n 是否相等m -nq n 判断 m n 是否不相等m -gt n 判断 m nm -lt n 判断 m nm -ge n 判断 m nm -le n 判断 m n比较字符串-z 字符串 判断字符串是否为空-n 字符串 判断字符串是否非空字符串1 字符串2字符串1 ! 字符串2多重条件判断与 判断1 -a 判断2 [] []或 判断1 -o 判断2非 判断ln -s 源文件路径 链接文件名 生成链接文件判断方法#!/bin/shtest -e 1.shecho $?#!/bin/bash[ -L tt ]echo $?#!/bin/bashif [ -d 111 ]; thenecho “111是目录文件”elseecho “111不是目录文件”fi#!/bin/sh[ -f 1.sh ]if [ $? 0 ]; thenecho “1.sh文件存在”fi#!/bin/bash[ -e 1.sh ] echo yes||echo no循环控制forfor 变量 in {开始的序号…结束的序号…步长}for i in {10…1}dodonefor i in {100…1…-10}for 变量 inseq 开始的序号 步长 结束的序号for i inseq 120 150for i inseq 150 -20 10for((变量的名字初始值;变量的循环范围;变量自增或自减))for((i1;i10;i))whilewhile[条件判断]do循环语句done退出exit退出程序可以带错误码 exit 255 echo $?break退出当前循环continue退出本次循环函数function name() (函数的内容return value)name 调用echo $? 可以查看return的值 如果没有return 则显示函数是否正常执行传参name 值1 值2 值3 用$1 $2 $3 调用sh a.sh 值1 值2 值3 用$1 $2 $3 调用$0文件名 a.sh$数字表传入的第几个参数$100:是脚本传入的第100个参数$#:代表传入的参数的总个数$*所有的传入参数$$:代表脚本当前运行的id$?:代表上一个系统命令的退出的状态只有为0才是成功0-79 ↩︎a-z ↩︎