Linux基本指令(2)

目录

一.常见指令的一些选项

1.cd指令

1.1cd - 跳转到我们最近一次所处的路径下

1.2cd~ 进入用户的家目录

2.touch指令

 3.mkdir指令

3.1mkdir -p

4.rmdir指令

4.1rm

4.2rm -r

5.mv指令

6.man指令

7.cp指令

7.1cp -rf 

8.cat指令

9.echo指令

10.more指令

11.less指令

 12.head指令

13.tail指令

14.时间相关的指令 

15.cal指令

16.find命令

17.grep指令 

17.1grep -n 

18.打包和压缩指令

 18.1zip和unzip指令

18.2tar指令

19.bc命令

20.uname指令

 21.重要的几个热键

21.1ctrl+c                                       终止一个当前异常的程序

21.2table(有时需要按两下)        自动补齐和档案齐全功能

21.3ctrl+d                                       代表键盘输入结束,可用来取代exit

21.4ctrl+r                                        在历史命令当中进行搜索

22.关机指令

二.重新认识指令

三.Linux中常见写代码的工具

1.nano(记事本)

2.vim(这一篇不讲)

四.Linux设计理念:一切皆文件

五.Shell命令以及运行原理


一.常见指令的一些选项

1.cd指令

1.1cd - 跳转到我们最近一次所处的路径下

1.2cd~ 进入用户的家目录

        这里我是root用户,所以我的家目录是/root,根目录下的root目录,可以使用whoami指令查看当前使用的是哪个用户。

         Windows也有用户的家目录,Windows也可以新建用户。(所以Windows和Linux这样的操作系统叫做多用户操作系统)

        Windows桌面的本质是一个文件夹,当你登录Windows时,操作系统会确认你是哪个用户;再根据用户名,找到改该用户目录下的“桌面文件夹 “;最后将桌面文件夹显示成为图形化界面。而Linux下用户也有自己的家目录,对于root用户来讲,默认的家目录是/root,root账号就是超级管理员账号;对于普通用户,默认家目录是/home/xxx,xxx就是新建的用户名。(任何一个用户,首次登录,所处的路径都是自己的家目录)

2.touch指令

        先来认识一些文件的属性,我们先touch一个111.txt文件,然后看到ls -l中的111.txt的文件属性一行有Jun 7 12:34,这个时间叫做文件的创建时间或者最近修改时间,要是想看指定文件的更多属性可以使用stat指令eg:

        先看到下面的Access、Modify、Change,这就是一个文件的ACM时间。其中Access时间是最近一次被访问的时间,当我们读取该文件内容后,Acces时间就会被更新;Modify时间是文件内容的最近一次的改变时间; Change时间是文件的状态或者属性等的信息的最近一次改变的时间。

 3.mkdir指令

        创建一个空目录,eg:

3.1mkdir -p

         可以使用tree命令打印一个目录的树状结构(Linux的整个文件目录是一颗多叉树),eg:

        出现这个是因为系统执行一个命令的时候,一定要先找到这个命令!可以先安装这个指令tree,假设我们现在用的是root账号(普通用户暂时搞不了),指令就是yum -y install tree

        当出现Complete时,就可以使用(这就是在copy可执行程序到系统路径下),也可以使用which tree看是否能找到指令,接着tree a试试

        补充:当指令出现失控的情况(显示屏疯狂打印)时,可按Control+c终止命令,eg:

4.rmdir指令

        rmdir是与mkdir相对应的一个命令。mkdir是建立目录,rmdir是删除目录。

        =》rmdir只能删除空目录。并且连a.out,test.txt也不能删

4.1rm

        如果当前是root账号,则使用rm删除文件,会弹出是否要删除xxx文件,输入y表示删除,n表示不删除。如果不想出现提示,可以rm -f xxx,这里的f是force强迫的意思。

4.2rm -r

        r是递归的意思,目录是一个树状结构,不像一个普通的文件,可以直接rm删除。

        提示说:rm指令不能删除目录

        递归式强制删除目录(目录为不为空都需要这样删除)rm -rf xxx。        

        关于rm -rf /就是删除根目录,类似于windows操作系统中,将C盘格式化。也要小心出现rm -rf / home/lj,同样也会误删根目录。这个时候操作系统还能跑一会,因为操作系统是加载在内存中的,删除根目录会把一些磁盘文件删除,但是过不了一会就崩溃了。但是这不是最无语的,最无语的是删了一些不至于让电脑一下崩溃的东西,而是删了一些在特定情况下会崩溃的东西,在云服务器上删除根目录,大不了可以重新装系统。

5.mv指令

        mv命令是move的缩写,可以用来移动文件(类似于windows中的剪切功能),或者将文件改名,是Linux系统下常见的命令,经常用来备份文件或目录。

        一旦有不确定的文件或者目录,宁可备份,不可删除。

        补充一个通配符*, eg:

        data*1就是以data开头,以1结尾的文件。这个*就是中间是任意内容。

        ls *就是展示当前目录的全部内容

        注意这个rm -f *别在根目录下删,不然g。

        给文件(或目录)改名 mv xxx xxx即可,eg:

        mv的剪切功能(目录和文件均可),将目录中的文件或者目录“剪切”到指定路径下,eg:

6.man指令

        Linux的命令有很多参数,我们不可能完全记住,我们可以通过查看联机手册获取帮助。语法是man [选项] 命令。eg:

        按上下切换(回车也可以向下翻),按q退出查询。甚至可以man man。 

        man是一本手册,共九本,默认查询第一本(可执行程序,也就是指令),1号手册是指令查询,2号手册是系统调用查询,3号手册是C库函数的查询,eg:

当出现No manual entry for printf in section 3时,需要把man手册安装完,指令是yum -y install man-pages 

        如果直接man printf则会在1号手册中找到printf,它是个指令。

        man xxx的搜索规则是从1号手册开始搜索,然后一直搜索到9号手册,若在某一本手册中找到了,则停止搜索。man 3 xxx则是在3号手册中搜索xxx。 

7.cp指令

        复制文件或目录,用法是:cp src dst,如果dst是个目录,则直接拷贝到这个目录下,若dst是个带路径的文件名,则拷贝到指定路径,顺便进行重命名。eg:

7.1cp -rf 

        拷贝目录需要递归式拷贝,因为目录是递归定义的。cp -rf ... 

         cp test.c test.c是不可以的,因为在Linux目录中,不允许出现同名文件(目录也不行)!

 src和dst都可以携带绝对或相对路径并进行拷贝。

8.cat指令

        cat xxx可以把xxx按文本打开。eg:

        cat -n xxx可以显示行号,eg:

         cat -s xxx不输出多行空行,eg:

        tac倒序输出

         cat code.c本质是显示文件内容,ls是打印文件属性。

        cat默认是向键盘读取内容,读取到的内容会打印到显示器上。eg:

        cat < file是从file文件读取内容,读取到的内容输出到显示器上。<是输入重定向。本来应该从键盘读取的,现在是从file中读取,这就是重定向。cat file和cat < file的原理不一样。读取文件内容用cat file就行。 

        cat对于小文件(内容比较小的文件,用cat比较方便),但对于大文件我另有他选。

9.echo指令

        补充一个知识——输出重定向 >

         输出重定向>有两个作用:1.创建文件,2.本来应该显示到显示器上的数据,显示到文件中,所以后续创建文件可以echo > filename或者> filename,甚至是>filename,echo>filename也可以。

         Linux设计理念:一切皆文件,这里先提普通文件vs显示器,后续在讲IO流的时候会细一点讲。对任何文件来讲,都有读和写操作,显示器设备——显示器文件——向显示器打印=向显示器文件进行写入。echo "Hello Linux"就是向显示器写入字符串Hello Linux,然后>输出重定向到filename这个文件中,就是本应该打印到显示器上的,>后就打印到了filename文件中。应该向显示器打印的结果打印到了filename中,这个操作就叫做重定向,>是输出字符串,所以整个操作叫做输出重定向。

         对于输出重定向,它会先清空文件内容(文件存在),再写入(有写入的内容),清空文件内容可直接>filename。

        echo "Hello Linux">>filename不会清除原先文件内容,会在文件末尾添加,这个叫做追加重定向。类似于C语言的fopen以"w"(只写)方式打开,和"a"(追加)方式打开。

        >和上述C语言的文件打开再关闭的效果是一样的,都是先清空文件(文件存在,不存在就自动新建)。 

10.more指令

        先来造一个大文件,用了一下shell脚本,eg:

        用cat查看大文件,有一个不好的地方就是会刷屏。此时用more指令会方便阅读,eg:

        占满一屏后,就不在刷屏了。回车可以逐行进行下翻,方便我们对内容进行逐行阅读。按q可以直接退出。/999可以在内容中搜索关键字999,然后找到,下面是输入了/765。

11.less指令

        less比more的操作要便捷一些,它可以按上下键进行逐行阅读,而more只能按回车向下逐行阅读。

        这边是查找关键字102,它还会高亮显示。more和less可以用来查日志信息,方便排插。cat /var/log/messages。 

 12.head指令

        head也是用来查文件内容的,默认是前十行,eg:

13.tail指令

        tail是默认查文件内容的后十行,可以带选项-x就是结尾的后x行,eg:

         那如果要取5000行-5008行呢?可以新建一个临时文件,先取头5008行到tmp.txt中,再取tmp.txt的尾8行就行,eg:

        但是要临时文件太麻烦了,不要临时文件的做法是使用管道 |

         管道是用来集联命令的,command1 | command2,是将命令1的输出作为命令2的输入,命令1拿到了big.txt文件的前5008行数据,然后| command2会再取这前5008行数据的后8条,最后输出结果。管道是有入口和出口的,用来传输资源的,(计算机领域指的是数据)。

        wc指令可以用来统计文本的行数,eg:

        | 管道可以用来级联多条命令。

14.时间相关的指令 

        格式控制的年月日秒时分不要加空格。 

        时间是计算机非常重要的一个概念,计算机的日志类似于日记。

        这个很大的数字是时间戳,1970年1月1号0时0分0秒(格林威治时间0时区)开始计时,每一秒+1。

        上述指令可以将时间戳转化为日期时间,当时间戳为0的时候,显示的是1970-01-01_08:00:00是因为我们在东八区,云服务器帮我们转化了。

15.cal指令

        cal指令可以用来显示公历(阳历),eg:

         cal -3 可以查看前一个月和后一个月日历信息。

        cal 2003 可以查看2003年的日历。

16.find命令

        find是真正在系统的树形结构中进行文件查找的!

        find 你要查找的路径 -opt(name) filename。

17.grep指令 

        grep是一个行文本过滤工具。

17.1grep -n 

        grep -n选项是附带关键字在原文本的行号,eg:

        grep -v选项就是不包含关键字的查找,eg:

        grep -i选项是忽略大小写的匹配,eg:

18.打包和压缩指令

 18.1zip和unzip指令

        作用:1.缩小体积,占资源比较小,占磁盘空间比较小,下载快。2.不会轻易的丢失文件,在centos中,下载这些指令的指令是:yum install -y unzip zip

        使用zip压缩目录,eg:

        

        好像这样打包是只把目录打包了,里面的文件并没有打包,所以这样打包是错误的。要打包目录这种树形结构,所以我们需要递归式打包 -> zip -r 111zip 111

        下面是解压缩unzip的使用。

        unzip xxx.zip -d /path(相对路径或者绝对路径)。

        zip还可以打包压缩散的文件和目录,eg:

         如果只需要打包几个文件或目录,可以zip -r xxx.zip filename1 filename2 ...

18.2tar指令

        还有一种常见的tar命令打包压缩命令,不打开它就可以直接看内容

        多带一个-v选项打包压缩后,会将打包信息打印出来 。

        解压的选项如下:

        如果需要解压到指定路径下需要带选项 -C。tar -xvzf test.tgz -C /path。

        为什么需要打包压缩——便于网络传输,因为文件一个一个去传很容易丢失(大量文件时)。 下面举一个在云服务器上把文件下载到Windows机器上的例子:

        跑不了的话,记得下载:yum -y install lrzsz(centos)。

         sz可以从Windows机器上传文件到我的云服务器上(我安装的系统的centos)。

         这就是基于xshell进行压缩包的win和Linux进行互传---压缩包,当然可以进行Linux机器之间的互传,使用scp dir.tgz 你想以什么身份来登录(例如:root)@主机ip(另一台机器):/path(另一台机器的存放文件路径)。

19.bc命令

        bc命令可以很方便的进行浮点运算(yum -y install bc),Linux下的计算器eg:

        quit或者ctrl+c退出。

20.uname指令

        用来获取电脑和操作系统的相关信息,uname可以用来显示linux主机所用的操作系统的版本、硬件的名称等基本信息。

        3.10.0-1160.92.1是操作系统的内核版本,el7是centos7,x86是32位机器(intel公司推出的架构) ,x86_64(x64)是64位机器,因为兼容性,64位机器上的能跑32位机器上的软件,但反过来不行。

        操作系统的版本查看,cat /etc/redhat-release。

        cat /proc/cpuinfo,可查看当前云服务器上的cpu信息。

         cat /proc/meminfo,可查看当前云服务器上的内存信息。

 21.重要的几个热键

21.1ctrl+c                                       终止一个当前异常的程序
21.2table(有时需要按两下)        自动补齐和档案齐全功能
21.3ctrl+d                                       代表键盘输入结束,可用来取代exit
21.4ctrl+r                                        在历史命令当中进行搜索

22.关机指令

        shotdown        -h就是立即关机,-r是将系统的服务停掉之后就重新启动,-t sec过几秒关机。这里的关机指的是将云服务器关机,关闭xshell不是关停了云服务器,一般云服务器不关机。

二.重新认识指令

        1.指令本身就是程序——指令、程序、可执行程序(Windows上的可执行程序后缀就是.exe),在Linux中对应的是.out:(cat指令就是查看目标文件的内容)

         而我们用的指令大都在这个路径下——/usr/bin

        可以简单的理解为ls,pwd等等一些指令是C语言写的一些可执行程序,只不过被放在了这个路径下,其实我们ls的时候执行的是/usr/bin/ls下的可执行程序,有点像Windows下的快捷方式指向的目标文件路径。其实这个指令和我们执行我们的a.out程序是一样的。所以我们的安装和卸载就是把可执行程序拷贝/删除到系统路径下。这些指令、程序是文件吗?是的,因为它有文件内容+文件属性 。

        当我们忘了哪条指令在哪条路径下时,可以使用which指令查看。

         所以我们可以执行指令ls,也可以/usr/bin/ls。

        细心的人会发现执行ls指令和执行/usr/bin/ls好像有点不一样,在which ls中,我们看见有alias ls = 'ls --color=auto',其中alias也是Linux命令,给其他命令起一个别名,eg:

         最好不要给指令起别名!

        现在我们应该能看懂ll是啥了。直接ls带颜色是因为alias ls = 'ls --color=auto',后面还带了个颜色选项,而我们直接/usr/bin/ls却没带颜色,我们也可以添加选项让其和ls的效果一样,eg:

三.Linux中常见写代码的工具

1.nano(记事本)

        yum -y install nano可安装nano。

        按ctrl+x->y保存并退出即可。

        再接着使用gcc编译一下这个源文件。

2.vim(这一篇不讲)

        vim在后续会讲解。 

四.Linux设计理念:一切皆文件

       在Linux中,有一套对所有东西的处理准则,就是一切皆文件,比如上方提到的,显示屏,键盘这些设备等等,这样做的好处是:不需要区别对待其他东西。

        这个东西叫终端,目前只开了一个,我们在/dev/pts目录下能看见一些文件,我们试着对这些文件输入内容。

         说明啥?说明0号设备就是我们现在这个终端,对这个文件写操作,这个终端就会输出内容,对应了终端是文件,然后我们复制一个对话。

        这个目录下居然多了个1号文件,那这个1号文件是否对应着右边的窗口呢?

        答案是的,对应了Linux的设计理念,一切皆文件。所以操作硬件也是对应Linux的文件。

五.Shell命令以及运行原理

        大部分指令就是文件!

        先来介绍命令行提示符->。

        xshell一启动就会运行这个程序。然后我们可以输入ls等命令被它读取,识别。用户在执行某种功能的时候,不是直接让操作系统执行对应的指令,而是先交给外壳程序。

        能清楚的看到,shell是一个介于操作系统和用户之间的软件,它的作用是将使用者的命令翻译给核心(kernel)处理;同时,将核心的处理结果翻译给使用者,所以他就叫做命令行解释器。它的存在还能够对用户的请求进行合法化检查,变相的保护操作系统。而最常见的shell之一就是bash(GNU Bourne-Again Shell),它是当前大多数Linux发行版的默认Shell。但是bash不直接办事,它是创建子进程来帮我们办事(执行命令解释),因为bash直接办事,万一用户写的程序有bug,会导致bash崩溃,就都玩完,但是通过创建子进程来办事,崩溃的是子进程。(子进程在后续会讲)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值