作者:@小萌新
专栏:@Linux
作者简介:大二学生 希望能和大家一起进步!
本篇博客简介:介绍Linux的基础命令
Linux基础命令
- ls指令
- ls
- ls -a
- ls -d
- ls -i
- ls -s
- ls -l
- ls -n
- ls -F
- ls -r
- ls -t
- ls -R
- ls -1
- 总结
- 思维导图
- pwd指令
- whoami指令
- cd指令
- cd ..
- cd + 绝对路径
- cd + 相对路径
- cd ~
- cd -
- clear指令
- touch指令
- touch + 文件名
- touch -d
- mkdir指令
- mkdir + 目录名
- mkdir -p +多重目录
- rmdir指令
- rmdir + 空目录名
- rmdir -p + 多重目录
- rm指令
- rm + 文件名
- rm -i
- rm -r
- rm -f
- man指令
- cp指令
- cp 文件1 文件2
- cp -i
- cp -f
- cp -r
- mv指令
- mv 文件1 文件2
- mv -i
- mv -f
- cat指令
- cat + 文件
- cat + n
- cat + b
- cat + s
- tac指令
- more指令
- less指令
- head指令
- head + 文件
- head -n
- tail指令
- tail + 文件
- tail -n
- 如何读取文件的指定行到指定行
- date指令
- date
- date +%...
- 设定时间
- 时间时间戳转换
- cal指令
- cal + 年份/ 月份 + 年份
- cal -3
- cal -j
- cal +y
- find指令
- find + 路径 + -name
- find + 路径 + -szie
- which指令
- alias指令
- grep指令
- grep -i
- grep -n
- grep -v
- adduser
- userdel
- zip / unzip
- tar指令
- tar -czf
- tar -xzf xxx -C
- tar -tf
- file指令
- file + 文件
- bc指令
- uname指令
- uname -r
- uname -a
- 五个重要热键
- 上下按键 (很重要!)
- ctrl + d
- ctrl + c
- tab
- ctrl + R
- 关机指令
ls指令
ls
在我们使用的windows系统中 一般会直接展现该目录中的所有子目录和文件
如果我们想要在Linux系统中展现当前目录中的所有子目录和文件则需要我们打出以下命令
ls -a
在windows系统中 某些文件可能会被隐藏 如果我们不打开 隐藏的项目 这一设置 它们是不会展现出来的
而在Linux系统中 如果我们想要展示所有文件我们则需要使用 ls-a这个命令
这里要注意的是
- 在Linux中每个目录下有两个文件是默认隐藏的 它们分别是 . 和 . .
- 其中 . 代表当前目录 . .代表上级目录
ls -d
ls -d的作用是将目录像文件一样展示 而不是展示目录下的文件
我们这里使用了三个ls命令 接下来我将详细解释这三个命令以及它们对于解释ls -d的意义
- 首先我们如果直接用ls + 目录名的话 则会展示目录下的所有文件即目录
- 我们在ls后面加上-d命令之后 则只会展示这个目录
- 如果我们使用ls -d后面不指定文件 则默认展示当前文件 当前文件为 .
ls -i
ls -i的作用是输出文件的 i 节点的索引信息
至于i节点的索引信息是什么 我们目前阶段不需要知道
ls -s
ls -s的作用是在文件名前输出该文件的大小
ls -l
ls -l的作用是展示文件的详细信息
一般来说我们习惯上将 ls -l 简化为 ll 两种写法是一样的
ls -n
ls -n的作用是使用用户的uid gid来代替名称
ls -F
ls -F的作用是在每个文件的最后加上一个字符来说明该文件的类型
其中字符的说明如下
- “*” 表示可执行的普通文件
- “/” 表示目录
- “@” 表示符号链接
- “|” 表示FIFOs
- “=” 表示套接字sockets
ls -r
ls -r的作用是对目录反向排序
ls -t
ls -t的作用是对目录按照时间排序
为了验证是否真的是按照时间排序 我们可以使用 ll 看文件的创建时间
ls -R
ls -R的作用是展示目录下所有子目录的信息
ls -1
ls -1的作用是每行只输出一个子目录或文件
总结
- 我们在使用ls指令的时候如果有多种要求可以省略 - 符号
比如说这里的r1就是既让目录逆序又让它每行只输出一个
- 如果不指定目录 则默认操作对象为当前目录 这一点在ls -d中已进行验证 这里不再赘述
思维导图
pwd指令
pwd指令是显示用户当前所在的目录
在windows系统下 我们想要看到文件的位置 只需要找到上面的索引即可
而在Linux系统下我们则需要通过pwd命令来实现
whoami指令
whoami指令的作用是显示当前用户的身份
cd指令
cd的作用是改变目录
在讲解cd指令之前我们首先要对于Linux系统文件的结构要有一个大概的认知
首先Linux系统的基本结构是一颗多叉树
每个目录都可以是一个非叶子节点 而每个普通文件都可以是一个叶子节点
而实际上windows的系统储存结构也是类似一颗多叉树
在windows中我们可以通过鼠标的点击来实现目录之间的切换
而在Linux中我们通过cd操作来实现这一点
下面我将介绍几种cd指令的常用方式
cd …
cd …的作用是进入上级目录
cd + 绝对路径
cd + 绝对路径的作用是进入该绝对路径
cd + 相对路径
cd + 相对路径的作用是进入该相对路径
其实这一点我们的 …操作已经演示了
… 就是一个相对路径 它是相对于当前目录来说的
cd ~
cd ~ 的作用是进入主目录
这里有一点要注意的是
- root的主目录是 /root
- 普通用户的主目录是 /home/username
cd -
cd -的作用是返回上一次所在的目录
clear指令
clear指令的作用是清屏
我们可以看到 经过clear命令了之后屏幕上的所有指令都消失了
这里再深入了解下clear
其实它并不是将所有命令清除 而是将它们放到屏幕的上方去了 如果我们使用鼠标滚轮向上滑动的话我们还是可以找到之前的命令的
touch指令
touch指令的作用是创建一个新的空文件或者更改文档的日期时间
常用指令如下
touch + 文件名
touch + 文件名可以创建一个空文件
touch -d
touch -d可以指定时间创建一个空文件
touch的其余指令要学习到更深入的linux知识之后才能理解
因此其余内容会更新在后面的博客之中
mkdir指令
mkdir指令的用途是创建一个新空目录
在windows系统中 我们可以通过右键选择来新建一个目录或者文档
而对应到linux系统中 这个动作变成了mkdir指令
mkdir + 目录名
它的作用是创建一个新的目录
mkdir -p +多重目录
它的作用是创建多重目录
一般的 我们如果不加上-p指令 我们是无法创建多重目录的
但是加上-p指令之后就可以创建成功了
rmdir指令
rmdir指令的用途是删除一个新空目录
在windows系统中 我们想要删除一个空目录 同样的 只需要右键点击 然后找到删除按钮就好
而在Linux中这个指令是rmdir
rmdir + 空目录名
删除这个空目录
需要特别注意的是 如果该目录不为空 则我们不能删除
我们可以知道dir4目录是为空的 之后我们来试验下rmdir命令
可以删除
rmdir -p + 多重目录
如果删除子目录之后父目录为空 则删除父目录
rm指令
rm指令可以用来删除各种文件
rm + 文件名
它的作用是指定删除文件
值得注意的是 linux中并没有回收站一类的东西 所以删除文件前务必小心仔细!!!
rm -i
它的作用是删除文件前逐一询问
rm -r
它的作用是递归删除目录及以下的所有文件
rm -f
强制删除文件 不询问
通常我们f指令和r指令一起使用
通常我们使用通配符 " * " 来告知系统我们要删除当前目录下的所有文件
一般的 我们在删除的时候喜欢加上 ./来指定删除当前目录下的文件
使用 -f 来强制删除 不用询问
这里有一个特别危险的命令
rm -rf /
这个命令的意思是从根目录开始递归删除所有的文件
我们在上面提到过了 linux中式没有回收站的
所以说一旦删除了之后我们就几乎没有办法能够恢复文件了!
这也是我们所说的删库操作
删库操作是有很大概率触犯法律的 所以同学们只要知道这个命令就好 在实际的工作中不要去尝试
man指令
它的作用是帮助我们学习或回忆linux的指令和其他指令
之后它会展示一个文档来告知我们怎么使用
我们只需要按q就能退出这个文档
关于man的一些使用细则如下
- -k 根据关键字搜索联机帮助
- num 只在第num章节查找
- -a 将所有章节的查找结果都显示出来
其中man手册分别八章
- 可执行程序或shell命令
- 系统调用(内核提供的函数)
- 库函数(程序库中的函数)
- 特殊文件(通常在/dev中找到)
- 文件格式和约定 如/etc/passwd
- 游戏
- 杂项
- 系统管理命令(通常仅限于root用户)
cp指令
他的作用是复制文件或者目录
在外面的windows系统中 我们可以使用ctrl c ctrl v来 将一个地方的文件或目录转移到另一个地方
而在Linux系统中 我们使用cp指令来完成之
cp 文件1 文件2
将文件1拷贝一份到文件2里面去
cp -i
他的作用是在文件已经存在的情况下询问用户是否进行重写
cp -f
他的作用和i相反 强制复制 不询问
cp -r
递归拷贝 拷贝目录下的所有内容
mv指令
我们通常使用mv指令来移动文件
mv 文件1 文件2
它的作用是将文件1移动到文件2里面去
这里还有一种特殊情况 假如说dir1不存在 那么此时就会将dir2重名名为dir1
mv -i
它的在目标文件已存在的情况下询问是否重写
mv -f
它的在目标文件已存在的情况下不询问是否重写 直接覆盖
cat指令
cat指令的作用是查看目标文件的内容
在windows系统中 如果我们想要查看一个文件的内容 我们需要点击并打开它
但是在Linux系统中 如果我们想要查看文件的内容则我们只需要使用cat命令
cat + 文件
cat + n
它的作用是显示行数
cat + b
它的作用是对非空行进行编号
cat + s
它的作用是禁止空行连续输出
我们可以发现 连续的空行不见了
tac指令
它的作用是反向查看文件
我们可以发现 输出反过来了
more指令
more指令用来看海量信息文件
当我们的文件内容比较多的时候我们使用more指令来查看
这里有几个注意点:
- more指令查看时会加载整个文件
- more指令只能向下翻页不能向上翻页
- more指令只能使用enter来翻页
less指令
less指令用来查看海量信息文件 并且具有翻页和搜索功能
下面是几个注意点
- less指令查看时不会加载整个文件
- less指令可以通过 kj来进行上下翻页操作
- 如果想要搜索内容可以通过 / + 搜索内容的方式来搜索
下面是几个常用选项
- -i 忽略搜索时的大小写
- -N 显示每行的行号
- /字符串 向下搜索“字符串”的功能
- ?字符串 向上搜索“字符串”的功能
- n 重复前一个搜索(与/或?有关)
- N 反向重复前一个搜索(与/或?有关
head指令
用于展示输出文件的开头 默认输出前十行
head + 文件
head -n
它的作用是指定输出的行数
tail指令
用于展示输出文件的末尾 默认输出最后十行
tail + 文件
tail -n
它的作用是指定输出的行数
如何读取文件的指定行到指定行
假设现在有以下要求
我们要读取并输出test2.c的第4行到第8行
经过上面的tail指令操作之后我们能想到如下的解决方式
- 首先读取文件的前8行并将其重定向道一个新文件中
- 读取并打印新文件的后5行
经过这样子的两步操作就能够得到我们想要的效果了
但是呢 这种方式特别的麻烦 尤其是要我们创建一个新文件来当作中转站
那么有没有办法能够解决这个麻烦呢?
linux中提出了一种叫做管道的思路
大致思路图如下
对应到我们需要解决的问题上 我们可以这样子做
- 我们使用head指令生产出前面八行的数据
- 我们使用 管道 来传输数据
- 我们使用 tail 来最后读取数据
date指令
date指令与时间相关
date
date命令可以显示当前的日期时间
date +%…
它的作用是显示更加具体的时间或日期
其中我们只需要知道两个比较关键的命令就好
date +%X 显示完整的当日时间
date +%F显示完整的日期
设定时间
此外date指令还可以用来设定时间
其中使用格式如下
- date -s 设置当前时间 只有root用户才能设置 普通用户只能查看
- date -s 20210725 将时间设置为20210725 这样会将具体时间设置为空(00:00:00)
- date -s 01:01:01 设置具体时间 不会对日期做更改
- date -s “01:01:01 2021-07-25” 同时设置日期和具体时间
- date -s “01:01:01 20210725” 同时设置日期和具体时间
- date -s “2021-07-25 01:01:01” 同时设置日期和具体时间
- date -s “2021072501:01:01” 同时设置日期和具体时间
时间时间戳转换
我们可以通过以下的两个命令来完成时间和时间戳的转换
date +%s
date -d @时间戳
cal指令
cal指令用来显示日历
cal + 年份/ 月份 + 年份
如果cal后面+一个参数则默认为年份
如果cal后面+两个参数则默认为月份+年份
cal -3
显示以本月为中心的三个月份
cal -j
它的作用是让你知道你在一年中的第几天
cal +y
显示当前年份的日历
find指令
find指令用于在文件树中查找文件
这个指令是真正的遍历整棵树来查找文件
find + 路径 + -name
查找指定路径下的指定文件
find + 路径 + -szie
按照文件大小查找文件
which指令
which指令用于查看文件所在位置
Linux系统涉及采取了 “一切皆文件” 这种涉及哲学
将其中所有的命令都设计成了文件的形式
我们可以使用下面的代码来证明
alias指令
alias指令的作用是取别名
这个和我们c语言中的typedef十分相似
它的语法是这样子的
alias 别名=‘原名’
这里有一点需要注意的是
**我们的取别名仅仅是这次有效 下次登录就会失效 **
此外我不建议大家对于linux的命令取别名
grep指令
grep指令的作用是在文件中搜索字符串并打印
grep -i
它的作用是忽略大小写进行查找
grep -n
它的作用是输出带行号
grep -v
反向选择
我们可以发现 搜索出来的结果没有1
adduser
添加用户
首先添加用户必须要使用root用户的权限才能执行
添加用户分三步走
- 首先 adduser + 用户名
- 设置密码
这一有一点需要注意的是 我们设置密码的时候光标不移动
- 重复密码
之后只需要再输入一次密码 用户就创建成功了
之后我们只需要使用 ls /home 就能看见我们新增的用户了
userdel
我们使用userdel -r + 用户名 就能删除用户了
我们可以看到test用户直接被我们删除了
zip / unzip
它们的作用是压缩和解压文件
它的语法格式是这样子的
zip 选项 压缩文件.zip 待打包目录或文件
接下来就到解压了
语法是
unzip 压缩文件.zip 选项 目录
tar指令
tar指令也可以用来打包压缩和解压文件
它的语法格式如下
tar 选项 压缩文件 指定位置
各种常用选项如下
- -c 建立一个压缩文件的参数指令(create)
- -x 解开一个压缩文件的参数指令
- -t 查看tarfile里面的文件
- -z 是否同时具有gzip属性?即是否需要用gzip压缩?
- -j 是否同时具有bzip2属性?即是否需要用bzip2压缩?
- -v 压缩的过程中显示文件(常用)
- -f 使用档名 请留意 在f之后要立即接档名 不要再加参数
- -C 解压到指定目录
tar -czf
它的作用是使用.gzip格式打包到新目录中
tar -xzf xxx -C
它的作用是解压到指定目录中
tar -tf
不解压 查看压缩包内的内容
file指令
它的用处是查看文件的详细信息
file + 文件
bc指令
它的作用是展示一个计算器进行计算
uname指令
它的作用是显示系统的各种信息
uname -r
输出内核和电脑的操作系统相关信息
uname -a
输出服务器的所有详细信息
五个重要热键
上下按键 (很重要!)
它的作用是可以按照顺序一个个翻找我们之前写的指令
ctrl + d
它的作用是退出当前命令行
我们只需要按一次ctrl + d就能退出当前用户的登录
ctrl + c
它的作用是终止程序
因为有些情况我们可能会面对失控程序
这个时候我们就需要用 ctrl + c来强制停止它
tab
它的作用是自动补齐
当我们只记得指令的前面几个字母的时候我们可以使用tab指令
它可以帮助我们自动补齐
如果前面几个字母不能唯一确定指令的话 那么按两次 tab 它就会展示所有的命令
ctrl + R
它的作用是搜索以前的指令
当我们之前写出了一段很长的指令 但是现在我们不想打出来的时候 我们可以使用它来找出当时的指令
关机指令
用来关机
值得注意的是 我们的云服务器一般不关机!
所以说大家不必试验这个指令
它的指令是shutdown
如果我们不加任何选项 则它会默认在一分钟后关机
它的常用选项如下
- shutdown -h 立即关机
- shutdown -c 取消关机
- shutdown -t xx 经过xx秒之后关机
- shutdown -r 重新启动