本文主要介绍Linux基础指令的常规用法
文章目录
前言
相对于
linux
操作系统,其实window
也是操作系统,我们这节课说的是Linux
的基本指令
那么在window
上有没有基本指令呢,答案是有的,我们可以使用windows+r
进入cmd
就可以用我们的基本指令
ls指令
语法:ls [选项] [目录或命令]
功能:
1:对于目录,列出该目录下的所有子目录与文件;
2:对于文件,列出文件名以及其他信息;
默认浏览当前目录下所有文件信息,每当打开一个终端,都会处于一个目录(当前用户的家目录)
常用选项 | 作用 |
---|---|
-a | 列出目录下的所有文件,包括以 . 开头的隐含文件。 |
-d | 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录 |
-i | 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件 |
-k | 以 k 字节的形式表示文件的大小。ls –alk 指定文件 |
-l | 列出文件的详细信息。 |
-n | 用数字的 UID,GID 代替名称。 (介绍 UID, GID) |
-F | 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“ |
-r | 对目录反向排序。 |
-t | 以时间排序。 |
-s | 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件) |
-R | 列出所有子目录下的文件。(递归) |
-1 | 一行只输出一个文件。 |
例如:ls -l -a 显示更多的隐藏文件
文件=文件的内容+属性
pwd命令
语法:pwd
功能:显示用户当前所在的目录(绝对路径)
区分:
绝对路径:以根目录作为起始路径的一种路径表达方式,一个文件路径不会随着当前所在目录不同而改变
相对路径:相对于当前位置一个文件所处的路径一种以当前路径作为起始路径的路径表达方式
cd指令
我们发现在每一次创建完文件都会有这一个点,两个点的东西是什么呢。
dr-xr-x---. 6 root root 4096 Nov 11 10:46 .
dr-xr-xr-x. 18 root root 4096 Nov 3 17:20 ..
.
表示当前路径
..
表示上级路径
cd的作用
改变工作目录,进入指定目录
cd 进入当前路径(注意有空格的,大家注意一下下面也是)可以随便进入。
cd . . 退到当前上一个路径
cd 的快捷键
cd ..
: 返回上级目录
cd /home/lihua/linux/
: 绝对路径
cd ../day02/
: 相对路径
cd ~
:进入用户家目录
cd -
:返回最近访问目录
热键tab(很常用)
进入目录时,如果不知道目录中有那些内容,可以按tab键,一下不行按两下,如果没有,说明路径写错了
如果你找a开头的文件,但是忘了名字是啥可以按tab键,会将所有a开头的文件写出来
在我看来就相当于是查找功能,查看改目录下有那些东西,和看看以a或其他开头的东西。
tree命令
功能:以树状结构显示当前目录下的内容
touch指令
其实
touch
命令十分简单,其用法如下
touch+filename(文件名)
,然后就再当前路径下创建一个普通的文本文件
touch
也可以在指定路径,在该路径下创建一个文件。具体操作就是touch
后加路径然后在加文件名
例如:touch ../test.c
,意思就是在上级目录下创建了一个test.c
文件
如果要创建的文件存在,touch的功能就是将文件是的三个时间修改到最新的。
nano指令
相当于打开记事本,写一些我们写的简单的代码。
nano test.c
就默认打开这个文本文件,如果该路径下有就是打开该路径下的文本文件,如果没有就相当于自己创建一个这个文本文件然后就可以编写代码了。
我们如果想上面的tree
命令没有安装,我们就使用下面这个命令安装,即装即用yum install -y nano
,就可以使用记事本了
cat指令
功能:打印文件的内容
1:
cat+文件名字
打印文件内容
2:
cat -n +文件内容
打印的同时并加上行号
3:cat+-s作用
不输出多行空行。
表示将多余的空行都删除,只留下一个空行。
gcc指令
使用
gcc
编译器对我们写的代码文件进行编译,编译完成后自动会生成可执行程序a.out
使用./a.out
即可显示编译下的结果
.
表示当前路径,/
表示路径分割符。表示执行当前路径下的可执行程序。
stat指令
stat + 文件名
功能:stat命令显示文件或目录的详细属性信息包括文件系统状态,
任何一个文件,都会有三种时间ACM
Access:文件被访问的时间;
Modify:文件被修改的时间;
Change:文件的i节点(属性信息)最后一次被修改的时间。注意:文件被修改时i节点的信息也会被修改。
mkdir指令(重要)
mkdir + 目录名
功能:在当前路径下创建一个目录
mkdir - p +目录名
功能:在当前路径下递归创建创建一串目录
rmdir指令 &&rm指令(重要)
rm *.c
删除以.为后缀的文件
rmdir
功能
只能删除空目录----(没事们用)
怎么删除不是空目录的东西呢?
rm
命令 可以删除普通文件,但是不能删除目录,
那么我们怎么删除目录呢,我们可以用 rm -r
,表示递归删除,我们就可以删除目录了
还有一个选项 rm -rf
,f
表示强制的意思,当我们有东西不能删除,我们没有权限删除,我们就可以用这个强制让他删除。
注意
在我们的使用当中,我们要注意使用,在linux中没有回收站,所以删的时候一定要注意。慎重使用。
man指令
作用:访问Linux手册页的命令。在我们的Linux中,命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。
怎么用呢:man(选项)+命令,就可以查找该命令的手册。
我们在 man后通常能发现数字,那么那是什么呢?
这我们就需要弄明白 man手册是什么?
我们就可以用 man man,用 man指令查找 man手册。请看下图
我们能发现在 man手册中,还有9个手册,我们在 man后的数字就是他的第几个手册。
🐕例子:请看下图
我们有时候也能看到man后没有数字,其实也是可以的,就是默认从第一条手册开始,查看有没有这个指令。然后再从后面的手册依次查找。
解释一下men各个手册分别表示什么?
1:是普通的命令
2:是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3:是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
4:是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
5:是给游戏留的,由各个游戏自己定义
6:是附件还有一些变量,比如向environ这种全局变量在这里就有说明
7:是系统管理用的命令,这些命令只能由root使用,如ifconfig
cp指令
功能:复制文件或目录
语法:cp+拷贝的文件+拷贝到那个地方(中间都有空格的)
对于
cp
命令来说,只能拷贝普通文件,不能拷贝目录,如果想拷贝目录就需要用到下面的命令
cp -r
就是进行递归处理,就可以将目录也拷贝了。
但是有的时候我们没有权限做拷贝的东西,我们就可以强迫让他实行,就用cp -rf
,我们就可以随便拷贝,但是我们拷贝必须按照规则,最好不要在根目录下进行拷贝。
mv指令
功能1:就是相当于我们计算机中的剪切功能。
语法:mv+src+dir
就是将src
剪切到dir
里面去
功能2:重命名
语法:mv + 旧名字+ 新名字
echo指令
echo功能:
将我们从键盘写入的东西显示到键盘上。请看下面的例子
输出重定向:将echo输入的字符串写入指定文件中,如果文件不存在就自动在当前目录下创建
先看个例子echo "aaaa bbb ccc" >log.txt
,我们在我们的目录中没有log.txt
文件,会自动创建,并且将本来应该显示到显示器上的文本,写入到文件中。
我们就可以用cat
显示log.txt
的文本内容
注意:输出重定向的一下操作以及注意事项
我们重定向是一种覆盖式写入,在准备写入之前,会将文件的内容清空,然后再写入,所以不管我们 echo几回,我们输出的都是最后一回,覆盖的东西。请看下图
追加重定向:
那么怎样在 输出重定向的时候可以一直写,将所有写的东西都记录下来呢?
我们将这种方式叫做 追加重定向,不断的向目标文件新增内容。
方法就是将一个 >变为两个 >>,其他的东西都保持一样,这样就可以保持追加重定向。
输入重定向:
就是将 >变为 <,我们就变为了输入重定向
虽然他们的效果好像看似都一样,但是他们的本质确实完全不同的一个是通过命令行的形式将他打印,而 另一个就是通过输入重定向来打印的。
说明
我们在 echo打印字符串,默认显示到显示器上的,但是如果我们加上 >符号我们就将字符串放到了文件里,也就是我们常说的输出重定向。
其实我们可以这样理解,默认显示到显示器上,其实可以理解上向显示器写入,我们可以把显示器当作一种文件,而从键盘中写入信息,我们也可以将键盘当作一种文件
more指令(不常用)
语法:more [选项][文件]
功能:功能类似cat,可以分页显示文件内容
常用选项:
回车 :向下按行滚动
空格 :向下翻页
q :退出显示
less指令
less
的功能:less 与 more
类似,less
可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。并且也支持查找。
查找的方法就是在下面输入/+内容
less 的语法是 :less +[参数] +文件名
head指令
功能:就是将文本的前10行打印出来,没有10行,有几行打印几行。
如果想要打印指定行数
head -n + 数字
tail 命令
功能:基本跟
head
命令一样。就是将文本的后10行打印出来,没有10行,有几行打印几行。功能就是怎么简单。
如果想要打印指定行数
head -n + 数字
wc命令
wc -l + 文件名
显示文件的行数
命令行管道"|"(重要)
管道符:连接两个命令,将前面命令的输出结果交给后面命令进行处理(管道符可以进行连用)
所谓管道,就是也有入口也有出口。
但是在我们的计算机中最重要的资源就是数据
计算机的管道,就是连接两条指令,传送数据的指令。
例子cat mylog.txt | wc -l
表示显示mylog.txt
文件的行数。
其实我们可以把这个管道就是一个文件。
如果一个文件有200行的内容,我们要提取100~120的内容,并且不许创建临时文件我们该怎么做呢?
这时就需要我们的管道,先看操作在解释
cat mylog.txt | head -120 | tail -20
。
首先用 cat先将文件的内容打印出来,然后我们在用 head提取前120行的内容,最后再用 tail提取后20行的内容。
此时,管道就可以集连数据的多条指令,进行数据的加工,处理。
时间相关的指令
data指令
date
指令:可以显示我们当前的时间
date
用法:date+ [OPTION]… [+FORMAT]
用
date
可以显示我们当前的时间
如果想看具体的年或其他时间按,就加上具体的选项,我们的选项很多比如
时间戳(非常重要)
时间转换为时间戳: date +%s
时间戳转换为时间: date -d@+时间戳
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。他是自增的。能够和我们现在使用的时间进行转换。
cal指令
cal
命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”
常用选项
-3
显示系统前一个月,当前月,下一个月的月历
-j
显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示前月在一年中的天数)
-y
显示当前年份的日历
find指令(重要)
Linux下find命令在目录结构中搜索文件,并执行指定的操作;其中find命令提供了很多的查找条件,功能非常强大
语法:find pathname-options
功能:用于在文件树中查找文件,并作出相应的处理(可以访问磁盘)
–name 按照文件名查找文件
– depth 指定目录深度,深入按多少层目录进行查找
–[amc]min/ - [amc]time 按照时间属性查找文件
–size 按照文件大小查找文件
-name 进行查找时可以与通配符“ * ”进行使用
在命令中使用单引号和双引号的区别:
单引号:去除了特殊含义,就表示当前的字符
双引号:特殊的字符仍然具有特殊的含义
练习题:
批量删除当前目录下后缀名为.c的文件。如a.c、b.c。
A.rm * .c
B.find . -name " * .c" -maxdepth 1 | xargs rm
C.find . -name " * .c" | xargs rm
D.以上都不正确
其中: find . -name " * .c" -maxdepth 1 找到当前目录下.*结尾的文件,目录深度为1, xargs是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令,用于很多不支持|管道来传递参数的命令 C选项中 find . -name " * .c" | xargs rm 会将子目录下的文件也会删除
which指令
功能:搜索我们使用的指令,并显示他的路径
用法:whilch+指令
whereis指令
功能:搜索我们使用的归档文件,并显示他的路径
用法:whilch+文件名
alias指令
功能:就是起别名,之后就可以用别名了
用法:alias +别名+ ‘原本的指令’
grep指令
功能: 行文本过滤工具,能够将文本中你要搜索的东西都过滤出来
用法:grep +'搜索的东西'+文件名
怎么将过滤的东西进行排序
grep+ -n + '搜索的东西'
+文件名
反向过滤
将匹配到的不显示,显示没有匹配到的东西。
使用 grep -v
grep -i忽略大小写。
注:
在grep选项中,对字符串进行搜索匹配时,常有下面几个组合:
-E 可用来扩展选项为正则表达式
$ 表示匹配文件末尾,字符在$之前表示以字符结尾,如:a $表示以a结尾
^ 表示匹配文件起始,在^之后表示以字符起始,如: ^ a 表示以a 起始
练习题:
在Linux系统中, 为找到文件try_grep含有以a字母为行开头的内容, 可以使用命令?
A.grep -E #$ try_grep
B.grep -E #a try_grep
C.grep -E ^$ try_grep
D.grep -E ^a try_grep
top指令
就是相当于我们windows的任务管理器。
zip/unzip指令
注意:压缩后的格式为zip
zip
功能:将文件进行打包
zip
用法:zip+打包后的文件名+要打包的文件或目录
但是注意的点就是:这个打包只是将文件的目录进行打包,并不能将文件的内容进行打包,
如果想要将文件的内容进行打包需要加上下面这个选项。
zip -r+打包后的文件名+要打包的文件或目录
unzip
功能:将打包的文件进行解包到指定的路径
unzip
:unzip+要解包的文件名
怎么文件进行解包到指定的路径?
加上一个-d+指定的路径
。就可以了
tar命令
压缩后的格式为.tgz
功能:既可以压缩,又可以解包,但是要看选项
选型 | 作用 |
---|---|
-c | 建立一个压缩文件的参数指令(create 的意思); |
-x | 解开一个压缩文件的参数指令! |
-t | 查看 tarfile 里面的文件! |
-z | 是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩? |
-j | 是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩? |
-v | 压缩的过程中显示文件!这个常用,但不建议用在背景执行过程! |
-f | 使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数! |
-C | 解压到指定目录 |
一般使用
tar -czf
打包并压缩
tar -xzf
解压
tar -xzf -C
指定路径 将文件解压到指定路径
bc
bc命令可以很方便的进行浮点运算
uname指令
功能:
uname
用来获取电脑和操作系统的相关信息。
uname
可显示linux
主机所用的操作系统的版本、硬件的名称等基本信息
常用选项:
-a
或–all
详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
su指令
在Linux系统中,su和su-是两种不同的切换用户的命令。
- su命令是切换到其他用户的身份,但不改变当前用户所在的工作目录和环境变量等信息;
- 而su-命令则是完全切换到目标用户的身份,包括工作目录和环境变量等信息都会改变。
其他的热键以及指令
Ctrl-c 让当前的程序停止
Ctrl-d 通常代表键盘输入结束的意思,另外也可以用来代替exit
[Ctrl]-r 在历史命令中搜索
关机
shutdown[选项]常见选项
-h 将系统的服务停掉后立即关机
-r 再将系统的服务停掉之后就重新启动
-t sec : -t 后加秒数是过几秒后关机的意思
在grep选项中,对字符串进行搜索匹配时,常有下面几个组合:
-E 可用来扩展选项为正则表达式
$ 表示匹配文件末尾,字符在$之前表示以字符结尾,如:a $表示以a结尾
^ 表示匹配文件起始,在^之后表示以字符起始,如: ^ a 表示以a 起始
练习题:
在Linux系统中, 为找到文件try_grep含有以a字母为行开头的内容, 可以使用命令?
A.grep -E #$ try_grep
B.grep -E #a try_grep
C.grep -E ^$ try_grep
D.grep -E ^a try_grep
以上只是一些基础的指令后序我们还会学到更多的指令!!!!