alin的学习之路(Linux系统编程:一)(Linux基础命令)
1.Linux学习准备
-
操作系统的作用
- 向上给用户提供简单的操作计算机硬件的方式
- 对下管理硬件
- 承上启下
- 程序运行在操作系统上,程序运行时的资源由操作系统提供,操作系统管理和监控运行的程序。
-
Linux和Windows的区别
- 系统函数不同(跨平台时要注意这一点)
- 应用领域不同:Windows多用于娱乐和办公,Linux多用于服务器领域。
- 目录结构不同:Windows有多个盘符,Linux所有文件都保存在根目录下。
-
Linux内核和发行版
- 内核
- 内核是专门用于对硬件管理的程序,是最最基础的程序
- uname -r 查看内核版本
- 发行版
- 内核的软件的安装,管理等比较麻烦
- 内核+软件管理程序+使用软件 = Linux发行版
- 内核
-
Linux的学习内容
终端命令和系统调用
2.Linux命令基础
- 命令解析器(shell)
- 功能:用来解析输入的命令,并且向内核发送操作指令
- 查看当前的命令解析器:
echo $SHELL
- man手册
- 命令:man
- man手册分为7卷,常用1 2 3卷分别是,命令相关说明,库函数,系统调用。
- 软件的安装和卸载
- 安装:sudo apt install 软件名
- 卸载:sudo apt remove 软件名
- 用户分类
- 超级用户root:有着管理该系统的最高权限,可进行任意的操作且无限制
- 普通用户:仅能操作自己用户所属的内容,默认普通用户登陆后会进入对应本用户的家目录下
- Linux重要目录
- /根目录
- /home 家目录,每个用户自己的目录
- /etc 软件、系统配置文件目录
- /lib 存储系统或软件使用的库的目录
- /usr (unix system resource)
- /usr/bin 存放一些可执行程序
- /usr/include 存放头文件
- /usr/lib 存储静态库和动态库
- /usr/local /opt 一般用于第三方软件的安装
- /root root用户的家目录
- /sys 系统目录
- /proc 系统使用,存放系统运行过程中内存中的数据
- /lost+found 系统意外停止、断电时会将数据临时存储到该目录,用于恢复系统
- /dev 设备文件目录,Linux上一切皆文件,设备也是如此,对设备的操作就像是操作文件
- 远程登陆
- 使用第三方软件:XShell、putty等
- 通过命令登陆:Windows命令行中,ssh 用户名@服务器ip地址,可远程登陆
3.目录操作相关命令
- Linux命令格式:命令 [选项] [参数]
- ls
- 将某个目录下的文件和目录列出来
- -a 显示全部文件及目录,.开头的文件是隐藏文件,也会显示
- -l 以列表的形式显示
- -f 给某些特定文件追加标识,例如:可执行文件加*,目录加/
- ll 是命令的别名
- ll 代表ls -alF
- alias 别名=‘命令’ 可给命令起别名
- 查看别名:alias
- 删除别名:unalias 别名
- pwd(print working directory):显示当前目录
- cd (change directory)
- cd 路径 :切换到某一路径
- 绝对路径:以/开头的路径
- 相对路径:以 . 或 … 开头,是以当前路径或上一级路径为基准开始的路径
- cd :只写一个cd 表示切换到家目录
- cd - :表示切换回上一个目录
- 几个特殊的目录表示
- ~ 家目录
- / 根目录
- . 当前目录
- … 上一级目录
- cd 路径 :切换到某一路径
- tree:以树形显示目录结构
- 语法:tree 选项 目录
- -d:只显示目录,不显示文件
- -f :显示目录的完整路径
- 系统默认不带tree,如果没有的话使用sudo apt install tree
- mkdir(make directory):创建目录
- -p 递归创建目录:例如
mkdir -p a/b/c
- 创建:aa 目录下有 aa1 aa2 目录,在 aa2 目录下有个 bb1, bb2目录.
mkdir -p aa/{aa1,aa2/{bb1,bb2}}
- -p 递归创建目录:例如
- rm(remove):删除目录或文件
- -r 用于删除目录
- -rf ,f(表示force)表示强制删除,如果目录不存在不会询问
4.文件相关命令
- touch:创建空文件
touch 文件名 [文件名……]
- rm(remove):删除文件
- rm 文件名:删除指定的文件
- 删除以.txt结尾的所有文件:
rm *.txt
- 删除所有文件不包括目录:rm *
- 删除所有文件包括目录 rm -rf *
- mv(move):移动文件或目录
- mv 文件 目录:表示将文件移到指定路径
- mv 旧文件名 新文件名:可以用来重命名文件
- mv 目录1 目录2:将目录1移动到目录2下,例如:
mv abc/ ppp/
表示将abc目录移动到ppp目录下 - mv 旧名目录 新目录名:表示给目录重命名,例如:
mv abc/ ppp
给目录abc重命名ppp
- cp(copy):拷贝文件或目录
- 拷贝文件:cp 源文件 目录 ,例如:
cp a.txt b.txt
将a.txt拷贝成b.txt - 拷贝目录:cp -r 源目录 目录 (-r表示递归拷贝),例如:
cp -r qqq/ abc
将ppp目录拷贝成abc目录
- 拷贝文件:cp 源文件 目录 ,例如:
- ln(link)
- 软连接:ln -s 源文件 链接文件,例如:
ln -s a.txt a.lnk
,删除a.txt后a.lnk失效 - 硬链接:ln 源文件 链接文件,例如:ln a.txt a.lnk,删除a.txt后a.lnk不失效
- 软连接:ln -s 源文件 链接文件,例如:
- find
- 一般通过文件名去查找文件
- 查找具体名字的文件:
sudo find 查找目录 -name 文件名
,例如:sudo find / -name stdio.h
- 模糊查找:文件名可以使用通配符,例如:
sudo find / -name *.h
5.文件查看相关命令
- 文件的传输:
- 可使用第三方软件进行传输:Fileziila 可以将本地文件、远程文件上传下载。
- 可以使用
wget 网址
命令从网址中下载文件
- cat:用于查看较小的文件
- more:可用于查看较大的文件,一次显示一页,在底端显示查看进度,按空格向下翻页,按b向上翻页,按enter向下显示一行,按q退出
- less:于more类似,但底端的进度改为命令行,可以用来搜索文件中的指定字符
- head:head -n 显示文件的前n行
- tail:tail -n 显示文件的最后n行
- grep
- 用于查看符合条件的某些行
- 语法:grep 关键字 文件名,例如:
grep "me" command.txt
,查看包含me的行 - 输出内容显示行号:使用-n选项,例如:
grep -n "me" command.txt
- -v 选项表示输出所有不包含关键字的行,例如:
grep -vn "me" command.txt
grep -n "^G" command.txt
, 表示显示所有以 G 开头的行的内容。 ^ 表示以…开头。
思考问题1
- 为什么要学习 Linux? 学习 Linux 最重要的是学习什么?
- 为什么要学习Linux
- 开发人员需要掌握Linux的使用
- 大部分开发均部署在Linux上
- 学习 Linux 最重要的是学习什么
- 学习终端命令和系统调用
- 为什么要学习Linux
- 什么是 Linux 命令? 学习 linux 命令有什么用?
- 什么是Linux命令:向内核发送指令,操作Linux系统
- 学习Linux命令可以管理Linux系统,管理内核。
- 操作系统的作用是什么?操作系统给用户提供了那些操作方式?
- 操作系统的作用
- 向上给用户提供简单的操作计算机硬件的方式
- 对下管理硬件
- 承上启下
- 程序运行在操作系统上,程序运行时的资源由操作系统提供,操作系统管理和监控运行的程序。
- 操作系统给用户提供了那些操作方式
- 图形界面
- 终端命令
- 系统调用
- 操作系统的作用
- 远程连接命令是什么?
- ssh 用户名@服务器IP地址
- 目录操作命令都是什么作用?
- 对文件和目录进行管理
- man 手册的作用?
- 帮助开发人员了解命令,库函数,系统调用等共7项内容
- 什么是 root 用户?为什么不建议使用 root 用户进行计算机操作?
- root是超级管理员用户,拥有最高的权限
- 使用root用户进行计算机操作因为权限的最大,有可能误删除某些必要系统文件,导致系统崩溃
- 软件安装与卸载命令是什么?
- 安装:sudo apt install 软件名
- 卸载:sudo apt remove 软件名
- 什么是 Linux 内核?什么是 Linux 发行版? 我们用的是什么发行版本?
- Linux内核是一组专门管理硬件的程序,是最最基础的程序
- 内核+软件管理程序+实用的软件 = Linux 发行版,因为内核的软件安装管理等比较麻烦,且几乎没有预装软件,很多厂商从官网下载内核后自己设计安装管理程序,随后制作出Linux发行版
- /home 目录的作用是什么?
- 家目录,是每个用户自己的目录,用户登录后默认进入自己的目录,存放用户的文件
思考问题2
- 如果要查看文件内容可以使用哪些命令?
- cat,more,less,head,tail,grep
- 进行文件重命名可以使用哪个命令?格式是什么?
- mv
- mv 文件名 新文件名
- 如果要在 /home/itcast 目录下查找所有的 .h 文件,命令应该怎么写?
- find /home/itcast -name *.h
- 为什么要在某些命令前面加上 sudo 呢?
- 有些目录和文件使用普通用户的权限无法访问到,需要用临时借用管理员的权限才能访问到
- 删除目录使用什么命令?命令的格式是什么?
- rm
- rm -r 目录名 (-f 表示强制删除,如果目录不存在不报错,如果存在直接删除)
- 如果要给一个命令增加别名应该使用哪个命令?如果要删除该别名使用哪个命令?
- alias
- unalias
- Linux 的目录和 Windows 的目录区别是什么?
- Linux所有得文件都在根目录下,也就是/
- Linux下没有盘符