linux学习笔记 0基础 关机:shutdown -h now 重启:shutdown -r Pwd 查看工作目录 ls 查看指定目录内容 -l 列表显示 -a 显示所有 包括隐藏文件 -d 只显示目录 不查看内容 Cd 切换目录 . 当前目录 … 上一级目录 Linux目录从/开始 叫做根目录 /bin 大部分的系统命令 /boot 启动相关目录 /dev 设备文件目录 /lib 库文件 /etc 配置文件目录 /media 多媒体目录 /sbin 超级用户使用的命令目录 /user 存放用户按安装的应用程序 /var 系统产生的不可销毁的文件 如日志 缓存
1 Vim终端编辑器 Vim安装 yum install -y vim 工作模式:首先知道自己在哪个模式下 正常模式 插入模式 编辑模式 如 进入file文件后的指令 vim 01.txt 按i 进入插入模式 可以输入字符 按esc退出 再最后填一个冒号 再写wq 就是01文本文件的保存退出 cat 01.txt 显示文件里内容 正常模式: 使用vim打开文件的默 认模式 常用操作:vim fiilename +n: 打开文件 定位到第n行 vim fiilename +: 打开文件 定位到末行 gg 定位到首行 G ngg 定位到n行 yy 复制光标所在行 P 粘贴 nyy 复制光标开始的n行 dd 删除光标所在行 ndd 删除光标开始的n行 u 撤销操作 Crtl+r 反撤销 Vim filename 打开文件 若不存在则新建 esc:切换到正常模式 Shift+zz:保存退出
插入模式:可以编辑文件内容 在正常模式下输入一下字符 i: 在光标处 I:在行首 a:在光标的下一个字符插入 A:在行尾插入 o:下光标下一行插入空行 O:下光标上一行插入空行 s:删除光标所在字符并插入 S:删除光标所在行
编辑模式:对整个文件进行操作 在正常模式下输入:冒号即可进入编辑模式 :w 保存 :q 退出 :wq 保存退出 等价于shift+zz :x 保存退出 :q! 强制退出 :set nu 显示行号 :set nonu 隐藏行号 :行号 定位到指定行号 :/内容 查找指定内容 n下翻N上翻 :%s/原内容/新内容 用新内容替换旧内容 :m,ns/原内容/新内容 用新内容替换旧内容,从m行到n行
2文件及文件夹 touch 创建文件 rm 删除 rm -f 强制删除不提示 -f 强制删除 -r 递归删除 rm -f *.txt 删除所有以txt结尾的文件 cp 拷贝文件 若目标目录写上文件名可以顺便把名字改了 -r操作目录 mv 移动文件 若目标目录写上文件名可以顺便把名字改了 如 移动到上一级并且改名 mv file.txt …/file1.txt mkdir 创建文件夹 可以创建多个 -p创建中间目录 如mkdir -p 12/34/56 rmdir 删除文件夹 空文件夹 Crtl + l清屏 或者clear 3查看文件 cat 从上到下查看内容 tac 从下向上查看内容 head 查看前10行 Tail 查看后10 tail -5 01.txt More 逐渐查看文件 回车下翻页 空格下凡一屏看到结尾结束 q退出查看 如more 1.txt less 逐渐查看文件 回车下翻页 空格下凡一屏看到结尾不结束 q退出查看 nl 功能同cat 会多显示行号 wc 统计文件信息 显示 行数 单词数 字节数 文件名 说明: more|less 更多用法结合管道 ls /etc | more
4用户用户组 useradd 创建用户 ls /home/查看有哪些用户 -d 指定家目录 -u 指定用户id uid -s 指定组id gid 说明 uid gid要使用大于500的数字 小于500的系统用 passwd 设置指定用户密码 若不指定设置当前用户密码 su - :切换用户 不加_只会切换目录和用户身份 若不指定指定用户 默认回到root userdel: 删除用户 userdel -rf xinfei1 强制删除用户xinfei1相关信息 whoami:查看当前用户
用户组 groupadd: 创建用户组 可以查看用户组信息在 cat /etc/group groupdel: 删除用户组 gpasswd: 将用户从某一个组中删除或者添加 gpasswd -a test hello 从hello组中删除用户test gpasswd -d test hello 添加 groupadd hello useradd test -g hello 创建用户test放在用户组hello中
chgrp: 改变用户文件所属组 例子chgrp hello 02.txt chown: 改变文件所属用户 如chown test 02.txt chown test:hello 02.txt 同时改变文件的用户和组 chsh: 修改用户的shell解释器如chsh test -s 老师词典/sbin/nologin 这样无法登陆; #:root用户 $: 普通用户 说明: /etc/passwd 存放用户信息 /etc/group 存放用户组信息 /etc/shadow 存放用户密码 5文件权限管理 说明:在Linux下,文件的权限有:所有者 所属组 其他的区分 权限:权限有:读r 写w 执行x ls -l查看 修改: 使用chmod修改权限 格式: chmod [身份][修改][权限]文件 身份: u:用户 g:组 o:其他 a:所有身份 修改: +:添加 -: 去掉 =: 设置 权限: r: 读 w: 写 x: 可执行 可操作 例如 chmod u+x 01.txt 6软硬链接文件 说明: ls -l 结果第一列是文件类型 类型: -:普通文件 d:目录文件 l:软连接 命令:ln [-s] 原文件 目标文件 分类:软连接、硬链接 创建:不加参数-s的就是硬链接 添加-s的就是软连接 7文件查找 tree: 查看目录结构 -L指定层级深度 tree / -L 2 find:查找文件 -name:指定名字 -type:指定类型(b c d p l f) -size:指定大小 单位K M G +表示大于 -表示小于 如 find / -size +1G -perm:指定权限 -group:指定组 whereis:查找程序 不要使用find which:查找命令 alias:给某个命令起别名 alias ls=… unalias:取消别名 grep:正则匹配查找 grep root /etc/passwd -i:忽略大小写 -n:显示行号 例子:ls /bin | grep ‘^m’查找/bin 文件下以m开头的文件 8磁盘 磁盘挂载 磁盘的使用流程:磁盘-分区-格式化文件系统-挂载(位置) mount 分区 挂载点 例子 mount /dev/sdb1 /mnt/ ls /mnt/ Mount:查看所有挂载情况 Umount:取消挂载 磁盘查看 Df:查看磁盘分区使用情况 -h人性化的显示 Du:查看指定目录的而是用情况 -h人性化的显示 管道(管道符号‘|’一个输出当另外一个的输入) 实例: ls -l /etc | more ls -l /etc的输出作为more的输入 ls -l /etc/ | grep vi 查找/etc/下的包含vi的文件 注意:有些命令不接受管道参数 可以结合xargs使用 find -type d | xargs rm -r -r递归删除 找到目录并且删除 重定向 打开任意程序 系统会自动创建三个文件流 标准输入 标准输出 错误 例如 输出重定向 ls /etc/ > 01.txt 把/etc/下的输出内容重定向输出到01.txt文件中 echo ‘hello’>>1.txt 将hello追加到1.txt中 没有就创建 错误重定向 ls /abc 2>2.txt 将错误输出到2.txt 同时重定向和错误: ls /abc . &>3.txt 系统服务 网络: ping:检查网络连通性 ifconfig:查看网卡信息 ifup ifdown 启动 关闭网卡 service network start|stop|restart 网络服务 开启 关闭 重启 端口查看: netstat -tunpl:查看端口 t TCP u UDP n IP p 端口 内存: free 查看内存 free -h:人性化显示 具体查看 涉及大小 正在做什么 w:what的简写 查看系统正在作什么 查看所有执行程序 top:是w 的详细显示 查看虚拟内存: Vmstat 进程管理: 查看进程: ps aux a:所有 u:显示用户 x:显示没有终端的 杀死进程: Kill -9 PID 杀死指定进程号的进程 Ps aux | grep ssh 查看进程中含ssh的进程 grep筛选 正则匹配 9 软件的安装 解压压缩 压缩解压命令 zip/unzip: yum install -y zip 安装zip负责安装包操作 zip 12.zip *.txt 将txt结尾的文件压缩为12.zip unzip 12.zip 将12.zip解压 gzip/gunzip:另外一种格式的压缩解压 只能压缩单个文件 压缩后会把原来文件删除 后缀.gz gzip 1.txt 将1.txt压缩为 1.txt.gz gunzip 1.txt.gz 解压 gunzip -d 1.txt.gz 同上 bzip2/bunzip2:用法和gzip/gunzip一样 后缀为bz2 bzip2 1.txt 将1.txt压缩为 1.txt.bz2 tar:打包解包工具 后缀tar -c 打包 -x 拆包 -t 查看包中东西 -f 指定文件 一般放在最后 -v 显示详细信息 -z 使用gzip/gunzip解压压缩 -j 使用bzip2/bunzip2解压压缩
tar -cvf 12.tar *.txt 将.txt文件打包为12.tar -cvf 先打包再显示打包过程 指定为12.tar tar -xvf 12.tar 将12.tar解压包 Tar -zcvf 12.tar.zip 12.tar 用gzip压缩包12.tar tar -zcvf 12.tar.gz *.txt 一步完成压缩打包 tar -zxvf 12.tar.gz 一步解包解压
说明:-k 可以在操作后保留原文件 tar.gz简写为tgz tar.bz2简写为tbz2/tbz
#! /bin/bash Echo “hello world” 添加可执行权限 chmod +x hello.sh 执行: 1 在当前目录./hello.sh 不在当前目录 加上前面的目录 2 使用bash /bin/bash hello.sh 3 书写shell 1 指定解析器 #! /bin/bash 2 注释符号 # 3 严格的使用习惯 4 变量 #! /bin/bash name=”xiaoming” echo n a m e e c h o “ name echo “ nameecho“{name}xiao” unset name #销毁变量 5 变量类型 本地变量 只在shell脚本内使用 环境变量 在整个系统中使用 通常全部大写 使用最多的是PATH 修改: 系统 /etc/profile 用户 ~/.bash_profile 导出: Eexport PATH=$PATH:/root/shell
位置变量 $0 脚本名字 $1-$9 执行脚本时传递的参数 特殊变量 $* 所有的参数 $# 参数的个数 $? 上次的执行结果 0 表示正确 非0 错误 6 文件包含 . 文件 Source 文件 说明:以上两种形式都可以在一脚本中引入另外一个脚本 相当于直接写在当前脚本中 7 特殊命令 seq m n 产生从m到n的整数 expr 将表达式进行运算 expr 2 + 3 结果为5 expr 2 * 3 结果为6 \转义字符 8 字符串 双引号:中间的字符可以解析变量 除特殊字符 单引号:中间字符不能解析 是什么就是什么 反引号:表示当做命令执行 反斜线:转义特殊字符 9 字符串操作 ${#变量名}:字符串长度 ${变量名:开始:长度}:字符串提取 从第几个开始提取几个 10 数组操作 array=(a b c d) 定义数组 echo a r r a y [ 0 ] 打 印 下 标 为 0 的 元 素 11 各 种 运 算 测 试 工 具 : t e s t 成 功 {array[0]} 打印下标为0的元素 11 各种运算 测试工具:test 成功 array[0]打印下标为0的元素11各种运算测试工具:test成功?为0 错误不为0 $?显示上次结果的值 数值比较: -lt:小于 -le:小于等于 -gt:大于 -ge:大于等于 -eq:等于 -nq:不等于 字符串比较: =:等于 !=:不等于 -n:字符串长度不为0 结果为真 -z:字符串长度为0 结果为真 文件判断: -f:普通文件 -d:目录文件 -w:文件可写 -x:文件可执行 -s:文件至少一个字符 -c:字符设备文件 -b:块设备文件 逻辑判断: -a:逻辑与and的简写 另一种形式&& -o:逻辑或 or || !:逻辑非 12 if分支 if [ 2 -lt 3 ];then echo “2<3” fi
if [ “abc”=“abc” ];then echo “same” else echo “different” fi
#read 用于从终端获取输入 并保存在变量中 #-p表示可以输出一个提示字符串 read -p “please input a number:” ch if [ $ch -ge 5 ];then echo “>=5” elif [ $ch -ge 3 ];then echo “>=3” else echo “❤️” Fi 13 case分支 read -p “please input a char:” ch case $ch in [a-z]) echo “aplha” ;; [0-9]) echo “number” ;; ) echo “others” ;; esac 14 for循环 for x in a b c do echo $x Done 遍历指定目录 for x in / do echo $x done 遍历一到十 for x in seq 1 10 #这里是反引号 esc下面的 do echo x d o n e 累 加 1 − 100 f o r i i n ‘ s e q 1100 ‘ d o l e t s u m + = x done 累加1-100 for i in `seq 1 100` do let sum+= xdone累加1−100foriin‘seq1100‘doletsum+=i done echo $sum 另外一种写法 打印1-10 for ((i=1;i<=10;i++)) do echo $i Done 15 while循环 打印1-10 i=1 while [ $i -le 10 ] do echo KaTeX parse error: Expected 'EOF', got '#' at position 13: i ((i++)) #̲或者let i+=1 或者i=[$i+1] Done 16 until循环 打印1-10 i=1 while [ $i -le 10 ] do echo $i ((i++)) done
17 break跳出循环 while : #这里形成死循环 do read -p “input a char:” ch case $ch in [0-9]) echo “number” break ;; *) echo “others” break ;; esac Done 18 continue 作用:结束本次循环 进入下次循环 i=1 while [ $i -le 10 ] do if [ [ [ [i%3] -eq 0 ];then ((i++)) continue fi echo $i ((i++)) Done 11 函数 demo() { echo “hello world” } demo 参数 test() { echo $1 echo $2 } test abc 123 返回值 add() { return 123 } add echo $? 黑洞文件 /dev/null Cat /dev/null > 1.txt 无论怎么写都是空的 清除垃圾或者记录 12 sed 处理文件流 格式:sed [参数] 指令 文件 参数: -n:结合命令p使用 用于打印内容 -i:默认不加参数不会修改内容 加上后会 命令: p:打印 需要结合-n使用 a:增加 d:删除 c:取代 s:替换 实例: Sed -n ‘1p’1.txt 打印第一行 1,3p 1-3行 $p 最后一行 Sed ‘1a xxx’ 1.txt 在第一行下面添加xxx Sed ‘5d’ 1.txt 删除第五行 Sed ‘3,5c xxxx’1.txt 用xxx取代3-5整行 Sed ‘5,7s/jn/xxx/g’ 1.txt 将5-7行的jn换成xxx
