Linux基本指令(二)
mkdir
语法:mkdir[选项] dirname
功能:在当前目录下创建一个名为“dirname"的目录
常用选项:
-p,–parents可以是一个路径名称。此时路径中的某些目录尚不存在,加上此选项后,系统将自动好那些尚不存在的目录,即一次可以建立多个目录
举例
mkdir -p test/test1 //递归创建多个目录
rmdir指令&&rm指令
rmdir是一个与mkdir相对应的命令,mkdir是建立目录,而rmdir是删除目录
语法:rmdir [-p][dirname]
适用对象:具有当前对象操作权限的所有使用者
功能:删除空目录
常用选项:
- -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起被删除
rm命令可以同时删除文件或者目录
语法:rm [-f-i-r-v][dirname/dir]
适用对象:所有使用者
功能:删除文件或目录
常用选项:
- -f 即使文件属性为只读(即写保护),也会直接删除
- -i 删除前逐一询问确认
- -f删除目录及其下所有文件
补充:
- rmdir只能用于删除空目录,所以这条指令使用较少
- 通常我们删除目录,使用的是rm -r指令,其中r代表的是递归(recursion),因为我们知道,在LInux系统中,目录的结构都是用树定义的,而树的销毁都是通过递归来实现的,所以在删除目录时要用到 -r选项
- 在上面操作中,我们发现当我们要删除一个目录时,系统每进行一个操作就会问我们一次,倘若文件多起来,就会特别不方便。此时,我们可以使用rm -rf指令,其中 f 代表的是强制(force),在使用这条命令之后,我们在进行删除操作时,系统将不会再进行询问而是直接进行删除
- rm在删除目录中的文件时默认不会删除隐藏文件
- 在第四条补充中,出现了rm -rf dir/*指令,其中的 * 是通配符,指定目录下的所有文件
man指令
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助,访问Linux手册页的命令是man
语法:man [选项] 命令
常用选项:
- k 根据关键字搜索联机帮助
- num 只在第num章节找
- a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕
例如当我们查询 ls 这条命令时
只需要输入man ls
就将得到以下结果
补充:
-
面手册分为8章
- 第一章是普通的命令
- 第二章是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
- 第三章是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
- 第四章是特殊文件,也就是/dev下的各种设备文件
- 第五章 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
- 第六章是给游戏留的,由各个游戏自己定义
- 第七章是附件还有一些变量,比如向environ这种全局变量在这里就有说明
- 第八章是系统管理用的命令,这些命令只能由root使用,如ifconfig
所以在使用man指令时,可以使用以下两种格式
1、man 手册编号 查找的内容
2、man 查找的内容
第一种是在指定的章节去查找,而第二种则是从第一章开始查找,一直找到第八章,如果在中途找到要查找的内容,就将相关细节展示出来 -
当发现man指令用不了时,可以输入
yum install -y man-pages
来安装指令
cp指令
语法:cp [选项] 源文件或目录 目标文件或目录
功能:复制文件或目录
常用选项:
- -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
- -i 或 --interactive 覆盖文件之前先询问用户
- -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链 接,则一律视为普通文件处理
- -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
补充:
1、在同一个目录底下是不能出现同名的文件或目录的,所以若要将当前文件或目录拷贝到同级目录下,需要重新命名
2、如果要拷贝目录的话,就要使用 -r 选项
mv指令
mv是move的缩写,可以用来移除文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录
语法:mv [选项] 源文件或目录 目标文件或目录
功能:
- 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
- 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
常用选项:
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
补充:
总的来说 mv src dst
,若src后面跟的dst如果是一个目录,就会把src放到目录里面,若dst是一串路径后面有具体的名字,就会把src移动到dst上一级目录底下,然后把名字改成dst的名字
cat
语法:cat [选项][文件]
功能:查看当前文件的内容
常用选项:
- -b 对非空输出行编号
- -n 对输出的所有行编号
- -s 不输出多行空行
重定向
要谈重定向先要介绍几件事情
1、一个指令echo
,这个指令是直接向文件中写入内容
echo
的语法就是echo 内容
,当输入这个指令后,屏幕就会显示echo
后面的内容(echo
输出内容自带回车)
2、在Linux中,一切皆文件。即无论是桌面,还是键盘,显示器,甚至键盘,在Linux眼中,都是文件,根据文件的特点我们知道,文件都有读和写两种方法,所以,在Linux中,每个文件都有读方法和写方法,只不过对于有些文件,这些方法可能为空罢了
比如,对于键盘来说,键盘只会有读方法,因为我们平时向电脑中输入数据都是通过键盘来实现的,但是键盘没有写方法,其实也不难理解,因为我们没法从键盘中专门去写入数据
对于屏幕来说,屏幕只有写方法,即只能往屏幕中写入数据但没办法从屏幕中读取数据,有的人可能会有疑问
对于以上代码,难道不是先从键盘中读入数据10,写入到屏幕中,然后再从屏幕中读取10放到变量a中吗?
其实不然,这只是因为系统在从键盘中读入数据时,将数据给了变量a的同时顺带将数据给了屏幕一份,这个过程称之为回显
所以第一条中的 ”屏幕就会显示echo
后面的内容" 其实描述的就不太妥当,应该改为向显示器文件中进行写入
回归正题,既然echo 内容
默认是向显示器中进行写入的,那应该怎么将内容写入到其他文件中呢,这下不得不提到输出重定向了
输出重定向
可以看到,在使用输出重定向后,就可以改变写入的位置
补充
> 不存在的文件名
:默认新建文件> 存在的文件名
:清空目标文件
- 在输出重定向后,将数据输出到文件中时,会先将文件中原本的内容清空再进行输出
追加重定向
之前介绍的输出重定向,在将数据输入到文件中前,会将文件中的内容先清空,如果我们在向文件中输出数据的同时,还想将原来的数据保留那应该怎么做呢?
这个时候就需要用到追加重定向了。
输入重定向
当我们在使用cat
指令时,若后面不跟文件名而是直接跟内容,它就会将内容打印到屏幕上
根据我们之前提到的”Linux中一切皆文件“理念,我们可以将cat
这一用法理解为当cat从键盘文件中读取什么就像显示器文件中写入什么。
即cat
在读取内容时默认是从键盘文件中读取的,那么如果我们想让cat
本该从键盘文件中读取内容更改为从普通文件中读取内容又应该怎么操作呢?
这时候就要用到输入重定向了。
more指令
语法:more [选项][文件]
功能:功能类似于cat,more主要用来查看大型文件
常用选项:
- -n 对输出的所有行编号
- q 退出more
当使用cat查看规模非常大的数据的时候,会出现刷屏的现象,
当我们使用more指令时候我们就可以使用回车键进行下翻操作,是我们能更好地看我们想要的内容
弊端:
- 查看文件时只能使用回车,不能使用上下键
- 只能下翻不能上翻
less指令
语法: less [参数] 文件
功能:less与more类似,但使用less可以随意浏览文件,而more只能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件
选项:
- -i 忽略搜索时的大小写
- -N 显示每行的行号
- /字符串:向下搜索“字符串”的功能
- ?字符串:向上搜索“字符串”的功能
- n:重复前一个搜索(与 / 或 ? 有关)
- N:反向重复前一个搜索(与 / 或 ? 有关)
- q:quit
补充:
- less工具也是对文件或其他输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大
- less的用法比起more更加有弹性,在使用more时,哦我们并没有办法像前面翻,只能往后面看
- 在使用less时,可以使用
[pageup][pagedown]
等按键功能来往前往后翻看文件,更容易用来查看一个文件的内容 - 除此之外,在less里面有更多的搜索功能,不止可以向下搜,也可以向上搜
head指令
语法:head [参数] [文件]
功能:head用来显示档案的开头至标准输出中,默认head命令打印其相应的文件的开头10行
选项:
- -n<行数> 显示的行数
tail指令
语法:tail[参数][文件]
功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理,常用查看日志文件
选项:
- -f 循环读取
- -n<行数> 显示行数
利用head和tail简单讲解一下重定向和管道
当一个文件中有100行内容,我们想要查看第50~55行的内容,应该怎么做?
方法一:将该文件中前55行放到临时文件中,再从临时文件中读取后5行
方法二:利用命令行管道将file.txt的前55行作为输入,将屏幕做为输出,并用tail指令输出屏幕文件中的后5行