Linux——基本指令
1、ls指令
ls指令的功能有两个:
一是对于目录,列出该目录下的所有子目录与文件。
二是对于文件,列出文件名以及其他信息。
用法:ls [选项] [目录或文件]
如果不加选项,直接输入ls,就会直接显示该目录下的目录和文件。
如果加选项,在ls指令中,不同的选项具有的功能是不一样的,常用选项如下:
-a:列出当前目录下的所有文件,包括隐藏文件。
-d:只显示指令的目录,不显示其中的文件。比如:ls -d 指定目录,这个命令就只会显示指定 的目录,其中的文件是不显示的。
-l:列出当前目录下文件的详细信息。
-k:以k字节的形式表示文件的大小。比如:该选项可以和-a、-l连在一起,ls -alk表示以k字节的形式打印该目录下的所有文件的详细信息,包括隐藏文件。
-R:以递归的形式列出所有子目录下的文件。
2、pwd命令
pwd的功能是显示当前所在的目录,以路径的方式进行展示。
用法:pwd
3、cd指令
cd指令从字面意思上理解就是改变目录,因此它的功能是改变工作目录,将当前目录改变到指定目录下。
用法:cd 目录名
在这里需要讲解几个linux中比较重要的概念:
“.“和”. .”
在linux中,
“.”表示的是当前目录,比如:ls . 就表示显示当前目录下的目录和文件。
“. .”表示的是上级目录,比如:ls . .表示展示上级目录下的目录和文件。
绝对路径和相对路径
绝对路径:指的是从根目录开始到当前目录的路径,它的参考对象是根目录。
相对路径:指的是从当前目录开始到其它目录或者文件的路径,它的参考对象是当前目录。
比如说:
有一张图片存在桌面上,那么它的绝对路径就是C:/用户/xxx/桌面/图片.jpg,此时是以根目录C盘作为参考对象。
如果现在就在桌面的文件夹中,那么相对路径表示为桌面/图片.jpg,此时是以桌面作为参考对象。
根据上面的几个概念,通过cd指令可以完成很多快捷操作:
cd . .:返回上级目录。
cd /home/xiaoli/code:通过绝对路径进入某个目录。
cd . ./lesson2:通过相对路径进入某个目录。
cd ~:直接进入用户工作目录home。
cd -:返回最近访问的目录。
4、touch指令
touch指令的功能是修改一个文档或者目录的日期时间,或者新建一个不存在的文件
用法:touch [选项] 文件
touch在使用的时候可以分两种情况:
(1) 不加选项的时候,功能是新建一个不存在的文件
(2) 加选项的时候,各个选项的功能如下:
-a 或 –time=atime 或 –time=access 或 –time=use:只更改存取时间。
-c 或 –no-create:不建立任何文档。
-d:使用指定的日期时间,而非现在的时间。
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或 –time=mtime 或 –time=modify:只更改变动时间。
-r:把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t:使用指定的日期时间,而非现在的时间
用touch创建文件的时候,一次可以创建一个或多个:
5、mkdir指令
功能是在当前目录下创建一个目录
用法:mkdir [选项] dirname
dirname称作目录名,使用mkdir时可以任意命名
(1) mkdir不加选项的时候,可以直接创建一个或多个目录
(2) mkdir的选项只有一个:
-p 或 –parents:在某一路径下创建一个目录。如果此时路径中的某些目录是不存在的,系统会自动建立好那些不存在的目录,也就是说,利用该选项,可以一次性在某个路径下创建多个目录。
6、rmdir指令和rm指令
rmdir指令
rmdir指令与mkdir指令是相对应的,mkdir是创建目录,而rmdir是删除目录。
功能:rmdir命令是删除目录,但是注意,它只能删除
空目录
。
用法:rmdir [选项] 目录名
常用选项:-p:子目录删除后,如果父目录变成空目录的话,就连带父目录一起删除。
**注意:**rmdir的适用对象是具有该目录操作权限的使用者,也就是说没有权限的人是无法通过该命令删除目录的。
rm指令
功能是删除文件或者目录
用法:rm [选项] 文件名或目录名
常用选项:
-f:直接删除文件,不进行询问。
-i:删除前逐一询问确认。
-r:删除目录及其之中的所有文件,也就是以递归的方法删除。
注意:
(1) rm命令所有的使用者均可使用,没有权限限制。
(2) 加入某一个文件的权限比较高,进行删除的时候会进行询问。那么此时删除的时候带上-r 选项就会直接删除。
(3) 使用rm -rf命令可以递归删除目录,并且不需要询问确定。
(4) 使用rm . \ *可以删除该目录下的所有内容,其中:./表示告知系统,要访问的资源在当前目录下,省略的话默认是当前目录;*是通配符,能够匹配该路径下的所有内容。
7、man指令
功能是可以通过联机手册查看命令。
用法:man [选项] 命令
常用选项:
num:man + num表示只在第num章节找
手册一共分为8章:
通过man man命令可以查看手册的内容
1是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd,就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
8、cp指令
功能是复制文件或目录。
用法:cp [选项] 源文件或者目录 目标文件或者目录
比如:cp test.c dir 表示将当前目录下的test.c复制到dir目录下。
常用选项:
-f 强制复制文件或目录,不论目的文件或目录是否存在
-i 覆盖文件之前询问用户
-r 递归处理,也就是将指定目录下的文件与子目录一起处理。
9、mv指令
功能是移动文件或者将文件改名。
语法:mv [选项] 源文件或目录 目标文件或目录
常用选项:
-f:强制的意思,如果目标文件已经存在,不会询问直接覆盖。
-i:如果目标文件已经存在,会询问是否覆盖。
10、cat指令
功能能是查看目标文件的内容。
用法:cat [选项] [文件]
常用选项:
-n:对输出的所有内容进行行编号
-b:对非空输出行编号
注意
:
- 视mv命令中第二个参数类型的不同(是目标文件还是目标目录), mv命令将文件重命名或将其移至一个新的目录中。
- 当第二个参数类型是文件时, mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个, mv命令将各参数指定的源文件均移至目标目录中。
11、more命令
more指令的功能与cat类似,cat命令会直接显示所有的内容,more命令会显示一部分,可以通过向下翻页查看(more只能向下翻页,不能向上翻页)。
语法:more [选项] [文件]
常用选项:
-n:对所有输出的行编号
q 退出more
12、less指令
less的功能和more类似,但是less可以任意浏览文件,可以进行上下翻页,并且less在查看之前不会加载整个文件。
用法:less [参数] 文件
常用选项:
-i:忽略搜索时的大小写
-N:显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit
13、head指令
功能:用来显示文件的开头到标准输出中,默认的head命令默认显示文件的开头10行。
用法:head [参数] [文件]
选项:
-n<行数>:显示的行数
比如:
head -5 mytest.c 表示显示mytest.c的前5行
14、tail指令
功能:从尾部开始将文件中的信息写到标准输出中,tail指令可以用来查看最新写入的信息,比较常用的是查看日志文件。
用法:tail [选项] 文件
常用选项:
-f 循环读取
比如:tail -f mytest.c可以将mytest.c文件最尾部的内容显示在屏幕上,并且不断刷新。
-n<行数>:显示行数
这里我们回答一个问题:
用head命令和tail命令如何将一个文本的1000-1010行显示在屏幕上?
方法一:
可以通过head命令,head -1000 file.txt,将文本的前1010行拿出来;然后通过tail命令,tail -10 file.txt将最后10行拿出来。
这样子是可行的,但是比较浪费空间,并且有一些复杂。
方法二:
可以用以下命令:
head -1010 file.txt | tail -10来完成拿到1000到1010行的文本。
“|”叫做管道,其本质是为了传输数据,管道一般有一个入口和一个出口。
那么上面的命令中,左边的命令head -1010 file.txt用来生产1010行文本,叫做生产数据,作为入口;右边的命令tail -10用来拿到最后的10行文本,叫做读取数据,作为出口。
15、date指令
功能:显示当前的时间
用法:date [选项] [+格式]
1、在显示方面
直接用date指令来显示,格式比较奇怪。
可以通过设置指定的格式来进行显示。
%H : 小时
%M : 分钟
%S : 秒
%X : 相当于 %H:%M:%S
%d : 日
%m : 月份
%Y : 完整年份
%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、时间戳
时间戳指的是从1970年1月1日8点到现在的秒数。
可以通过date +%s命令获得
但是时间戳给的秒数我们不知道它代表了什么时间,那么可以通过下面的命令:
date -d @时间戳
来获取某个时间戳代表的时间
但是这样子的格式比较奇怪,那么可以通过命令
date +格式 -d @时间戳
来将某个时间戳显示成我们想要的格式。
16、cal指令
功能:查看日历等时间信息,没有参数的时候默认查看的是当月的日历。
用法:cal [选项]
选项:
-y:查看当前年份的日历
-j:显示在当年中的第几天
-3:显示前一个月、当前月和下一个月的日历
17、find指令
功能:用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)。
用法:find 路径 选项
常用选项(目前只介绍一个,后面的后续在进行介绍):
-name:按照文件名查找文件或者目录
-size:按照文件大小查找文件或者目录
18、grep指令
功能:在文件中搜索字符串,将找到的行打印出来。
用法:grep [选项] 搜索的字符串 文件
常用选项:
-i:忽略大小写的不同,所以大小写视为相同
-n:顺便输出行号
-v:反向选择,也就是显示出没有 ‘搜寻字符串’ 内容的那一行
19、zip/unzip指令
功能:将目录或者文件压缩成zip格式/对目录或文件进行解压
用法:zip 压缩文件.zip 目录或文件/unzip 压缩文件.zip 目标路径
常用选项:
-r:递归处理,对于zip指令来说,将指定目录下的所有文件和子目录一并处理。
20、tar指令
功能:打包/解包,但是不打开它,直接看内容。
用法:tar [-cxtzjvf] 文件或目录 … 参数
参数选项:
-c:建立一个压缩文件的参数指令(create 的意思);
-x:解开一个压缩文件的参数指令!
-t:查看 tarfile 里面的文件!
-z:是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j:是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v:压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f:使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C: 解压到指定目录
21、uname指令
功能:可以用来获取电脑和操作系统的相关信息。
用法:uname [选项]
常用选项:
-r:可以查看系统的CPU内核号
-a/-all:详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称。