目录
推荐
前言
1、重新认识操作系统
1.1 操作系统是什么?
1.2操作系统的作用
1.3 我们在计算机上的所有操作
1.4 Linux操作的特点
2、Linux基本指令
2.1 ls 指令
2.2 pwd 命令
2.3 cd 指令
2.3.1 Linux中的目录结构
2.3.2 绝对路径和相对路径
2.3.3 cd 指令
2.4 touch 指令
2.5 mkdir 指令
2.6 rmdir 指令
2.7 rm 指令
2.8 man 指令
2.9 cp 指令
2.10 mv 指令
2.11 echo 指令
2.12 cat 指令
2.13重定向
2.14 more 指令
2.15 less 指令
2.16 head 指令
2.17 tail 指令
2.18 时间相关的指令
2.19 cal 指令
2.20 find 指令
2.21 grep 指令
2.22 zip/unzip 指令
2.23 tar 指令
三、几个重要的热键
四、shell命令以及运行原理
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站
在介绍Linux基本指令之前,我们需要对操作系统这一概念作进一步的认识,这样才能更好的帮助我们去理解指令操作。
操作系统是一款做软硬件管理的软件。
- 应用软件:Word、Matlab…
- 操作系统:Windows、Linux…
- 设备驱动:声卡驱动、网卡驱动…
- 硬件:cpu、内存、硬盘、显示器、键盘
我们在计算机上的所有行为都会转化成为硬件行为。我们的所有软件行为,全部需要自顶向下贯穿计算机的软硬件结构。也就是说,几乎我们的所有软件行为,未来都和操作系统有直接或间接的关系。
大部分的Linux操作系统都采用纯命令行的方式进行操作,也有图形化界面,但是一般不用,无论图形还是指令,本质都是一样的,指令操作更贴近操作系统。
Linux下一切皆文件,这意味着我们的所有指令操作都是针对文件进行的。这里我们需要对文件做进一步的认识。首先Linux中的文件分为两种:目录(相当于Windows中的一个文件夹)和普通文件,文件 = 文件内容 + 文件属性(文件的属性也是数据,也需要存储),这就决定了文件操作 = 对文件内容的操作 or 对文件属性的操作。
语法: ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
- ls:不加选项,只显示文件名
- ls -l:列出文件的详细信息。
- ls -a:列出目录下的所有文件,包括以 . 开头的隐含文件。
- 在Linux中以
.
开头的文件是隐藏文件。Linux任何一个目录下面都一定有两个隐藏文件.
和..
。其中..
表示当前路径的上级路径。.
表示当前路径。- ls -d:将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
- ls -i:输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
- ls -k:以 k 字节的形式表示文件的大小。ls –alk 指定文件
- ls -n:用数字的 UID,GID 代替名称。 (介绍 UID, GID)
- ls -F:在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
- ls -r:对目录反向排序。
- ls -t:以时间排序。
- ls -s:在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
- ls -R:列出所有子目录下的文件。(递归)
- ls -1:一行只输出一个文件。
语法:pwd
功能:显示用户当前所在的目录
- Linux环境下的目录
- Window环境下的目录
Linux中一个目录里面可以再放目录和文件,因此Linux的整个目录结构是一个多叉树的样子,访问文件的本质就是找到文件,就是在多叉树中进行节点的查找。
Linux目录结构的特点
- 叶子节点一定是空目录或者普通文件
- 非叶子节点节点一定是一个非空目录
我们要找一个文件,通常使用路径来进行定位,因为路径定位具有唯一性。因为任何一个节点可能有多个子节点,但是一个节点最多只能有一个父节点,所以从上往下路径可能有多种,但是从叶子节点往回推,路径是唯一的。
语法:cd 目录名
功能:改变工作目录,将当前工作目录改变到指定的目录下
- cd .. :返回上级目录
- cd /root/111/112:绝对路径
- cd ../11:相对路径
- cd ~:进入用户家目
- cd -:返回最近访问目录
语法:touch [选项] 文件
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项:
- touch -a 或 --time=atime 或 --time=access或 --time=use 只更改存取时间。
- touch -c 或 --no-create 不建立任何文档。
- touch -d 使用指定的日期时间,而非现在的时间。
- touch -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
- touch -m 或 --time=mtime 或 --time=modify 只更改变动时间。
- touch -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
- touch -t 使用指定的日期时间,而非现在的时间。
语法:mkdir [选项] dirname
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
- mkdir -p 路径:此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。例如:
rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。
语法:rmdir [选项][dirname]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录,不是空目录无法删除,不建议使用
语法:rm [选项][dirname/dir]
适用对象:所有使用者
功能:删除文件或目录(rm命令可以同时删除文件或目录)
常用选项:
- rm -f:即使文件属性为只读(即写保护),亦直接删除
- rm -i:删除前逐一询问确认
- rm -r:删除目录及其下所有文件
注意:是否带 -r 取决于删除的对象是否是目录;是否带 -f 取决于删除是否要问。
语法:man [选项] 命令
功能:访问Linux手册页的命令
常用选项:
- man- k:根据关键字搜索联机帮助
- man num:只在第num章节找
- man -a:将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按 下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
手册分为8章:
- 是普通的命令
- 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
- 是库函数,如printf,fread
- 是特殊文件,也就是/dev下的各种设备文件
- 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
- 是给游戏留的,由各个游戏自己定义
- 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
- 是系统管理用的命令,这些命令只能由root使用,如ifconfig
语法:cp [选项] 源文件或目录 目标文件或目录
功能:复制文件或目录
说明:cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项:
- cp -f 或 --force:强行复制文件或目录, 不论目的文件或目录是否已经存在
- cp -i 或 --interactive:覆盖文件之前先询问用户
- cp -r:递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链 接,则一律视为普通文件处理
- cp -R 或 --recursive:递归处理,将指定目录下的文件及子目录一并处理
示例:
- cp test.txt .. :将 test.txt 拷贝到上级目录,拷贝得到的名字是 test.txt。
- cp test.txt ../mytest.txt:将 test.txt 拷贝到上级目录,拷贝得到的名字是 mytest.txt。
拷贝时,名字是可以改变的。
mv 命令是 move 的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
- 视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
- 当第二个参数类型是文件时,mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv 命令将各参数指定的源文件均移至目标目录中。
常用选项:
- mv -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
- mv -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
语法:echo 字符串
功能:将字符串打印到屏幕上
语法:cat [选项][文件]
功能:查看目标文件的内容
常用选项:
- cat -b 对非空输出行编号
- cat -n 对输出的所有行编号
- cat -s 不输出多行空行(只输出一行)
将 cat 倒着写成 tac 可以将数据倒着打印出来
Linux下一切皆文件,显示器、键盘、网卡、普通文件……这些东西本质上都是文件。
echo指令默认把后面跟的字符串写入显示器文件中;cat指令后面如果没有跟任何文件,则默认从键盘文件中读取数据,然后写入到显示器文件中。我们加入重定向符号,就可以实现echo后面的字符串写入其他文件,让cat从其他文件中读取数据。
重定向符号:
- 输出重定向 >:以覆盖的方式将数据输出到指定的文件或设备上(可以用来清空一个目标文件,也可以新建一个文件)
- 追加重定向 >>:在原始内容上不断新增内容到指定的文件或设备上
- 输入重定向 <:将原本需要从键盘输入的数据,改为从文件中输入数据
示例:
- echo "hellow Linux" > test.txt,将数据写入 test.txt 文件,如果文件不存在,先创建文件,再写入
- cat < test.txt,从 texs.txt 文件中读取数据
语法:more [选项][文件]
功能:查看目标文件的内容,打印占满一屏后不再打印,按回车可下翻
常用选项:
局限性:只能下翻,不能上翻。
语法: less [选项] [文件]
功能: less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前 不会加载整个文件。
常用选项:
- -i 忽略搜索时的大小写
- -N 显示每行的行号
- /字符串:向下搜索“字符串”的功能
- ?字符串:向上搜索“字符串”的功能
- n:重复前一个搜索(与 / 或 ? 有关)
- N:反向重复前一个搜索(与 / 或 ? 有关)
- q:quit
语法:head [参数][文件]
功能:head用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行
常用选项:head -n <行数>:显示n行
语法:tail[必要参数][选择参数][文件]
功能:用于显示指定文件末尾的内容,不指定文件时,作为输入信息进行处理,常用查看日志文件
常用选项:
- tail -n<行数>:显示的行数
- tail -f:循环读取
date显示
1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
- %H : 小时(00..23)
- %M : 分钟(00..59)
- %S : 秒(00..61)
- %X : 相当于 %H:%M:%S
- %d : 日 (01..31)
- %m : 月份 (01..12)
- %Y : 完整年份 (0000..9999)
- %F : 相当于 %Y-%m-%d
2.在设定时间方面
- date -s 设置当前时间,只有root权限才能设置,其他只能查看。
- date -s 20080523 设置成20080523,这样会把具体时间设置成空00:00:00
- date -s 01:01:01 设置具体时间,不会对日期做更改
- date -s “01:01:01 2008-05-23″ 这样可以设置全部时间
- date -s “01:01:01 20080523″ 这样可以设置全部时间
- date -s “2008-05-23 01:01:01″ 这样可以设置全部时间
- date -s “20080523 01:01:01″ 这样可以设置全部时间
3.时间戳
Unix时间戳是从1970年1月1日开始所经过的秒数,不考虑闰秒。
- 时间->时间戳:date +%s
- 时间戳->时间:`date -d@<时间戳>
Cal指令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列日,统称阳历。
命令格式:cal [参数][月份][年份]
功能:用于查看日历等时间信息,如只有一个参数,则表示年份,如有两个参数,则表示月份和年份
常用选项:
- cal -3:显示系统前一个月,当前月,下一个月的月历
- cal -j:显示在当前年中的第几天(一年日期按天算,从1月1日算起,默认显示当前月在一年中的天数)
- cal -y:显示当前年份的日历
示例:
语法:find pathname(路径) -options
功能:用于在文件树中查找,并作出相应的处理(可能访问磁盘)
常用选项:
- find -name:按照文件名查找文件。
示例:
- find 路径 -name test.c:查找家目录下所有文件名时test.c的文件。
注意:要区分find、which、whereis。其中which是查看一条指令所对应的路径;whereis是在系统特定的路径下进行查找,既可以找到可执行程序,又可以找到手册、安装包、压缩包、C语言头文件、动态库等等。
语法:grep [选项] 搜寻字符串 文件(可以跟多个)
功能:在文件中搜索字符串,将找到的行打印出来(行文本过滤工具)
常用选项:
- grep -i:忽略大小写的不同,所以大小写视为相同
- grep -n:顺便输出行号
- grep -v:反向选择,即显示不包含搜寻字符串的那一行
能被打包压缩的一定是一个整体,由多个文件变成一个文件,不容易造成文件的缺失,打包压缩会让体积变小,下载时间变短,存储占据空间变小。
语法:zip 压缩文件.zip 目录或文件
功能:将目录或文件压缩成zip格式
常用选项:
- -r:递归处理,将指定目录下的所有文件和子目录一并处理
- -d:将压缩包解压到指定目录下。
示例:
- zip -r test.zip test2:将test2目录进行压缩。
- unzip test2.zip:把压缩包test2解压。
- zip -r d1.zip d1 log.txt:把d1目录和log.txt普通文件,一同打包压缩,得到一个d1.zip的压缩包。
- unzip d1.zip -d test:把d1.zip这个压缩包解压到test目录下。
语法:tar [选项] 文件与目录(可多个)
常用选项:
- -c:建立一个压缩文件的参数指令(creat的意思)
- -x:解开一个压缩文件的参数指令
- -t:查看tarfile里面的文件
- -z:是否同时具有gzip的属性?即是否需要用gzip压缩
- -j:是否同时具有 bzip2 的属性?即是否需要用 bzip2 压缩?
- -v:压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
- -f:使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
- -C:解压到指定目录
示例:
- tar -czf test.tgz d1 log.txt:把d1目录和log.txt文件压缩得到一个test.tgz的压缩包。
- tar -tzf test.tgz:不解压,直接查看test.tgz压缩包里面的内容。
- tar -xzf test.tgz:把test.tgz进行解压。
- tar -xzf test.tgz -C ../:把test.tgz解压到上级目录。
- test.tgz的全称是:test.tar.gz。其中tar表示打包后缀,gz表示压缩后缀。
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。
我们输入的所有指令,最终都要在OS内(也叫操作系统或者核心)运行,但是OS使用的难度比较高。我们用户不能直接和OS打交道。此时我们(用户)就需要图形化界面或命令行解释器来帮我们与操作系统打交道。
命令行解释器存在的意义就是:
在Linux环境下命令行解释器通常也被叫做命令行、shell(总称)、bash和sh是不同种类的具体的解释器。在Windows环境下命令行解释器被叫做图形化界面。
本次的内容到这里就结束啦。希望大家阅读完可以有所收获,同时也感谢各位读者三连支持。文章有问题可以在评论区留言,博主一定认真认真修改,以后写出更好的文章。你们的支持就是博主最大的动力。