目标:学会Linux中常见的基础指令,对于不常用的指令,会给出使用的格式和功能。
Linux历史基本概念
相比于一些操作系统,Linux 的出生时间较晚,但是其发展速度却非常之快,很大的一个原因就是Linux 之父将Linux 进行了开源。所谓开源就是开放源代码。成千上万的程序员都可以使用这个操作系统。从前操作系统是几千个人在发现和修改问题。开源以后全球的程序员一起发现问题,这样使得很多问题被暴露出来,也正是因为这些问题得以被暴露出来,Linux 才得到了很快的发展。所以我们说,开源会使得程序更加安全。
在了解了一些基础概念以后,我们正式开始进行Linux 的学习。 第一步:创建和删除用户
创建用户
在Linux 中,和windows 一样,用户也具有不同的等级。现如今我们只需要知道root 用户和普通用户。 root 用户就如同window 下的超级管理员,其有着很高的权限。可以执行很多的功能。 但是这也会带来坏处,使用的不好就很容易使得操作系统挂掉。所以我们建议大家学习并使用普通用户。 格式: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 (多出来的文件即是隐藏文件) 剩余的命令,我们就不一一演示了,以表格的形式呈现给大家,大家在需要的时候查表就好。
后缀 | 功能 |
---|
-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的存储结构
在window 中,我们的磁盘分为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)相对路径 定义:相对某个路径下的一条路径,可以是任意路径下。 相对路径可以有很多条,重点是相对。 如:我们要到pass ,相对路径就可以从dev/../home/pass ,也可以home/pass … 总结: 相对路径是就是找一个参考点,然后从这个参考点出发前往目的地。 绝对路径就是只能从家里出发。
cd
??
(
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和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 自动显示行号
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 功能:显示指令的历史记录
|