Linux(基本指令)

Linux发展历史

计算机的本质是工具,计算机的产生衍化出来了许多的细分行业。linux系统最开始是仿造unix系统发明并且开源。

linux开源的原因:使命驱动

开源的好处:稳定性高,因为开源,代码暴漏出来,有更多的人一起发现问题,并解决问题,所以更稳定、也更安全,问题是一起解决的,所以更可能得到最优解,使得代码的效率更高。 闭源的系统由于不清楚其内部实现,会影响到数据的安全。

 linux版本

技术线版本:主版本.此版本.修正次数。偶数是稳定版本,技术是测试版本

商业化版本:centos,ubuntu,kail,红旗·····这是用应用的角度出发的。商业化版本底层就是技术版本,大家的内核可能是一样的,但是包装出来的商业化操作系统的应用推广是不同的。

linux登录

ssh root@xxx.xxx.x.x(ssh是协议)

操作系统

计算机时一个有层次的结构,如下,可以将计算机当作一个工具,而工具时需要被管理的,管理计算机的就是操作系统,操作系统是一款进行软硬件管理的软件。操作系统通过对软硬件进行合理的管理(手段),以达到为上层用户提供良好的、稳定的、安全的运行环境的目的。我们通常写的应用软件就在用户层。

我们见到的开设比如鼠标键盘网卡等等都是硬件,而开机的过程是一个加载操作系统的过程,但是操作系统也无法直接对硬件进行控制,这中间需要驱动程序进行打通。 

文件

空文件也要占据空间,因为文件属性也是数据,这些数据也要占据磁盘的空间。所以"文件=内容+属性","文件操作=内容操作+属性操作"。

shell

shell其实是一个指令

linux的bash就是我们一直用的命令行其实是我们系统bash程序运行起来的一个对应的软件。

bash是一个程序,叫做命令行解释器,就是我们所说的shell。也可以理解为,shell是一个外壳程序,包裹在操作系统外层的软件层,其核心工作就是命令行解释或者操作解释,是将用户的操作解释交给操作系统,让操作系统去执行,执行完毕将操作系统的执行结果经过shell交给用户,这样的软件层我们叫做外壳程序,所以外壳程序叫做命令行解释器。

我们做为用户并不能直接访问操作系统比如说linux kernel,这样很不安全,所以在外面包了一个外壳程序,就是shell命令行解释器。是外壳程序接收到用户的指令操作再传给操作系统的,操作系统给我进行处理然后将执行结果通过外壳程序返回给用户。 

shell存在的意义是什么?帮忙进行命令行传递以及返回结果;当指令是非法的话,shell会在它这一层识别然后不再将该指令传递到操作系统,这也是变相的保护了操作系统; 执行命令的时候创建子进程进行执行。

实际上指令在进行执行的过程当中,shell外壳程序要执行一些命令,但是这些命令有些可能是由bug导致运行到一部分就产生异常,所以shell不会自己去执行分析指令,而是通过派生子进程方式去做的。外壳程序在windows下就是图形化界面Windows Gui,在Linux下面就是我们的命令行程序。centos7采用的外壳程序叫做bash,shell和bash的关系就是:shell是所有外壳程序的统称,而bash是centos7下的shell。

linux指令

指令就是一个c语言编译好的可执行程序,他就是一个文件。我们自己写的c语言编译成可执行程序其实也可以叫做指令,就是一个文件。其实指令、程序、工具没有什么区别。

命令行类似于window命令提示符cmd,指令操作。其实window也有在像linux系统靠近的趋势,比如说powershell。

mkdir;pwd;touch(创建普通文件);ls(显示文件名属性);pwd(显示当前路径);cd(change directory);

cd~:进入当前用户的的家目录。当普通用户每一次登录linux的时候,我的默认所处路径是 /home/wjj,在home家目录下会存在许多的普通用户。但是root用户登录的时候所处的路径是/root。

cd-:回到最近一次所处的路径当中,实现两个热点路径的来回横跳。

tree .:将当前目录往后的所有文件夹以树状结构呈现(安装:centos下采用yum install -y tree,ubuntu下采用apt-get

ctrl+c:终止刷屏

touch test.c:在当前路径下,创建一个普通文本文件test.c

nano test.c:以记事本的形式打开test.c文件并进行编辑工作

^X:ctrl+x

ctrl

cat test.c:打印test.c文件 

top:打开任务管理器,按'q'直接退出。

ctrl+c:热键,强制终止前台影响我输入指令的程序,用来解决命令行由于一些问题无法正常输入了的问题。

ctrl+d :热键,自动退出,有点像exit。

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

history:将历史命令全部打印出来

reboot(重启)/shutdowm(关机)

file+文件名:可以更加详细的展示文件类型,比如告诉我们采用gzip压缩这是一个压缩文件、ASCII文本文件或者这是一个装有c源代码的文件,而不是仅仅像linux系统顶一个一样说这些都只是一个普通文件。file可以帮助我们去识别文件类型当中更符合我们普通用户识别的类型。

stat test.c:获取test.c的所有属性

任何一个文件都会有三种时间:Access time、Modify time、Change time,简称ACM

mkdir -p d1/d2/d3:递归创建多个目录

rm -r d1:递归删除d1文件

rm -f d1:强制删除的d1文件,系统不需要进行询问

rmdir d3:只可以删除空目录

rm -rf ./*:删除当前路径下的所有内容,要慎用,因为linux没有回收站,当然可以自己制作回收站。 

ls(指令) -l(常用选项)/ll:以list的形式显示文件更多属性。

ls -l(list) -a(all)/ls -la:显示更多的隐藏文件。在linux系统当中,文件/目录名如果以'.'开头就是一个隐藏文件,比如mkdir .notsee或者touch .nosee就是创建隐藏文件。-d选项是只展示目录,而不展示目录下的文件。

如何看待自己的工作目录?

默认登录Linux,所处的目录就是你的家目录。/home/wjj。普通用户,一般而言,在自己家目录下能畅通无阻。

man

因为linux内核是用c语言写的,提供了许多指令以及系统调用接口,man指令提供了查询的功能。printf在linux下面也是一条指令,和c语言中的printf函数在概念上是不同的。

man 1 printf:查看1号手册的printf指令

 cp -r(递归拷贝,配合目录使用) dir ..:将dir拷贝到上级目录

mv ../file.txt .:将上级目录下的file.txt移动到当前目录下(mv是默认递归的,不需要加额外的选项)

mv file.txt ../name.txt:将file.txt重命名为name.txt并剪切到上级目录,文件夹也同样可以及逆行重命名和剪切

 cat指令

echo "hello wjj" > newfile.txt:输出重定向,如果目标文件不存在,会自动创建,并把本来应该显示到显示器(所以此时显示器可以理解成文件)上的文本写入到文件中,这就叫做输出重定向。并且这种输出重定向是一种覆盖式写入(写入文件之前,会先清空文件)。但是>>是追加重定向 。清空一个文件就是‘> newfile.txt',输出重定向左边什么都不加。

向显示器打印,可以理解称为向显示器写入,可以把显示器看作一种文件,因为只有文件才可以读写。c程序获取数据scanf,cin都是从键盘中获取的,虽然会在显示器打印,实际上是在键盘当中先输入了,一我的程序拿到了,第二显示器只是把我输入的数据回显到显示器上,显示器对应的是一个写入的方法。键盘也可以看作成为一种文件。

 我们是从键盘把数据通过sacnf和cin读到程序里,然后我们在通过printf或者一些文件类接口把数据写到显示器上,所以键盘给我们提供的是一个被读的方法(read),显示器是通过一种写入的方法(write),我们把这种情况统称为IO,也就是输入和输出,read叫做input,write叫做output,读方法和写方法在我们的认知当中就是文件。

结论:Linux下一切皆文件。总之,只要你最终满足IO请求,哪怕是一个外设,我们都称之为问价。

cat如果后面什么都不跟,默认就直接从键盘读取数据,键盘上面说了和显示器一样,都可以看成文件,这也可以看出cat是默认冲键盘上读取数据。如果我们不想让它从键盘上读取,也可以后面直接接目标文件,或者接输入重定向。但是cat myfile.txt和cat < myfile.txt这两者是不一样的,前者是通过命令行参数获得的文件名,而后者是通过重定向获得的。

cat的-n选项是对输出所有行进行编号,-s是不输出多行空行。

排序:

 wc是统计文本内容,-l选项是统计行数

more and less:

cat只能打印短文本,查看代码的片段。如果现在有了一个长文本,用cat打印的话会导致刷屏,直接从第一行刷到最后一行,很不方便。而more命令,默认按照屏幕大小显示文本内容,会从第0行开始跟我们显示,显示到屏幕满了就不显示了,然后按回车键就可以逐行去进行翻阅,上下键是没有用的,按"q"就直接退出。less命令可以通过上下键来逐行进行翻阅。通过按'/'可以进行搜索,然后通过pageup和pagedown来对下一个出现的位置。

 head and tail

​​​​

命令行管道

不论什么管道,一定都是既有入口又有出口的,用来传输资源。计算机最重要的资源是数据。命令行管道是连接两条指令,用来传输数据。

我们可以将管道当作一个文件来看待,cat本来应该显示在显示器上,现在将数据全部显示到管道上,wc本来后面应该接的文件名从文件中进行读取,现在变成了从管道当中把数据读到wc当中去。

管道关键在于可以级联多条命令,让命令与命令之间进行组合,来完成数据的不断加工操作。

 date

 时间戳的概念,是一个非常重要的概念,从特定时间到现在累计的描述,所以它是自增的。是可以和当前的时间进行转换的。

cal 2010:查看2010年日历,-3选项是显示上下连个月的日历

 find指令:搜索文件

根据指定选项进行指定的搜索,linux会把我们常见的查找出来的结果缓存起来。所以我们会发现第一次搜索比较慢,但是第二次就快了。

which指令:用来显式搜索我们的指令的

whereis:在系统的默认路径下用来搜索指定名称的文件、程序或者归档文件

既把指定的程序找到了,又把程序配套的man手册也找到了。

 alias:给指令起别名

 grep:文本行过滤工具,将指定文本内容按照特定的关键字进行筛选

-n:显示过滤内容再源文件的行号

-v:反向匹配

-i:忽略大小写

zip命令:

我们为什么要打包压缩?打包的过程是把所有的东西装在一起防止路上丢失,将多个文件打包成一个文件的同时保证这些被打包的文件不丢失。压缩的过程是为了可以传送更多的内容。要将两个概念分开,前者防止文件丢失,后者是减少文件体积。 
tar命令:
-c :建立一个压缩文件的参数指令(create 的意思);

-x :解开一个压缩文件的参数指令!

-t :查看 tarfile 里面的文件!

-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩,其实就是打包的同时是否进行压缩,不带的话就是仅仅实现打包的功能。

-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?

-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!

-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

-C : 解压到指定目录

tar -czf temp.tgz temp(压缩)

tar -xzf temp.tgz(解压)

tar -xzf temp.tgz -C /root(-C选项是解压到指定的路径,这里解压到了root用户的目录下)

tar -ztvf temp.tgz(不解压看tarfile里面的文件)

 bc命令

uname:查看linux系统的体系结构

计算机的体系结构=硬件结构(计算机组成原理)+软件结构(操作系统)

X86(32位)/X86_64(64位)简称X64

Linux下通常我们用什么定位我们的文件呢?

 任何一个节点只有一个唯一确定的父目录,所以当前节点向上查找是唯一的,反过来也一定具备唯一性。

绝对路径麻烦,一般是在某些配置文件中,对某种文件进行配置时采用的。而相对路径用起来更加简单,日常中比较常用。

window下路径分隔符:'\'

linux下路径分隔符:'/'

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值