目录
[4.1 绝对路径与相对路径](#4.1 绝对路径与相对路径)
[4.2 cd .与cd ..(注意cd后先空格,然后两个点是连一起的)](#4.2 cd .与cd ..(注意cd后先空格,然后两个点是连一起的))
[4.3 目录结构-多叉树](#4.3 目录结构-多叉树)
[4.4 cd~](#4.4 cd~)
[4.5 cd -](#4.5 cd -)
[6.1 mkdir与mkdir -p](#6.1 mkdir与mkdir -p)
[7.1 rmdir与rmdir -p](#7.1 rmdir与rmdir -p)
[7.2 rm -rf](#7.2 rm -rf)
[7.3 rm -rf *](#7.3 rm -rf *)
[7.4 rm -i](#7.4 rm -i)
[13.1 echo命令](#13.1 echo命令)
[13.2 输出重定向 >](#13.2 输出重定向 >)
[13.3 追加重定向 >>](#13.3 追加重定向 >>)
[13.4 输入重定向 <](#13.4 输入重定向 <)
[13.5 linux下一切皆文件](#13.5 linux下一切皆文件)
[14.1 more指令](#14.1 more指令)
[14.2 less指令](#14.2 less指令)
[15.1 head命令](#15.1 head命令)
[15.2 tail命令](#15.2 tail命令)
[15.3 使用](#15.3 使用)
[16.2 时间戳](#16.2 时间戳)
[16.3 cal(calendar)指令](#16.3 cal(calendar)指令)
[用法:find pathname -options](#用法:find pathname -options)
[23.1 安装指令](#23.1 安装指令)
[23.2 使用](#23.2 使用)
好多命令啊!但是我们只要记住:指令需要常用,不需要死硬背!!!
前言:
介绍一些linux常用的基础指令,具体到指令的一些选项,会挑常用的介绍,一些不常用的,再使用到的时候会介绍。
环境:Xshell7
服务器:华为云
1.以指令的形式登录
bash
ssh 公网ip
ssh root@公网ip
前者使用后需要输入用户名,如果需要直接登录root直接使用下面的指令,随后输入密码即可。
2.ls指令
语法:ls 选项 目录或文件
功能:对于目录,该命令列出该目录下的所以子目录与文件。对于文件,将列出文件名以及其他的信息。
常用选项:
2.1 -l 列出文件的详细信息
当前路径为root/,直接ls显示当前路径下的文件名,code为root路径下的文件夹
显示当前路径下的文件属性,可简写为ll
注意:
1.linux下文件=内容数据+属性数据,文件的属性是指文件的名称,类型,大小等,但在计算机看来,都是数据,所以在磁盘上创建一个空文件夹页需要占磁盘上的空间。
2.目前文件的属性我们只需要知道,drw...是文件的权限,前后两个root是文件是所有者也所属组,4096为文件的大小,单位为字节,后面为文件的创建时间或者文件的最新更新时间。
2.2 -a 列出目录下的所以文件,包括以.开头的隐含文件(linux下以.开头的为隐藏文件)
与-l选项配合使用,显示了当前路径下包括隐藏文件的信息,可简写为-al
注意:
1.windows和linux下都有隐藏文件,linux中.开头即代表隐藏的文件,若要创建一个隐藏文件或者目录,例如touch .youcannotseeme.txt或者mkdir .mydir,再ls -al即可查看创建的隐藏文件的属性
2.隐藏文件通常应用于隐藏配置文件。
2.3 -d 将目录像文件一样显示,而不是显示其下的文件,例如ls -d 指定目录
2.4 -i 输出文件的i节点的索引信息,如ls -ai 指定文件(查看文件的inode编码)
配合使用ls -a -l -i,可简写为-ali,查看包括隐藏文件的inode编码(后面再提)。
3.pwd指令
显示当前路径,主要与其它指令配合使用
4.cd指令
4.1 绝对路径与相对路径
绝对路径:直接访问具体的路径,一般用于配置文件
相对路径:不以根目录开始,而是以当前的路径为参考点
4.2 cd .与cd ..(注意cd后先空格,然后两个点是连一起的)
.表示当前路径,cd .表示进入当前路径,同时后面我们会见到./a.out,a.out为可执行程序,而./a.out就是表明运行当前路径下的可执行程序
..表示直接上级路径,帮助我们进行路径的切换,下图为目前在code目录下有一个test.c,我们进入到code目录下,再显示当前目录下的上一级的信息即code所在路径的信息:
假设现在在heoal目录下,进入上一级即home路径:
总结:
例如有一个code文件夹,当前我们就在这个路径下,code路径下有一个test.c文件
./test.c就是当前路径下的相当于code/test.c,而../test.c就是表示test.c的上一级路径即code
注意:
直接使用cd时,不能由下级进入到上级目录。
4.3 目录结构-多叉树
我们需要知道,linux的整个目录结构,本质上是一颗多叉树结构:
分为目录(包括路径上的节点)与文件或者空目录(叶子节点),在root目录下,../是访问到根目录。
所以我们一般定位文件的时候,喜欢采用路径的方式去定位。
4.4 cd~
配合pwd跳转当前用户的工作目录(家目录)。
什么是工作目录(家目录)呢?
对于普通用户而言,/home/XXX就叫做XXX这个用户的家目录(工作目录),cd ~相当于cd /home/用户名;对于root用户而言,/root就是家目录,~就是家目录,cd ~就相当于cd /root。
4.5 cd -
跳转至上一次我所处的路径中:
注意是上一次我所处的路径,而不是上一个路径,例如这里root用户先进入到家目录,然后来到根目录,然后cd -返回到上一次我所处的路径即root家目录,然后cd -再返回到上一次我所处的路径是根目录,类似地,如果再cd -就又返回到root家目录了。
5.touch指令
touch myfile创建一个普通文件,显示文件属性会看到文件的最近修改时间(第一次创建就是创建时间)。
如果我们在创建一个同名文件会更改时间,更新到最新的时间:
6.mkdir指令
6.1 mkdir与mkdir -p
mkdir mydir直接创建目录。
mkdir -p创建一串目录:
6.2 tree指令
以树状显示一串目录,安装tree指令:
bash
yum install -y tree
需要注意前提是在家目录:
7.rm指令
7.1 rmdir与rmdir -p
默认只能删除空目录:
带选项-p会递归删除子目录(如果子目录被删除后父目录变为空目录了,就连父目录一起删除):
注意子目录也要为空目录。
7.2 rm -rf
rm默认删除普通文件,如果想要删除目录,rm -rf(f表示强制删除,-r表示递归,可以删除多重目录):
7.3 rm -rf *
*是一种通配结构,例如ll *.c就是显示当前目录下的所以.c文件,ll *为显示所以文件。
rm -rf *.c就是删除当前目录下的所有.c文件,rm -rf *就是删除当前目录下所有文件,rm -rf /是删除所有的目录,不要用!!!linux下没有回收站,删了就没了,恢复太难了!!!
7.4 rm -i
删除时系统会问一下,yes或者y就是删除,no或者n就是不删。
8.man指令
- Linux命令很多参数,使用man直接使用访问Linux手册,例如查看自己 man man
- (云服务器一般man命令不全,安装命令yum install -y man-pages),若不是root用户,需要给普通用户添加权限,再在安装命令前加上sudo
- man可查看自己,其中手册分为8章,前3章很重要,man 1是查找普通命令,man 2是系统调用,linux内核提供的函数,man 3是c语言的库函数
- 进入书册,向上向下键是翻页,q是退出
9.cp指令
语法:
cp 选项 源文件或目录 目标文件或目录
功能:
复制文件或目录,如果指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,侧会把它前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
常用选项:
-f:强制复制,无论目的文件或目录是否已经存在
-i:覆盖文件前先询问用户
-r:递归处理
10.nano笔记本
安装linux内部nano笔记本:yum install -y nano
退出:ctrl+x
11.mv指令
语法:
mv 文件名或者目录名 目录名/
功能:
移动文件或者目录,如果最后的文件是个不存在的文件,就是对文件重命名。
注意:
移动目录时,必须保证目标目录为空目录。
12.cat指令
用来打印文件的内容。
cat -n为打印时带上行号,tac为倒着打印内容。
13.重定向与echo命令
13.1 echo命令
打印变量的值会在输出指定的字符串,也可以将结果写到文件里面。
13.2 输出重定向 >
功能:1.创建没有的文件 2.本应该显示到显示器的内容被写入到了文件中
图中可以看到:file.txt是之前没有的文件,>创建了之前没有的文件,并且将"hello"写到了这个文件里;再次写入同一个文件会覆盖之前的。
13.3 追加重定向 >>
可以看到追加重定向也会创建之前没有的文件。
追加效果:
13.4 输入重定向 <
之前file.txt中为aaa,bbb现在让file.txt的内容流入到cat中打印出来或者说从文件中获取内容打印出来。
如果cat后不跟东西,你输入什么就会打印什么(ctrl+c)停止,那cat是从那里读到的内容呢?我们暂且认为是从键盘中获取的,我们如果加上<符号就是跟上面的一样,那为什么不加<,cat也可以读到数据呢?这就要涉及到底层的实现了,io篇再来介绍。
也可以复合着来写:
将file的内容直接输出到file2中,如果file2没有,就自动建一个。
将file1中的内容输入到程序里,再输出到file3上,file3没有就自动建一个。
13.5 linux下一切皆文件
linux下一切皆文件是一个经典的概念,为什么要提到这个呢?我们先借助刚刚的cat重定向等一系列内容简单说一下,linux系统是将所有东西都看作文件的,怎么理解呢?
将所有包括硬件都看作结构体file里面的内容(因为linux是c语言加上少量的汇编编写的),结构体里面有函数指针,每个函数指针都对应指向对应的功能,还都在file这个结构里面,所以linux下一切皆文件。
再例如刚刚我们cat命令可以读取一个普通的文件,也可以读取键盘上输入的字符,这使得操作系统变得更加的简单与直观。
14.more指令与less指令
14.1 more指令
当文件有大量数据的时候,直接cat打印会直接跳到最后,想要从头开始,使用more,然后只会打印出一个屏的内容,按回车可往下翻,按q结束
-n选项对输出的所有行进行编号,q退出
14.2 less指令
more指令缺点不能够上下翻,推荐使用less,用法与more一样,但是多了上下键可以翻页。
常见选项:
-i:忽略搜索时的大小写
-N:显示没行的行号
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与/或?有关)
N:反向重复前一个搜索(与/或?有关)
q:quit
15.head和tail指令
15.1 head命令
用法:head 选项 文件
功能:显示档案的开头到标准输出中,默认head命令打印其相应文件的开头10行,-n选项用来显示行数。
15.2 tail命令
用法:tail 必要参数 选择参数 文件
功能:用于显示文件末尾的内容,不指定文件时,作为输入信息进行处理,常用于查看日志文件。
15.3 使用
假设有1万个数据,如果我们想取出中间一段该怎么办?
1.使用head和tail
但是这样还需要创建一个文件,如果数据量大还要存到磁盘中去。
2.使用管道
管道用来传导数据,对数据进行批量化,流水化处理,管道也看做一个管道文件,但实际是看不到的,它是一个内存级别的文件,不存在磁盘上(后面进程地址空间的时候会提到磁盘级的管道),所以不需要占用磁盘空间,直接在内存里完成,并且只需要一行命令。
还可以使用wc -l命令来统计文本行的行数:
16.时间相关的指令
16.1显示时间
中间的斜杠与冒号可以自己定制 。
16.2 时间戳
Unix时间戳是从1970年1月1日开始所经过的秒数,不考虑闰秒。
当前时间转时间戳:date +%s
时间戳转正常时间:
为什么不是从0点开始,因为有时差,我国是从这个时间开始的,也可以上网搜其它的。
16.3 cal(calendar)指令
用来显示公历(阳历)日历。
用法:cal 参数 月份 年份
功能:用于查看日历,如果只有一个参数,则表示年份1-9999,如果有两个参数,则表示月份和年份。
常用选项:
-3:显示当前月和前后一个月,-1显示当前月或者直接cal:
-j显示在当年的第几天。
-y显示当前年份的日历:
17.find指令
用法:find pathname -options
功能:用于在文件数中查找文件,并做出相应的处理
常用选项:
-name:按照文件名查找文件
18.which指令
首先我们要先看待linux下的命令本质为可执行程序!!!
所以像windows下的安装软件其实就是将exe文件拷贝到了c盘的某个位置,给了一个图像化的界面和快捷方式。
现在我们再来看which指令:
which指令就是在系统路径下,查找特定指令所在的路径,ls就是、usr/bin这个路径下的可执行程序,或者说是将这个命令或者这个可执行程序拷贝到某个路径下,就是我们看到的安装,所以我们在电脑是看到的应用图标就是一个快捷方式,删除还有它所在路径下的一些配置文件。
所以我们使用命令也可以带路径:
但是我们在要执行程序时,要使用./a.out(意思就是找到在当前路径下的可执行程序),而直接a.out是找不到这个可执行程序的,就会报命令找不到的错误,那为什么执行系统的命令不需要带路径呢?在讲环境变量会介绍。
19.whereis指令
查找系统路径下,只要出现了关于查找的内容的路径。
20.alias指令
给命令取别名:
这里的color就是颜色,有些命令颜色不同就是因为这个。
21.grep指令
用法:grep 选项 搜寻字符串 文件。
功能:在文件中搜索字符串,将找到的行打印出来,实际就是文本过滤工具。
常用选项:
-i:忽略大小写的不同,所以大小写视为相同。
-n:顺便输出行号。
-v:反向选择,即显示出没有"搜索字符串"内容的那一行。
22.xargs命令
作用:将管道的输出结果作为命令行参数,交给后面程序。
ls是不读取内容的,直接通过管道将字符串内容给ls会被直接忽略的,加上xargs会
将字符串转化成ls的命令行参数,然后就能达到和ls -l -a -i一样的效果了
23.zip与unzip指令
23.1 安装指令
有些云服务器可能没有安装,安装yum install -y unzip zip或yum install -y epel-release
23.2 使用
1.zip -r name.zip 解压内容(-r表示递归,将指定目录下的所有文件和子目录一并删除)
2.unzip name.zip(解压到当前路径下)
3.unzip name.zip -d 指定的路径
注意:
1.压缩后面要先跟压缩包的名字(自己取),再跟要压缩文件的名字
2.解压时如果要解压到当前路径下,就要删掉原文件(因为解压后的文件与原文件名字一样,就解压不了了),或者解压到其他路径下
project.zip是project压缩过来的,如果直接想图中这样解压,不行!因为project.zip解压后文件名字与project冲突了,要先删掉project或者解压到其他路径。
24.tar指令
使用:
c表示创建一个文件,z表示压缩或解压,v表示显示压缩解压过程(文件太大可以不带,不然慢),f表示压缩的文件的名称(必须放到最后,紧跟压缩文件的名字),有的环境报错就不带前面这个杠-,tgz是tar.gz的缩写,tar表示打包,gz表示压缩。
x表示解压,在当前路径下解压,注意要删掉原来的文件
-C解压到特定路径
当压缩解压tar包时,不要带z就行,如果要查看tar包内容(tar包是不经过压缩的,只是打包,所以很大):
25.bc指令
linux下的计算机(也可用做进制的计算) ,可以方便的进行浮点运算。
26.uname指令
用法:
uname 选项
功能:
uname用来获取电脑和操作系统的相关信息,显示linux主机所用的操作系统的版本,硬件的名称等基本信息。
常用选项:
-a或者-all: 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
查看linux下的体系结构(x86_64就是64位的,这就是cpu的体系结构)和内核版本,-r是只有内核版本,-a是所有信息。
27.一些热键
输入一个a,tab2下会直接出现所以a的指令,有些命令tab一下会自动补齐并给上空格。
ctrl+z是暂停,程序还在运行可能,直接ctrl+c停掉。
ctrl+d退出登录,多几次就直接退出xhell了。
ctrl+r进入历史搜索阶段,输入原来很长的代码的片段就会自动匹配,如果有很多个选项,左右键选中回车即可。
28.关机指令
用法:
shutdown 选项 常见选项
常见选项:
-h:将系统的服务器停掉后,立即关机
-r:在将系统的服务停掉之后就重新启动
-t sec:-t后面加秒数,即过几秒关机的意思
reoot命令为重启服务器,服务器不要随便重启!!!
29.history指令
显示原来写过的命令。