目录
一、操作系统的介绍
在学习Linux之前,我们先来了解一下什么是操作系统。
操作系统是一款做软硬件管理的软件。
如上图,我们可以把硬件理解为底层的程序员,设备驱动则是项目经理,他负责让硬件去执行任务,而操作系统我们可以理解为老板,他负责管理设备驱动,老板是为用户服务的,因此可以把应用软件理解为用户,在操作系统上,我们需要有各种不同的应用软件,来满足用户的不同的应用场景。
一个好的操作系统,应该具备以下指标:稳定、快速、安全。
操作系统的核心工作:通过对下管理好软硬件资源的手段,达到对上提供良好的(稳定、快速、安全)的操作/使用环境。
我们所有的软件行为,全部都要自顶向下贯穿计算机的软硬件结构,几乎所有的软件行为,未来都和操作系统直接或间接相关。
二、Linux下常见指令
XShell中:Alt+Enter可自动全屏或取消全屏。ctrl+d退出
在我们使用的操作系统中,往往有图形化界面,也有命令行操作,其本质是一样的,只是指令操作更贴近操作系统。
2.1 ls指令
功能:对于当前目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
- -a 列出目录下的所有文件,包括以 . 开头的隐藏文件。
- -l 列出文件的详细信息(属性)
- -t 以时间顺序排序
- -d 将目录像文件一样显示,而不是显示其下的文件
- -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。
- ls *可匹配任意名称的文件,如ls *.c 则是显示以.c结尾的文件,ls test.* 则是显示以test开头的文件
注:文件=文件内容+文件属性,指令所带的选项均是给文件属性传参的。选项可叠加,如ls -a -l
= ls -al = ls -la
如图,我们创建了一个.开头的隐藏文件,使用ls -al显示出了所有文件,其中 .. 表示当前文件的上级路径,.表示当前路径(帮助用户定位当前目录下的一个文件,如./a.out)
2.2 pwd指令
功能:显示用户当前所在的目录。
2.3 mkdir指令
功能:在当前目录中创建目录(文件夹)
蓝字即为目录。
选项:mkdir –p test/test1 : 递归建立多个目 录
2.4 cd指令
功能:进入目录
选项:
- cd .. : 返回上级目录
- cd /home/litao/linux/ : 绝对路径
- cd ../day02/ : 相对路径
- cd ~:进入用户家目
- cd -:返回最近访问目录
2.5 绝对路径和相对路径
1.绝对路径往往比较长,但是不变,一般在一些固定场景,配置文件中使用
2.一般命令行输入,比较常用相对路径
2.6 touch指令
功能:建立文本文件
2.7 rm与rmdir指令
功能:rmdir只能删除空目录,rm可以同时删除文件或者目录
选项:
- -f 即使文件属性为只读(即写保护),亦直接删除(force)
- -i 删除前逐一询问确认
- -r 删除目录及其下所有文件(递归)
建议 rm -rf XXX(rm XXX -rf兼容性不强)
2.8 man指令
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是 man 语法: man [选项]命令
选项:
- -k 根据关键字搜索联机帮助
- num 只在第num章节找
- -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕
我们也可以使用man man来查看手册:
解释一下,面手册分为8章
- 是普通的命令
-
是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件),
-
主要是C语言,库函数,如printf、fread
2.9 echo指令
功能:将指令后的字符串显示在屏幕上(echo+ " 字符串内容 ")
若echo "..." > XXX.txt,则会将字符串写入到XXX文本文件中
> 我们叫做输出重定向,其在向目标文件写入时,是覆盖写入,即先清空文件,再写入新内容
如果不想清空,想续写,则使用 >> (追加重定向)
2.10 cp指令
功能:复制文件或目录
语法:cp src dest
选项:
- -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
- -i 或 --interactive 覆盖文件之前先询问用户
- -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
- -R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理
说明:cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
2.11 mv指令
功能:1.重命名(第二个参数类型是文件时)
2.剪切 (第二个参数类型的不同(是目标文件还是目标目录))
如:mv XXX.txt ../AAA.txt 则表示将XXX文件移到上级目录并重命名为AAA
注:
ctrl + C可使指令恢复正常 ,进入下次输入
2.12 which指令
指令和可执行程序都是可以被执行的,指令其实就是可执行程序(文件),指令一定是在系统中的某一个位置存在的,一般在 usr/bin 中存在
功能:查看指令的位置,并显示出其别名
2.13 alias指令
功能:起别名
如: alias XXX = ' ls -l -i-a -n ' ,则使用XXX就是在使用 ls -l -i-a -n
alais XXX= ' ' 则恢复
2.14 cat指令
功能:查看目标文件的内容
选项:
- -b 对非空输出行编号
- -n 对输出的所有行编号
- -s 不输出多行空行(仅一行)
- < 输入重定向,本来应该从键盘文件读取,现在不用从键盘读取,从指定的文件中读取
注:cat 只适合看小文本文件,对于大文本文件时不方便的,如有1w行数据,查看时翻页都很不方便,因此下面我们来介绍下查看大文本文件的指令
2.15 more指令
功能:类似cat,不过是显示出前n行数据,然后按回车逐行往下翻,可以在查看中使用 /+数字,表示查看第n数字行的数据
选项:
- -n 对输出的所有行编号
- q 退出more
2.16 less指令
功能:相比于more更强大,可以上下翻,也可以在查看中使用 /+数字,表示查看第n数字行的数据
2.17 head指令
功能: head -n 显示文件开头前n行
2.18 tail指令
功能: tail-n 显示文件末尾后n行
学习了tail和head指令后,我们就可以联合运用了。
如要在1w行的文本文件中,怎么取1000-1020行的数据呢?
第一种方法:先 head -1020 XXX.txt >temp.txt 中,再 tail -21 temp.txt 则取出
但是这种方法相当于把一个结果喂到一个新文件中,再从新文件中拿出数据,这个文件在磁盘中是消耗空间的,如果不想建文件,那么我们需要了解一个新概念:管道。
第二种方法: head -1020 XXX.txt | tail -21
上面指令中的 | 符号就称为管道,也称管道文件 ,它的作用是将其左侧的输出交给管道文件,让右侧的数据通过管道文件读到自己的程序中。
2.19 时间相关的指令
2.19.1 date显示
- date指定格式显示时间: date+%Y;%m;%d; , 分隔符可自定
- 常用的标记列表:
这里可以看到+%s显示出了很长的数字,这便是时间戳,Unix时间戳其实是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
当然我们也可以用 -d @+时间戳来显示次时间戳所对应的时间:
2.20 cal指令
功能:用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
格式:cal 【参数】【年份】【月份】
2.21 find指令
功能:用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项: -name 按照文件名查找文件
一般来说,找文件用find,找指令用which
2.22 grep指令
功能:在文件中搜索字符串,将找到的行打印出来
语法:grep【选项】搜索字符串文件
常用选项:
- -i :忽略大小写的不同,所有大小写视为相同 (ignore)
- -n :顺便输出行号
- -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
2.23 zip/unzip指令
功能:将目录或文件压缩成zip格式
语法:zip 压缩文件名称.zip 目录或文件
unzip xxx.zip -d 要解压到的目录
常用选项:-r 递 归处理,将指定目录下的所有文件和子目录一并处理
2.24 tar指令
功能:打包/解包,不打开它,直接看内容
参数:
- -c :建立一个压缩文件的参数指令(create 的意思);
(d1与log.txt为需要打包的文件,code.tgz为打包后的文件名)
- -x :解开一个压缩文件的参数指令!
- -t :查看 tarfifile 里面的文件!
总结:
2.25 bc指令
功能:计算器
可利用管道输出