文章目录
目标:学会Linux中常见的基础指令,对于不常用的指令,会给出使用的格式和功能。
Linux历史基本概念
相比于一些操作系统,Linux
的出生时间较晚,但是其发展速度却非常之快,很大的一个原因就是Linux
之父将Linux
进行了开源。所谓开源就是开放源代码。成千上万的程序员都可以使用这个操作系统。从前操作系统是几千个人在发现和修改问题。开源以后全球的程序员一起发现问题,这样使得很多问题被暴露出来,也正是因为这些问题得以被暴露出来,Linux
才得到了很快的发展。所以我们说,开源会使得程序更加安全。
在了解了一些基础概念以后,我们正式开始进行Linux
的学习。
第一步:创建和删除用户
创建用户
在Linux
中,和windows
一样,用户也具有不同的等级。现如今我们只需要知道root
用户和普通用户。
root
用户就如同windows
下的超级管理员,其有着很高的权限。可以执行很多的功能。
但是这也会带来坏处,使用的不好就很容易使得操作系统挂掉。所以我们建议大家学习并使用普通用户。
格式:adduser 用户名字
创建一个用户以后我们需要为其设置密码(也可以不设置)。
ps::创建用户必须是在root
用户下!
格式:passwd 用户名
ps::在输入密码的时候是不显示的,并且如果密码过于简单系统会提示是否使用,继续重新输入一次密码就好了。大家设置完密码可以保存到一个记事本里,避免后面忘记密码,并且将密码设置的复杂一点。
successfully
说明创建成功了!
删除用户
ps::同样得在root
用户下。
格式:userdel 用户名
ls
(
1
)
(1)
(1)ls
格式:ls 文件名(默认是当前路径)
功能:以列表的形式显示当前路径下的文件和目录。
(
2
)
(2)
(2)ls-l
格式:ls-l 文件名(默认是当前路径)
功能:以列表的形式显示当前路径下的文件和目录的属性
在理解了这个概念以后,我们也需要知道Linux
中经常用的ll
其实就是ls-l
的别名。
(
3
)
(3)
(3)ls-a
格式:ls-a 文件名(默认是当前路径)
功能:显示隐藏文件
在Linux
中,.
开头的文件是隐藏文件。
可以对比一下ll
和ll-a
的不同之处
ll
ll-a
(多出来的文件即是隐藏文件)
这里我们提前介绍下.
和..
,在linux
中,..
表示上级路径,.
表示当前路径,在任何路径下都会存在.
和..
两个隐藏文件。
剩余的命令,我们就不一一演示了,以表格的形式呈现给大家,大家在需要的时候查表就好。
后缀 | 功能 |
---|---|
-a | 列出目录下的所有文件,包括以 . 开头的隐含文件。 |
-d | 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录 |
-k | 以 k 字节的形式表示文件的大小。ls –alk 指定文件 |
-l | 列出文件的详细信息。 |
-n | 用数字的 UID,GID 代替名称。 (介绍 UID, GID) |
-F | 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“ |
-r | 对目录反向排序。 |
-t | 以时间排序。 |
-s | 在文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件) |
-R | 列出所有子目录下的文件。(递归) |
-1 | 一行只输出一个文件。 |
who am i
格式:who am i
功能:显示当前使用的用户
pwd
格式:pwd
功能:显示当前所处路径
nano
功能:Linux上自带的文本编辑器
格式:nano 文件名
如果大家的Linux
没有安装nano
,可以输入yum -y install nano
进行安装。
接下来我们看看nano
如何使用。
(
1
)
(1)
(1)创建文件
(
2
)
(2)
(2)输入内容。
ctrl+x
退出,系统会问你是否选择保存,y
保存,n
不保存,再按回车就可以退出了。
(
3
)
(3)
(3)运行内容
我们可以运行写入的代码:
C++
的编译器需要选择g++
而c
语言则是gcc
。
在运行完这串指令以后,代码会生成一个.exe
结尾的可执行程序a.out
,执行这个可执行程序就可以运行代码了。
Linux的存储结构
在windows
中,我们的磁盘分为D盘
,C盘
,每个磁盘下又分为众多的目录和文件,通常一个目录下又有目录。
这种结构类似我们数据结构中学的多叉树。
在Linux
下也是如此:
/
称作根目录。同时又是路径分隔符。
which和alias
格式:which 指令
功能:查看指令的存储路径
在Linux
中我们需要逐步加深一个概念,Linux
的指令其实都是一个个文件,ls
命令就是存储在/usr/bin
下的一个文件。
这里有一句指令 alias ls='ls --color=auto'
在英语中,alias
的意思是别名,alias
的作用就是取别名,我们平常使用的ls
其实是ls --color=auto
。
当然我们也可以对指令进行取别名。
ps::我们自己取的别名只在本次登录有效。
格式:alias 别名='指令名'
当前路径和上级路径
在Linux
中,
一个.
表示当前路径。
两个.
表示上级路径。
这里我们也就能理解为什么执行a.out
的时候需要输入./a.out
。
.
是告诉编译器a.out
属于当前路径下。/
是路径分隔符
stat
格式:stat 文件名
功能:查看文件的时间
p4
文件具有三个时间,分别是Access
(创建时间),Modify
(修改时间),Change
(修改时间)。对于这三个时间大家有个了解就好,后面的博客我们会再提到。
绝对路径和相对路径
(
1
)
(1)
(1)绝对路径
定义:必须是从根目录开始的一条路径。
如:我们要到pass
,只有一条路/home/pass
(
2
)
(2)
(2)相对路径
定义:相对当前路径下的一条路径。
例如我当前所处的位置是/home/pass
,这时我想跳转到bin
目录,这时我就可以使用相对路径:cd ../../bin
。
这里需要理解清楚:相对路径是相对我当前位置的一种延申,如果我想到home
目录,我不能直接cd home
,因为Linux
不知道这个home
究竟是哪个路径下的home
。
cd
(
1
)
(1)
(1)cd
格式:cd 路径(绝对路径or相对路径)
功能:跳转到指定的路径下
同时cd
可以搭配上之前学的..
,cd··
就是跳转到上级
(
2
)
(2)
(2) cd -
-
:-
在Linux
中根据路径实时更新,-
记录着上次从哪一个路径来到用户当前的路径。
我们通过路径进行分析:
进入目录p8
,继续跳转到目录p9
,这时-
记录的就是p8
的路径
接着cd-
跳转到p8
,再跳转p9
,又跳传到p8
,这时是从p9
跳到p8
,-
记录的就是p9
的路径
(
2
)
(2)
(2) cd ~
~
记录的是当前用户的路径(不是当前路径,而是用户存储的路径。)
普通用户一定是在home/
这个目录下的。
而root
的~
记录存储的一定是/root
在Linux
的学习中,我们需要建立起一个概念,文件=内容+属性
,我们在定位一个文件的时候,需要回答两个问题,我在哪里?和我是谁。我在哪里说明了我所处的路径,我是谁说明了我的名称。
cat和tac
一:cat
(
1
)
(1)
(1)功能一
格式:cat
功能:显示键盘输入的内容
(
2
)
(2)
(2)功能二
格式:cat 文件名
功能:显示文件的内容
(
3
)
(3)
(3)功能三
格式:cat -n 文件名
功能:显示文件的内容的时候自动带上行号
二:tac
格式:tac 文件名
功能:逆序显示文件的内容
tac
其实就是cat
的逆序,两者名字相反。
touch
(
1
)
(1)
(1)功能一
格式:touch 文件名
功能:创建普通文件
(
2
)
(2)
(2)功能二
格式:touch 文件名
功能:更新文件的创建,修改时间
文件p4
的创建时间是21.30
,再次touch
以后,时间变成了21.31
。
ps::touch
同一个文件,文件里的内容会被删除吗?
答案:不会。
后缀 | 功能 |
---|---|
-a 或–time=atime或–time=access或–time=use | 不改动modify时间。 |
-c 或–no-create | 不建立任何文档。 |
-d | 使用指定的日期时间,而非现在的时间。 |
-f | 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。 |
-m 或–time=mtime或–time=modify | 不改变access时间。 |
-r | 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。 |
-t | 使用指定的日期时间,而非现在的时间。 |
mkdir
(
1
)
(1)
(1)功能一
格式:mkdir 目录名
功能:创建一个空目录
(
2
)
(2)
(2)功能二
mkdir -p 目录一/目录二/目录三
递归创建连续的目录
touch 和mkdir总结
touch
用来创建的是文件
mkdir
创建的是目录,并且如果想要创建连续的目录需要带-p
两者的功能不同,需要注意区分。
rm
(
1
)
(1)
(1)rm
格式:rm 文件名
功能:删除普通文件
(
2
)
(2)
(2)rm -f
格式:rm -f 文件名
功能:强制删除普通文件,取消系统提醒
(
3
)
(3)
(3)rm -r
格式:rm -r 目录名
功能:递归删除目录
r
是递归的意思
ps:匹配-f
使用更爽!
mv(剪切命令)
(
1
)
(1)
(1)功能一
格式:mv 文件 目录源路径 目的地路径
功能:将文件/目录剪切到目的地路径
(
2
)
(2)
(2)功能二
格式:文件名一 新文件名
功能:对文件进行重命名
cp
一:拷贝普通文件
(
1
)
(1)
(1)cp 文件名1 文件名2
格式: cp 文件名1 文件名2
功能:将文件1的内容拷贝到当前路径下的文件2中,如果文件2不存在,则会默认创建一个文件,并且目标文件的内容会被清空
(
2
)
(2)
(2)cp 文件名 路径
格式:cp 拷贝的文件名 拷贝到的路径
功能:将文件拷贝到指定的路径
(
3
)
(3)
(3)cp 文件名1 路径/文件名2
格式:cp 文件名1 路径/文件名2
功能:将文件1拷贝到指定路径并且更名为文件名2
二:拷贝目录
(
3
)
(3)
(3)cp 目录名1 -rf 目录名2
格式:cp 目录名1 目录名2
功能:将目录1的内容拷贝到目录2,如果目录2不存在则会被创建,拷贝目录不会清空目标目录的内容。
man
格式:man 指令
功能:man 是Linux中的男人,用不会的指令都可以询问这个男人。
man 有 9
个手册,默认查询的是1
号手册。
如果想查询其他的手册:如查询3
号手册:man 3 printf
输入q
就能退出man
指令。
more
格式:more 文件名
功能:显示文件的内容,如果文件的内容超出屏幕范围,默认显示当前屏幕的内容
more
指令可以与cat
进行对比,cat
是显示文件所有的内容,more
是显示一部分内容。
按回车键可以继续查看下面的内容。
注意:more
不支持方向键上下翻阅,只能回车键继续向下看。
输入q
就能退出more
more还具有查找功能
格式:/ 要查找的内容
ps::这个是在more
模式下进行使用。
more
会出查找的的位置开始进行显示。
less
格式:less 文件名
功能:显示查看文件的内容,和more一样,只会显示一个屏幕。
ps::less
比more
更加灵活,less
支持上下键翻阅。
按q
退出less
模式
同样的,less
具有查找功能
格式:/查找的内容
less
会从查找到的位置进行显示。
head
(
1
)
(1)
(1)head
格式:head 文件名
功能:查看文件的前10行
(
2
)
(2)
(2)head -数字
格式:head - 数字 文件名
功能:指定查看文件的前n行
tail
(
1
)
(1)
(1)tail
格式:tail 文件名
功能:显示文件内容末尾的10行
(
2
)
(2)
(2)tail -数字
格式:tail -数字 文件名
功能:指定显示文件末尾的前n行
cat,more,less,head,tail总结
cat
:cat
独具有自带行号的功能 命令:cat -n
文件名
more
和less
:less
相对比more
更加灵活,可以支持上下翻阅。支持指定行数显示。并且还具有查找功能。
head和tail
:head
和tail
用于头尾的查询。同时支持指定行数显示。
echo
(
1
)
(1)
(1)echo
格式:echo
功能:向显示器输出一个空行
(
2
)
(2)
(2)echo " "
格式:echo "内容"
功能:将字符串的内容输出到显示器上
(
3
)
(3)
(3)echo
格式:echo
功能:查阅历史的指令记录,支持键盘上下翻阅
输出重定向
概念:本来应该显示到显示器上的内容,重定向写入到目标文件中。
符号:>
输出重定向的用法非常灵活,可以搭配很多命令一起使用,如echo
解释:
echo指令是将字符串里的内容显示到显示器上,通过输出重定向将其输出到文件中,本质就是写入。
又分为两种情况:
(
1
)
(1)
(1)目标文件不存在
则会创建该文件。
(
2
)
(2)
(2)目标文件存在
文件的原内容会被清空。
追加重定向
概念:本来应该显示到显示器上的内容,重定向续写入到目标文件中。
符号:>>
追加重定向的用法和输出重定向的用法基本一致,只不过追加重定向是在目标文件内容的基础上进行续写,不会清空目标文件。
还是两种情况:
(
1
)
(1)
(1)目标文件不存在
则会创建该文件。
(
2
)
(2)
(2)目标文件存在
在原内容的基础上进行续写。
输入重定向
概念:将文件里的内容重定向输入到显示器上。
符号:<
管道
在学习管道之前,我们先看这样一种应用场景:
假设现在tst
文件中有1-50
这样的50
个数字,现在我想要查看中间的20-30
,该如何查看呢?
(
1
)
(1)
(1)方法一:创建临时文件配合输出重定向
第一步:将前30
行的数据写入到临时文件tmp
中。
第二步:使用tail
获得末尾的10
行数据。
第一种方法虽然可以实现这种功能,但是还是需要用到临时文件作为中介,如果不能创建临时文件,又该如何解决?
(
2
)
(2)
(2)管道
首先我们对比下物理世界层的管道和计算机层的管道。
物理世界层:管道是一种运输媒介,可以用来运输资源。
计算机层:管道在计算机的世界中依旧也是一种媒介,只不过用来运输数据。
在前面的学习中,我们知道指令在很多时候都是取文件中的数据进行相应的操作。我们能否用管道这种媒介将处理以后的数据进行传输给其他命令呢?
这也就是管道的作用。
下面的指令就是通过管道解决:
我们通过画图再次理解管道:
对于管道:我们也可以将其看作是流水线,只不过流水线上运输的是数据
。
时间相关的指令
格式:date +%s
功能:显示当前的格林尼治世界
ps::关于这里的%
,可以将其看作是c语言中的printf
。
格式:date+%Y%m%d
功能:以现代时间显示当前的年月日
格式:date+%Y%m%d%H%M%S
功能:以现代时间显示当前的年月日 时分秒
总结:时间的这几个命令可以随意组合,Y
其实是year
的首写字母。m
是month
的首写字母,剩余几个也是如此,书写代码的时候别忘了大小写。
cal
格式:cal
功能:显示当前月份的日历信息
格式:cal +年份
功能:显示指定年份的日历信息
格式:cal -3
功能:显示当前月,上一个月,下一个月的日历信息
格式:cal -3 年份
功能:显示指定年份下对应当前月,上一个月,下一个月的日历信息
find
格式:find -name 文件名
功能:查找文件的存储路径
grep
grep是一种行过滤工具。
(
1
)
(1)
(1)grep
格式:grep '关键字' 文件名
功能:将文字中带有关键字的内容显示出来
(
2
)
(2)
(2)grep -v
格式:grep -v '关键字' 文件名
功能:将文件中不带有关键字的内容显示出来
grep 还具有两个后缀:
-i :自动忽略大小写
-n 自动显示行号
-r 进行递归的搜索
bc
bc
是Linux
上的计算器,Linux
可以根据键盘输入的内容进行计算,并显示结果。
ctrl+c
可以退出计算器模式
bc
可以搭配管道进行使用。
zip(压缩)
(
1
)
(1)
(1)zip
格式:zip 压缩以后文件的名字 被压缩文件的名字
功能:对文件进行压缩
(
2
)
(2)
(2)zip -r
格式:zip -r 压缩以后目录的名字 被压缩目录的名字
功能:对目录进行压缩
ps::如果不带-r
那么压缩过来的只是一个空壳,所以需要-r
进行递归压缩
unzip(解压)
(
1
)
(1)
(1)unzip
格式:unzip 压缩文件/目录名
功能:将压缩文件/目录解压到当前路径
(
2
)
(2)
(2)unzip -d
格式 unzip 压缩文件名/目录名 -d 压缩的路径
功能:将压缩文件/目录解压到指定的路径
tar
格式 tar -czf 压缩以后的文件/目录名 压缩文件/目录名
功能:压缩文件/目录
ps::
-c 创建一个压缩文件/目录
-z 采用特定的压缩算法
-f 指定压缩以后文件/目录的名字
格式 tar -xzf 压缩文件名/目录名
功能:对文件/目录进行解压
ps::
-x 进行解压
打包和压缩的区别
打包和压缩的共同点:
打包和压缩都是将物品分门别类的存储到容器里
打包和压缩的不同点:
打包只是简单的将物品放在一个有限空间里。打包不关注空间,只关注打包本身,也就是将物品装起来。
压缩是在合理使用空间的情况下,将物品放在一个有限空间里,压缩追求的是空间的利用率。
这里我们可以举例说明:
在现实生活中,在我们去上大学的时候,都得带上一个行李箱,如果我们自己来装行李箱,就会发现很多东西都装不下,但是如果我们的父母来装行李箱,则可以装下更多的物品,因为他们知道怎么样装物品能更合的使用空间。
这里我装行李箱就类似打包。
父母帮我装行李箱就类似压缩。
因此压缩算法和好坏也决定了压缩的效率。
uname
(
1
)
(1)
(1)uname
格式:uname
功能:显示Linux的信息
(
2
)
(2)
(2)uname -a
格式:uname -a
功能:显示Linux的详细信息
Linux中的热键
(
1
)
(1)
(1)ctrl +r
功能:根据输入的内容查找相近的历史指令
(
2
)
(2)
(2)tab
ps::tab在使用的时候需要按两下。
功能:指令自动补全功能
(
3
)
(3)
(3)ctrl +c
功能:退出异常进行的程序,具有退出,终止程序的功能
file
格式:file 文件名
功能:显示文件的具体信息
history
格式:history
功能:显示指令的历史记录