一:ls指令
语法 : ls [选项] [目录或文件]
功能 :对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
ls不带选项就是显示当前目录下存在的子目录和文件
常用选项:
(1). ls -l
**功能:**列出文件的详细信息.
可以简写为ll
补充 : 文件=文件内容+文件属性
名字前所显示的就是文件的一些属性
(2). ls -a
**功能:**列出目录下的所有文件,包括以 . 开头的隐含文件
-开头表示普通文件
d开头表示目录
.开头表示隐藏文件,所以我们在创建文件时在文件名前加个.就表示创建了一个隐藏文件
补充:
在Linux的任何一个目录里都存在两个隐藏文件,一个是 . 另一个是**..**
- 一个点的表示当前路径,方便我们找到当前目录的文件(可执行文件)
- 两个点表示上级路径,方便路径的回退,可以用它回退到上一级
(3). ls -d
功能:-d 将目录像文件一样显示,而不是显示其下的文件。 如:ls --d 指定目录
(4). ls -1
**功能:**一行只输出一个文件
二:pwd指令
语法 : pwd
功能 :显示用户当前所在的目录
三:cd指令
语法 : cd 目录名
功能 :改变工作目录。将当前工作目录改变到指定的目录下。
选项:
cd .. : 返回上级目录
cd /home/user/linux/ : 绝对路径
cd ../day02/ : 相对路径
cd ~ :进入用户家目
cd - :返回最近访问目录
补充:
Linux 系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件,所以对文件的增删查改其实是对多叉树的修改
- 绝对路径: 从根目录开始定位到指定位置
例如: /etc/rc.d/rc5.d 就是一条绝对路径,定位到了rc.5文件
- 相对路径: 以当前目录为参考点,进行定位
例如:当前位置为var, ./ftp/etc就是一条相对路径,定位到了etc
- 家目录:
对于root账号: 默认家目录为/root root表示超级管理员账号
对于普通用户账号:/home/XXX XXX为新建用户名
四:touch命令
语法 : touch [选项]... 文件...
功能 : 新建一个不存在的文件。
五:mkdir指令
语法 : mkdir [ 选项 ] dirname...
功能 :在当前目录下创建一个名为 "dirname" 的目录
选项:
mkdir -p
**功能:**递归建立多个目录
创建了一个目录a, 目录a中有目录b,目录b中有目录c
六:rmdir指令
rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir****是删除命令。
**语法:**rmdir [目录名]
功能: 删除空目录
选项:
rmdir -p [目录名]
当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除
七:rm指令
rm 命令可以同时删除文件或目录
语法 : rm [-f-i-r-v][dirName/dir]
适用对象 :所有使用者
功能 :删除文件或目录
使用rm删除文件时,会提示是否要删除文件,y表示同意,n表示不同意
选项:
(1). rm -f
f 表示force强制的,不需要询问直接给我删掉这个文件
(2). rm -r
-r表示递归删除,删除目录时要加-r选项,不然不能删,但是这样还是会被提问是否真的删除
所以当要删除一个目录时直接:
rm -rf
表示强制递归删除,这个指令也是最实用的
八:man指令
Linux 的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助
如果是第一次用man指令的话,应该先安装一下,安装指令: yum install -y man-pages
语法 : man [选项] 命令
输入 man ls,就会显示ls的信息
可以通过上下键翻阅,按q就会关闭手册
如果用man指令取搜索man指令
可以发现man手册分为八章
1 是普通的命令
2 是系统调用 , 如 open,write 之类的 ( 通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3 是库函数 , 如 printf,fread
4 是特殊文件 , 也就是 /dev 下的各种设备文件
5 是指文件的格式 , 比如 passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的 , 由各个游戏自己定义
7 是附件还有一些变量 , 比如向 environ 这种全局变量在这里就有说明
8 是系统管理用的命令 , 这些命令只能由 root 使用 , 如 ifconfig
那么这些章节该怎么用呢?
比如我想在man手册中搜索C语言中的printf函数,那应该在第3章中查找
指令: man 3 printf
ps.如果不加章节会默认从第一章从头往后搜,但是碰到叫printf的指令就会停止搜索,搜索到的不一定是第三章中的printf
九:cp指令
语法 : cp [选项] 源文件或目录目标文件或目录
功能 : 复制文件或目录
说明 : cp 指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项 :
-f 或 --force 强行复制文件或目录,不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链
接,则一律视为普通文件处理
-R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理
举例:
当前目录中只存在一个叫test.c的文件
复制出一个文件并且重命名为了data
cp src dst
其中src和dst都可以是绝对路径或者相对路径
比如我当前在/root目录下,我想把其子目录mydir目录中的data文件复制到当前目录下
cp ./mydir/data .
十:mv指令
mv 命令是 move 的缩写,可以用来移动文件或者将文件改名( move (rename) files ),是 Linux 系统下常用的命令,经常用来备份文件或者目录。
语法 : mv [选项] 源文件或目录 目标文件或目录
功能:
(1).重命名 mv 文件名 新的名字
(2)移动文件 mv 文件名 新的路径
将文件移动到新的路径下
具体是实现哪个功能要看第二个参数,如果是一个文件名的话就是重命名,如果是一个目录或者路径的话就是移动文件
选项:
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
十一:cat指令
语法 : cat [选项][文件]
功能 :查看目标文件的内容
常用选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
补充1: 如何在文件中快速写一段代码
cat可以查看文件内容,所以怎么可以在文件中快速写一段代码呢? ------- nano指令
在使用nano前要先安装一下: 在命令行打 yum install -y nano
演示:
先创建一个test.c的源文件,在nano 源文件 就可以写代码了
写完代码以后按ctrl+x 再按y即可退出
写完代码以后就可以用cat指令查看了
扩充:代码都写出了怎么运行呢?(了解一下即可)
第一步:gcc 源文件(编译)
编译完成后会生成一个a.out文件
第二部: ./a.out(相当于执行)
补充二: 输出重定向
Linux有个理念是: 万物皆文件
当我们输入echo+字符串时,会发现字符串被打印到了显示器上,打印在显示器的过程实际相当于在显示器文件中写入内容
但是当我们在后面加一个大于号和文件名,发现字符串并没有打印在显示器上,反而多出了一个叫log.txt的文件
我们用cat查看这个文件的内容,会发现本应该打印在屏幕上的字符串被保存到了文件里,这就是输出重定向,但是每次重定向时文件的内容会被先清空在写入(相当于c语言中的以'w'方式打开文件)
甚至直接 >文件名就可以创建出一个空文件,如果改文件有内容的话还可以达到清空文件的效果
补充三:追加重定向
加两个大于号可以在文件内容后面继续追加内容,相当于c语言中的以'a'方式打开文件
补充四:输入重定向
cat指令后面什么都不加的话,默认是从键盘读取数据,再把数据显示到屏幕上
如果加一个 <文件名的话,就会从这个文件中读取数据,在显示在屏幕上,这就叫输入重定向
可以发现这样也能是实现cat 文件名的效果,但是两者的实现方法是完全不同的
十二:more指令
cat指令虽然可以查看文件内容,但是如果用它查看大文件时,会从头开始迅速显示到文件末尾,并且不能翻阅查看,more指令比cat指令更人性化一点,more 文件后,它会将文件从开开始铺满屏幕,可以按回车向下逐行阅读,缺点是不能向上翻阅查看
语法 : more [选项][文件]
功能 : more 命令,功能类似 cat,可以查看文件内容
十三:less指令
less指令是最适合翻阅大文件的指令,它可以通过上下键上下翻阅
语法: less [参数] 文件
功能 :
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
十四:head指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块, head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。
语法: head [参数]... [文件]...
功能 :
head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。
选项: -n< 行数 > 显示的行数
十五:tail指令
语法: tail[必要参数][选择参数][文件]
功能: 用于显示指定文件末尾内容
选项:
-n<行数> 显示的行数
补充:
**通过head可以查看文件开头的内容,通过tail可以查看文件末尾的内容,那如何查看文件中间的内容呢?**这里就要讲解一下管道:将数据从一端运输到另一端
比如有一个大文件有一万行,想查看9000行到9010行的内容怎么办?
head -9010 文件名 | tail -10
解读:
head -9010 文件名将文件前9010行内容筛选出来了,|就相当于管道,tail -10,查看运输过来的数据的后十行
十六:和时间相关的指令
date
使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
%H : 小时 (00..23)
%M : 分钟 (00..59)
%S : 秒 (00..61)
%X : 相当于 %H:%M:%S
%d : 日 (01..31)
%m : 月份 (01..12)
%Y : 完整年份 (0000..9999)
%F : 相当于 %Y-%m-%d
十七:cal指令
命令格式 : cal [参数][月份][年份]
功能 :用于查看日历等时间信息,如只有一个参数,则表示年份 (1-9999) ,如有两个参数,则表示月份和年份
常用选项 :
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从 1 月 1 号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
十八: Find指令
语法: find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
-name 按照文件名查找文件
十九:grep指令
**语法:**grep [选项] 搜寻字符串文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
- i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 ' 搜寻字符串 ' 内容的那一行
在test.txt文件中储存了如下信息
现在想搜索除带bit的数据,并显示行号,不区分大小写