目录
一、linux系统的登录与退出
1.XShell安装
2.Linux机器的链接
二、认识操作系统与文件
1.操作系统
2.文件
三、文件与目录的查看指令
1.pwd命令
2.ls 指令
3.cd 指令
4.tree命令
四、文件与目录的新建和删除
1.mkdir指令
2.touch指令
3.rmdir和rm指令
五、man指令
六、拷贝和移动指令
1.cp指令
2.mv指令
七、查看文件内容
1.cat指令
2.more指令
3.less指令
4.head指令
5.tail指令
6.管道
八、时间相关的指令
1.date指令
2.时间戳
3.Cal
九、关于查找的指令
1.find
2.which
3.alias
4.whereis
十、文本过滤指令grep
十一、压缩与解压缩
1.zip/unzip
2.tar
十一、bc指令
十二、uname指令
十三、几个重要热键
1.[Tab]
2.[ctrl]-c
3.[ctrl]-d
十四、关机
在前面声明一下,在购买云服务器后一定要先在你购买机器的网站上修改密码,你修改过后的密码对应root用户的密码。如果没有正常弹窗,注意你是不是安装了windows操作系统,或者是机器是不是处于关机状态。我下面的指令使用了两个账户,一个是root,另一个是example,我的指令演示都使用了example账号,而登录使用了root账号,大家都用root操作就行了。
下载安装 XShellXShell 是一个远程终端软件。
下载官网:https://www.netsarang.com/products/xsh_overview.html
下载安装的时候选择 "home/school" 则为免费版本。
我使用的是腾讯的云服务器,这里只演示云服务器的使用。
XShell下,复制: ctrl + insert (有些同学的 insert 需要配合 fn 来按)粘贴: shift + insert
(1)打开XShell,看到的界面是这样:
(2)输入需要输入的内容:
(3)连接成功显示:
(4)ctrl+d断开Xshell与Linux机器的链接
(1)概念
操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。
我们平常在使用的最多的就是Windows操作系统,它也是我们电脑操作系统的近乎唯一的选择,我们今天学的Linux也同样是操作系统。
(2)相关概念
应用软件:要了解操作系统我们首先应该知道应用软件,应用软件是我们操作电脑使用最多的,比如QQ,WeChat,b站,visual studio等等都是应用软件。这些应用软件都是为了满足用多样的应用需求而提供的软件。我们学习编程,主要工作就是开发应用软件。
硬件:这些东西很多都是我们能触摸到的,我们电脑的CPU,内存,磁盘,键盘,显示器等都属于硬件。
驱动:驱动程序全称设备驱动程序,是添加到操作系统中的特殊程序,包含有关硬件设备的信息。驱动顾名思义,驱使硬件活动。驱动程序是硬件厂商根据操作系统编写的配置文件,没有驱动程序,计算机中的硬件就无法工作。
在我们使用鼠标,键盘,或者打印机的时候,我们都需要安装驱动。这里我们拿光盘槽举例,当我们需要插入光盘时一定需要先让电脑弹出光盘槽。如果没有弹出光盘槽的驱动,关盘也没有办法放进去。此时就需要安装弹出光盘的驱动程序,在它完成安装之后我们才能正常的使用它。
操作系统:操作系统是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。
那么用简单的话来说,操作系统就是一款管理软件,控制软硬件。对下管理好软硬件资源,对上提供良好的,稳定的,安全的,高效的运行环境。这里控制硬件并不是直接控制,而是通过访问驱动,驱动设备就推动硬件来实现功能。
就好比老板,可以管理员工,也可以管理公司的电脑,饮水机等。但对使用产品的顾客,老板就需要听取意见保证给用户最好的体验。
(1)指令
我们在使用电脑的windows操作系统时经常使用点击,双击鼠标进行操作。在Windows下我们使用图形化界面,而在Linux下只有命令行,其实两者之间是没有任何区别。图形化界面只是包裹了一层交互软件层,windows底层也是这样的命令行。但学习命令行更接近操作系统底层,所以学习命令行是学习操作系统的重要手段。
在19世纪打字机就已经出现了,键盘也继承了当年打字机的各个键位最先诞生。图形化界面也是后来才开发出来的,在上篇Linux发展中也讲到,图形化界面是苹果公司去施乐公司取经而来,这些公司都是在发迹之前操作系统就已经被发明了。所以操作系统没有图形化界面也是正常的,后来又出现了鼠标,方便图形化界面的操作。
(2)文件的正确认识
我们创建一个空文也是占磁盘空间,虽然计算机显示大小是0kb,但是因为我们创建的空文件都是在磁盘上的,文件不光有文件内容数据,还有文件属性数据。
文件内容:比如我们建立一个文件夹,或者一个人txt文件,我们在里面写的内容是数据。
文件属性:在Windows下我们的文件有各种类型,建立文件还会有文件时间,大小等各个属性。文件属性也是数据。
准确来说,文件=文件内容数据+文件属性数据
操作文件的方式有两种:操作文件内容与操作文件属性。
从本质上来看,操作系统都是由文件构成的。
语法: pwd
功能:显示用户当前所在的目录(在linux中的目录就相当于windows的文件夹)
对应的Windows操作:查看现在所在的位置
我现在在这个/home/example目录下
语法:ls+空格+[选项][目录或文件](例:ls -l)
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
对应的Windows操作:鼠标点击文件夹
常用选项:
初期用的最多的还是ls -l(ll)指令,加上-l可以显示更多细节,蓝色字体的表示目录。
语法: cd+空格+目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。
对应的Windows操作:在输入框内输入位置跳转
使用:
这个很像windows下的文件夹的后退
/home就相当于我们windows的此电脑,是用户可访问的根目录,从根目录出发的文件路径就是绝对路径。cd就会直接进入相应文件夹。
我们首先在/home/example目录下,..表示上一级目录,从这个目录向下访问就是文件的相对路径。
/home/用户名 就是家目录(root用户的家目录是/root)
Windows下,如果我们一直点返回,直到返回到此电脑之后就不能再返回了。Linux下不断输入cd..后退,pwd查看当前目录直到出现/不能再次后退,就证明到了根目录。
这里其实跟数型结构的树很像。叶子节点就是普通文件或者空目录,路上节点就只能是目录了,根节点就是根目录。所以几乎任何操作系统文件的目录组织结构都是一棵多叉树。
通过tree+空格+目录可以通过树的理解方式看到目录内的内容
在同一目录下不能建立相同名字的目录和文件,因为路径相同。但是在不同目录下可以建立相同名字的目录和文件,因为路径不同。
语法:mkdir+选项+文件夹名称(dirname)
功能:在当前目录下创建一个名为 “dirname”的目录
对应的Windows操作:右键新建文件夹
常用选项:
语法:touch+选项+文件名+ . +后缀(test.txt)
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
对应的Windows操作:右键新建文键,右键属性
常用选项:
进入/home/example/a目录下 ,建立普通文件test.c
(1)rmdir指令
rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。
语法:rmdir+空格+选项+空格+目录
功能:删除空目录(具有当前目录操作权限的所有使用者才可使用)
对应的Windows操作:右键新建文键,右键属性
常用选项:
用mkdir建立空目录c,再用rmdir删除
rmdir不能删除内部内部有子目录或者子文件的目录
(2)rmdir指令
rm文件或目录都可以删除
语法:rm [-f-i-r-v][dirName/dir]
功能:删除文件或目录(所有使用者都可用)
对应的Windows操作:右键删除(但是linux没有回收站,删了就是删了)
常用选项:
这里我们使用rm -i,我们删除同时操作系统会告诉是否确定删除,y表示确定,n表示取消
因为在日常中会经常会出现误删,如果你将公司的重要数据误删了,虽然你可能不用承担主要责任,但是也许就只能删库跑路了。
几乎所有的指令都可以复合,使用rm -rf (递归强制删除指令的目录),就直接删除所有的文件和目录了,谨慎使用;指令rm -ri,这个指令还有回旋的余地。
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。
语法: man+数字num+需要搜索的内容
功能:在手册中查找搜索的内容(手册都是英文的)
num的数字表示手册分为8章
搜索一下printf函数,C语言库函数对应3,回车查找,在进入界面后点击a然后再点击q就可以退出了
语法:cp+选项+源文件或目录 目标文件或目录
功能: 复制文件或目录
对应的Windows操作:复制粘贴
cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存 在的目录,则会出现错误信息
常用选项:
用mv -r(递归)将a目录复制b目录中
根目录是不能复制的。
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
语法:mv+选项+源文件或目录 目标文件或目录
功能:mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
对应的Windows操作:剪切粘贴、重命名、把一个目录中的所有文件移动到另一个文件夹内
视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的 目录中。
当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它 将所给的源文件或目录重命名为给定的目标文件名。
当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
常用选项:
(1)剪切粘贴:将a目录移动到b目录
也可以移动多个文件和目录
(2)重命名:重命名一个文件或目录,将a目录的名字改成c
直接将一个目录中的文件移动到一个新的文件中
语法:cat+选项+文件
功能: 查看目标文件的内容
常用选项:
我们目前还不需要关注怎么写文件
优先输入下面的代码:
cnt=0; while [ $cnt -le 10000 ] ; do echo "hello world [$cnt]"; let cnt++; done > test.txt
你会发现文件夹内新建了一个有一万行hello world的文本文件,cat可以直接在屏幕上打印文件中的所有内容。
后面还有9982行……
语法:more+选项+文件
功能:more命令,功能类似 cat
常用选项:-n对输出的所有行编号q退出more,显示test.c文件显示第100行的内容,只能按Enter键一行一行下翻
但是也不是很方便,所以一般情况使用less
less 工具也是对文件或其它输出进行分页显示的工具,应该说是它才是linux正统查看文件内容的工具,功能极其强大。
less的用法比起more更加的有弹性。使用less就可以使用键盘右下侧的上下键等按键前往后翻看文件,更方便查看。除此之外,less拥有更多的搜索功能,可以向上向下搜索。
语法: less+参数+文件
功能: less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前 不会加载整个文件。
选项:
less打开test.txt文件的内容,可以上下查看
head用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而tail想当然尔就是看档案的结尾。
语法: head+ - +参数+文件
功能: head 用来显示档案的开头至标准输出中,如果没有输入参数,默认head命令打印其相应文件的开头10行。
选项:
显示test.txt默认显示前十行与控制显示前15行
tail命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail - f filename会把filename里最尾部的内容显示在屏幕上,并且也会不断刷新,使你看到最新的文件内容.
语法: tail+必要参数+选择参数+文件
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
显示test.txt默认显示后十行与控制显示后15行
在我们的理解中,管道都是用于传输资源的,它可以传送水、天然气等资源,也都要有一个入口,一个出口。而我们这里传输的是数据,它与流有些许相似,用到的通道指令用的是 " | ",这里主要将各个指令联合起来用。
head -25 test.txt
首先,我们首先打印整个文件的前25行
head -25 test.txt | tail -15
然后,我们可以把 | 看作一个临时文件,把head -25 test.txt显示的内容输入到这个临时文件内,再在这个文件中找这个文件的后十五行
head -25 test.txt | tail -15 | head -5
最后,我们依旧把 | 看作一个临时文件,把head -25 test.txt | tail -15显示的内容重新输入到这个临时文件内,再在这个文件中找这个文件的头五行
date指定格式显示时间: date +%Y:%m:%d date
用法:date+“格式”(或者直接date)
在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
date可以直接显示现在的时间,date也可以以控制格式的方式输出时间
在设定时间方面
在这里不演示了
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
时间转化为时间戳:date +%s
时间戳转化为时间:date -d@1508749502 Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的 午夜)开始所经过的秒数,不考虑闰秒。
时间与时间戳的相互转换
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
命令格式: cal+月份+年份/cal+年份
功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
常用选项:
查看2018年的日历
查看2022年的7月
Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大,其中大部分选项都值得我们花时间来了解一下。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间。(这里是指30G字节以上的文件系统)
语法: find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
【注意】
当我们进行find搜索的时候,可能需要访问磁盘进而导致效率下降
通过find查找c语言库函数,这里需要访问磁盘会有等待。
我们知道,操作系统也是底层由编程语言写成的各种程序实现的。所以我们使用的每一个指令都对应一个程序文件。这个指令就是帮我们找到实现这些指令的文件储存在哪里。
语法: which+空格+指令
功能: 用于在磁盘中查找对应的指令的程序储存位置
对指令起别名,下面的就表示对ls -l取别名为fcb,color用来标识颜色
whereis指令也能查找文件,但该指令只能用于查找二进制文件、源代码文件和man手册页
linux操作系统的文件种类还有很多,大概知道这个指令的搜索范围更小就可以了。
语法: whereis+空格+文件
功能: 查找二进制文件、源代码文件和man手册页
查找范围:
which grep是文本内容的行过滤工具,默认会匹配文本中的关键字,匹配上的进行显示 语法: grep+选项+’需要搜寻的字符串‘+空格+文件 功能: 在文件中搜索字符串,将找到的行打印出来 常用选项: 查找文件中999出现的行并显示出来 grep可以和其他命令,结合管道,来进行某些匹配工作,了解即可。 可以直接输入zip,看看zip指令安装了没有,安装了会展示下面的一长串东西 如果没有下面的一长串,就说明没有安装 对于普通账号安装输入指令:yum install -y zip / unzip 如果用的不是root账号输入指令:sudo yum install -y zip / unzip 语法: zip+空格+选项+空格+将会生成的压缩文件+空格+需要压缩的文件或目录 功能: 在当前目录下生成一个压缩文件 将b目录压缩为b.zip zip默认只对一个目录进行打包压缩的时候,只会对目录文件 语法: unzip+空格+压缩包文件+选项+空格+需要解压到的文件夹路径 功能: 在一个目录内解压一个压缩文件,一般为.zip后缀 解压b.zip到a目录下 互联网中,我们需要传输很多大小的文件,当我们压缩了之后文件可以将很多文件变成一个文件而且内存还会变得更小,这样就便于传输和保存。 语法: tar+空格+选项[-cxtzjvf]+文件与目录 功能: 在当前目录下生成一个压缩文件,一般为.tgz后缀 我们只需要知道下面两个就好 tar -czf my.tgz dir--打包并压缩 tar -xzf my.tgz dir--解包并解压 案例: 范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar [root@linux ~]# tar -cvf /tmp/etc.tar /etc仅打包,不压缩! [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc 打包后,以 gzip 压缩 [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc 打包后,以 bzip2 压缩 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~ 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~ 上述指令在执行的时候,会显示一个警告讯息: 『tar: Removing leading /" from member names`』那是关於绝对路径的特殊设定。 范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件? [root@linux ~]# tar -ztvf /tmp/etc.tar.gz 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,就得要加上 z 这个参数了!这很重要的! 范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下 [root@linux ~]# cd /usr/local/src [root@linux src]# tar -zxvf /tmp/etc.tar.gz 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说, 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz , 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔! 范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已[root@linux ~]# cd /tmp [root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件, 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了! 范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限! [root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时! 范例六:在 /home 当中,比 2005/06/01 新的文件才备份 [root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home 范例七:我要备份 /home, /etc ,但不要 /home/dmtsai [root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc 范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件! [root@linux ~]# cd /tmp [root@linux tmp]# tar -cvf - /etc | tar -xvf - 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的! 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~ 这分别代表 standard output, standard input 与管线命令 bc命令可以很方便的进行浮点运算,相当于一个小型计算器。 :quit退出 uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。 语法:uname+空格+选项 功能: uname用来获取电脑和操作系统的相关信息。 常用选项: [Tab]按键---具有『命令补全』和『档案补齐』的功能 tab-按一下不行按两下 [Ctrl]-c按键---让当前的程序『停掉』 [Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可 以用来取代exit 我们需要断开XShell和linux机器的链接就可以按ctrl+d,再按一次就关闭XShell了 语法:shutdown+选项 以下命令作为扩展:十、文本过滤指令grep
十一、压缩与解压缩
1.zip/unzip
2.tar
十一、bc指令
十二、uname指令
十三、几个重要热键
1.[Tab]
2.[ctrl]-c
3.[ctrl]-d
十四、关机