- Linux历史基本概念
- 创建用户
- 删除用户
- ls
- who am i
- pwd
- nano
- Linux的存储结构
- which和alias
- 当前路径和上级路径
- stat
- 绝对路径和相对路径
- cd
- cat和tac
- touch
- mkdir
- touch 和mkdir总结
- rm
- mv(剪切命令)
- cp
- man
- more
- less
- head
- tail
- cat,more,less,head,tail总结
- echo
- 输出重定向
- 追加重定向
- 输入重定向
- 管道
- 时间相关的指令
- cal
- find
- grep
- bc
- zip(压缩)
- unzip(解压)
- tar
- 打包和压缩的区别
- uname
- Linux中的热键
- file
- history
目标:学会Linux中常见的基础指令,对于不常用的指令,会给出使用的格式和功能。 Linux历史基本概念
相比于一些操作系统,Linux的出生时间较晚,但是其发展速度却非常之快,很大的一个原因就是Linux之父将Linux进行了开源。所谓开源就是开放源代码。成千上万的程序员都可以使用这个操作系统。从前操作系统是几千个人在发现和修改问题。开源以后全球的程序员一起发现问题,这样使得很多问题被暴露出来,也正是因为这些问题得以被暴露出来,Linux才得到了很快的发展。所以我们说,开源会使得程序更加安全。
在了解了一些基础概念以后,我们正式开始进行Linux的学习。
第一步:创建和删除用户
在Linux中,和windows一样,用户也具有不同的等级。现如今我们只需要知道root用户和普通用户。
root用户就如同window下的超级管理员,其有着很高的权限。可以执行很多的功能。
但是这也会带来坏处,使用的不好就很容易使得操作系统挂掉。所以我们建议大家学习并使用普通用户。
格式:adduser 用户名字
创建一个用户以后我们需要为其设置密码(也可以不设置)。
ps::创建用户必须是在root用户下!
格式:passwd 用户名
ps::在输入密码的时候是不显示的,并且如果密码过于简单系统会提示是否使用,继续重新输入一次密码就好了。大家设置完密码可以保存到一个记事本里,避免后面忘记密码,并且将密码设置的复杂一点。
successfully说明创建成功了!
删除用户ps::同样得在root用户下。
格式:userdel 用户名
(
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(多出来的文件即是隐藏文件)
剩余的命令,我们就不一一演示了,以表格的形式呈现给大家,大家在需要的时候查表就好。
| 后缀 | 功能 |
|---|---|
| -a | 列出目录下的所有文件,包括以 . 开头的隐含文件。 |
| -d | 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录 |
| -k | 以 k 字节的形式表示文件的大小。ls –alk 指定文件 |
| -l | 列出文件的详细信息。 |
| -n | 用数字的 UID,GID 代替名称。 (介绍 UID, GID) |
| -F | 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“ |
| -r | 对目录反向排序。 |
| -t | 以时间排序。 |
| -s | 在文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件) |
| -R | 列出所有子目录下的文件。(递归) |
| -1 | 一行只输出一个文件。 |
格式:who am i
功能:显示当前使用的用户
格式:pwd
功能:显示当前所处路径
功能: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,执行这个可执行程序就可以运行代码了。
在window中,我们的磁盘分为D盘,C盘,每个磁盘下又分为众多的目录和文件,通常一个目录下又有目录。
这种结构类似我们数据结构中学的多叉树。
在Linux下也是如此:
/称作根目录。同时又是路径分隔符。
格式: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 文件名
功能:查看文件的时间
p4文件具有三个时间,分别是Access(创建时间),Modify(修改时间),Change(修改时间)。对于这三个时间大家有个了解就好,后面的博客我们会再提到。
(
1
)
(1)
(1)绝对路径
定义:必须是从根目录开始的一条路径。
如:我们要到pass,只有一条路/home/pass
(
2
)
(2)
(2)相对路径
定义:相对某个路径下的一条路径,可以是任意路径下。
相对路径可以有很多条,重点是相对。
如:我们要到pass,相对路径就可以从dev/../home/pass,也可以home/pass…
总结:
相对路径是就是找一个参考点,然后从这个参考点出发前往目的地。
绝对路径就是只能从家里出发。
(
1
)
(1)
(1)cd
格式:cd 路径(绝对路径or相对路径)
功能:跳转到指定的路径下
同时cd可以搭配上之前学的..,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
(
1
)
(1)
(1)功能一
格式:cat
功能:显示键盘输入的内容
(
2
)
(2)
(2)功能二
格式:cat 文件名
功能:显示文件的内容
(
3
)
(3)
(3)功能三
格式:cat -n 文件名
功能:显示文件的内容的时候自动带上行号
二:tac
格式:tac 文件名
功能:逆序显示文件的内容
tac其实就是cat的逆序,两者名字相反。
(
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 | 使用指定的日期时间,而非现在的时间。 |
(
1
)
(1)
(1)功能一
格式:mkdir 目录名
功能:创建一个空目录
(
2
)
(2)
(2)功能二
mkdir -p 目录一/目录二/目录三
递归创建连续的目录
touch用来创建的是文件
mkdir创建的是目录,并且如果想要创建连续的目录需要带-p
两者的功能不同,需要注意区分。
(
1
)
(1)
(1)rm
格式:rm 文件名
功能:删除普通文件
(
2
)
(2)
(2)rm -f
格式:rm -f 文件名
功能:强制删除普通文件,取消系统提醒
(
3
)
(3)
(3)rm -r
格式:rm -r 目录名
功能:递归删除目录
r是递归的意思
ps:匹配-f使用更爽!
(
1
)
(1)
(1)功能一
格式:mv 源路径 目的地路径
功能:将文件/目录剪切到目的地路径
(
2
)
(2)
(2)功能二
格式:文件名一 新文件名
功能:对文件进行重命名
一:拷贝普通文件
(
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 是Linux中的男人,用不会的指令都可以询问这个男人。
man 有 9个手册,默认查询的是1号手册。
如果想查询其他的手册:如查询3号手册:man 3 printf
输入q就能退出man指令。
格式:more 文件名
功能:显示文件的内容,如果文件的内容超出屏幕范围,默认显示当前屏幕的内容
more指令可以与cat进行对比,cat是显示文件所有的内容,more是显示一部分内容。
按回车键可以继续查看下面的内容。
注意:more不支持方向键上下翻阅,只能回车键继续向下看。
输入q就能退出more
more还具有查找功能
格式:/ 要查找的内容
ps::这个是在more模式下进行使用。
more会出查找的的位置开始进行显示。
格式:less 文件名
功能:显示查看文件的内容,和more一样,只会显示一个屏幕。
ps::less比more更加灵活,less支持上下键翻阅。
按q退出less模式
同样的,less具有查找功能
格式:/查找的内容
less会从查找到的位置进行显示。
(
1
)
(1)
(1)head
格式:head 文件名
功能:查看文件的前10行
(
2
)
(2)
(2)head -数字
格式:head - 数字 文件名
功能:指定查看文件的前n行
(
1
)
(1)
(1)tail
格式:tail 文件名
功能:显示文件内容末尾的10行
(
2
)
(2)
(2)tail -数字
格式:tail -数字 文件名
功能:指定显示文件末尾的前n行
cat:cat独具有自带行号的功能 命令:cat -n文件名
more和less:less相对比more更加灵活,可以支持上下翻阅。支持指定行数显示。并且还具有查找功能。
head和tail:head和tail用于头尾的查询。同时支持指定行数显示。
(
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 -3
功能:显示当前月,上一个月,下一个月的日历信息
格式:cal -3 年份
功能:显示指定年份下对应当前月,上一个月,下一个月的日历信息
格式:find -name 文件名
功能:查找文件的存储路径
grep是一种行过滤工具。
(
1
)
(1)
(1)grep
格式:grep '关键字' 文件名
功能:将文字中带有关键字的内容显示出来
(
2
)
(2)
(2)grep -v
格式:grep -v '关键字' 文件名
功能:将文件中不带有关键字的内容显示出来
grep 还具有两个后缀:
-i :自动忽略大小写
-n 自动显示行号
bc是Linux上的计算器,Linux可以根据键盘输入的内容进行计算,并显示结果。
ctrl+c可以退出计算器模式
bc可以搭配管道进行使用。
(
1
)
(1)
(1)zip
格式:zip 压缩以后文件的名字 被压缩文件的名字
功能:对文件进行压缩
(
2
)
(2)
(2)zip -r
格式:zip -r 压缩以后目录的名字 被压缩目录的名字
功能:对目录进行压缩
ps::如果不带-r那么压缩过来的只是一个空壳,所以需要-r进行递归压缩
(
1
)
(1)
(1)unzip
格式:unzip 压缩文件/目录名
功能:将压缩文件/目录解压到当前路径
(
2
)
(2)
(2)unzip -d
格式 unzip 压缩文件名/目录名 -d 压缩的路径
功能:将压缩文件/目录解压到指定的路径
格式 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的详细信息
(
1
)
(1)
(1)ctrl +r
功能:根据输入的内容查找相近的历史指令
(
2
)
(2)
(2)tab
ps::tab在使用的时候需要按两下。
功能:指令自动补全功能
(
3
)
(3)
(3)ctrl +c
功能:退出异常进行的程序,具有退出,终止程序的功能
格式:file 文件名
功能:显示文件的具体信息
格式:history
功能:显示指令的历史记录



