Linuxshell编程基础课堂笔记+课后练习
一、什么是shell&命令行CLI
1.图形桌面出现前,操作unix/Linux唯一方式是命令行CLI,仅支持文本输入输出。
物理控制台切换:Ctrl+Alt+F1/F7
Ubuntu图形界面:F7
图形桌面内使用:打开终端仿真器调出shell
2.Bash Shell基础
(1)普通用户提示符$,代表等待输入命令
(2)输入指令后回车执行
(3)Tab键自动补全:输入文件/命令前缀按Tab,自动补全名称;多匹配项连续按Tab列出全部候选。
二、man手册:命令官方查询工具
忘记命令参数、用法直接用man查看系统官方手册,是Linux最核心的查询工具
基础用法:
man is 查看is命令手册
man man 查看man命令自身手册
man -k密码 按关键字搜索相关命令(模糊查找)
手册操作快捷键
a.空格:整页向下翻
b.回车:逐行向下滚动
c.上下箭头:上下单行浏览
q:退出手册页面
手册分区说明
1.可执行程序/shell命令
2.内核系统调用
3.程序库函数
三、Linux虚拟文件系统(和Windows最大区别)
Windows路径特点
(1)分盘符:C盘、D盘,每个磁盘独立目录树
(2)路径分隔符:反斜杠
Linux虚拟目录核心规则
1.无盘符,统一单一根目录/,所有磁盘都挂载到根目录下的文件夹
2.路径分隔符:正斜杠/
3.挂载点:额外硬盘、u盘等设备,映射到根目录下某个文件夹,对外统一展示为一个目录树。
核心体统目录作用速查表
四、目录切换与路径规则
1.两种路径写法
(1)绝对路径:从根/开始完整路径,任何位置都能使用
(2)相对路径:基于当前目录,不用写完整前缀cd lectures 直接进入当前目录下lectures文件夹
2.目录特殊符号
(1).单点符:代表当前目录
(2)…双点符:代表上一级父目录
五、ls目录查看命令
ls列出当前目录所有文件或者文件夹,支持大量参数组合
ls -F 区分文件/文件夹,文件夹末尾自动加 /
ls -a 显示隐藏文件(Linux以 . 开头的文件为隐藏配置文件)
ls -R 递归列出所有子目录内容
ls -l 长格式展示(权限、所有者、大小、修改时间)
ls -FR #参数组合,递归+区分文件类型
ls -l长格式字段解读
drwxrwxr-x 5 zhangzy zhangzy 243 6月13 15:51 h
文件类型: d =目录、 - =普通文件
三段权限:所有者/所属组/其他用户读写执行权限
硬链接数量
文件所有者用户名
文件所属用户组
文件大小(字节)
最后修改时间
文件/目录名称
通配符过滤文件
匹配筛选文件,批量操作必备
*:匹配任意长度任意字符
?:匹配单个任意字符
[ ] :匹配指定区间字符
!:将不需要的内容排除在外
? * [] ! 等符号称为元字符通配符
六、文件基础操作命令
1.创建空文件touch
touch test.txt 创建大小为0的空文件
touch test.txt 若文件已存在,仅更新文件时间,不修改内容
2.复制cp
cp源文件 目标路径
cp -i a.txt b.txt 覆盖前弹窗询问确认,防止误覆盖
3.移动/重命名mv
mv old.txt new.txt 同目录=重命名
mv file.txt ./references 移动文件到指定目录
mv -i 覆盖前提醒
4.删除rm(无回收站,谨慎操作)
rm file.txt
rm -i file.txt 删除前确认
rm -f file.txt 强制删除,无提示
rm -rf 目录名 强制删除非空目录(递归删除所有内容)
七、目录操作命令
1.创建文件夹mkdir
mkdir lectures
mkdir -p lectures -p自动创建多级父目录
2.删除文件夹
rmdir空目录:仅删除无任何文件的空文件夹
非空目录直接使用rm -rf目录名 递归强制清空删除
八、查看文件内容
1.cat:一次性打印全部内容
cat linux_basics.txt
cat -n test.txt 所有行显示行号
cat -b test.txt 仅非空行显示行号
2.more/less:分页浏览大文件
more:基础分页,空格翻页,q退出,只能向下翻
less:more升级版,支持上下滚动,关键词搜索
3.head:查看文件开头(默认前10行)
head -6 test.txt 查看前6行
4.tail:查看文件末尾(默认后10行)
tail -5 test.txt 查看最后5行
tail -f log.txt 实时追踪文件新增内容
5.file命令:判断文件真实类型,编码,链接指向,不依赖后缀名
九、课后练习1.回到用户主目录:cd~
2.创建项目结构
(1)一键创建项目根目录+三个子目录
mkdir -p LeaningNotes/{lectures,references,backups}
-p 参数可以自动诸暨创建不存在的父目录,大括号实现批量创建子文件夹
(2)切换到lectures目录:cd LeaningNotes/lectures
3.创建和编辑笔记
(1)创建两个空文件:
touch linux_basics.txt commands_cheatsheet.txt
(2)向Linux_basics.txt写入内容
cat > linux_basics.txt <<EOF
Linux Command Basics
cd: Change directory
ls: List files and directories
pwd: Print working directory
EOF
4.向commands_cheatsheet.txt写入内容
cat >commands_cheatsheet.txt <<EOF
cat: Display entire file
head: Show first 10 lines
tail: Show last 10 lines
less: Interactive file viewer
EOF
4.文件操作
(1)复制文件并重命名到references
cp commands_cheatsheet.txt …/references/
command-reference.txt
(2)重命名文件
mv linux-basics.txt linux_fundamentals.txt
(3)备份文件到backups
cp linux_fundamentals.txt …/backups/
(4)更新时间戳(不修改内容)
touch commands_chestsheet.txt
5.查看和分析文件内容
(1)查看linux_fundamentals.txt的内容
cat linux_fundamentals.txt
(2)查看commands_reference.txt前2行
head -2 …/references/command_refernce.txt
(3)查看commands_cheatsheet.txt 后3行
tail -3 commands_cheatsheet.txt
(4)交互式浏览command_refence.txt
less …/references/command_reference.txt
6.项目维护
(1)切换到项目根目录
cd …/
(2)列出完整项目结构
ls -R
(3)删除references 内command_reference.txt
rm references/command_reference.txt
(4)根目录新建空文件project_status.txt
touch project_status.txt
(5)更新项目内所有文件访问时间
find . -type f -exec touch{} ;