Linux基本指令

Linux目录结构

Linux的目录结构是一个树形结构。Windows系统可以拥有多个盘符,如C盘、D盘、E盘。而Linux没有盘符这个概念,只有一个根目录/,所有文件都在它下面。如下图所示:
请添加图片描述

Linux路径的描述方式
在Linux系统中,路径之间的层级关系,使用:/来表示,如D:\C语言代码\imitate_function\imitate_function
而在Windows中,路径直接的层级关系,使用\来表示,如/usr/tmp/hello.txt。开头的/表示根目录,后面的/表示层级关系。

Linux命令基础

在学习基本指令之前,我们要先知道什么是命令和命令行。
命令行:即Linux终端,是一种命令提示符页面。以纯“字符”的形式操作系统,可以使用各种字符化命令对系统发出指令操作。
命令:即Linux程序。一个命令就是一个Linux的程序。命令没有图形化页面,可以在命令行(终端中)提供字符化的反馈。

Linux命令格式基础

无论是什么命令,用于什么用途,在Linux中,命令有其通用的格式:
command [-options] [parameter]

  • command:命令本身
  • -options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
  • parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等
    语法中的[],表示可选的意思。
    比如:ls -l /home/hello.txt,ls是命令本身,-l是选项,/home/hello.txt是参数

Linux基本指令

Linux的指令非常多,我们也不可能全部都记住,假如我们忘了一些指令具体的作用是什么的话,可以查看手册。对于C/C++有一个官方文档,可以帮助我们查看一些函数接口的作用、功能等。而对于Linux也有文档可以查看,于是我们先学习第一个操作指令。

man指令

我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是man
语法: man [选项] 命令。
常用选项:

  • k 根据关键字搜索联机帮助
  • num 只在第num章节找
  • -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕
    请添加图片描述

操作方法如上图所示。
使用man时的操作键:

操作键功能
空格键显示手册的下一屏
Enter键一次滚动手册页的一行
b回滚一屏
f前滚一屏
q退出手册
/word搜索word字符串

解释一下,man手册分为8章

  1. 是普通的命令
  2. 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
  3. 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
  4. 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
  5. 是给游戏留的,由各个游戏自己定义
  6. 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
  7. 是系统管理用的命令,这些命令只能由root使用,如ifconfig

ls指令

单词全称:list
语法: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:

参数含义
-a显示指定目录下所有子目录与文件,包括隐藏文件
-l以列表方式显示文件的详细信息
-h配合 -l 以人性化的方式显示文件大小,列出文件大小,如K/M/G
-d将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-k以 k 字节的形式表示文件的大小。ls –alk 指定文件
-r对目录反向排序
-R列出所有子目录下的文件。(递归)
-1一行只输出一个文件

注意:以 . 开头的文件为隐藏文件,需要用 -a 参数才能显示
示例:
请添加图片描述
语法中的选项是可以组合使用的,比如学习中的-a和-l可以组合应用。

ls -l -a
ls -la
ls -al

上述三种写法,都是一样的,表示同时应用-l和-a的功能


cd指令

单词全称:change directory
语法:cd 目录名
功能:更改当前的工作目录。将当前工作目录改变到指定的目录下。
cd命令无需选项,只有参数,表示要切换到哪个目录下;cd命令直接执行,不写参数,表示回到用户的根目录下

命令含义
cd切换到当前用户的主目录(/home/用户目录)
cd ~切换到当前用户的主目录(/home/用户目录)
cd .保持在当前目录不变
cd …返回到上级目录
cd -可以在最近两次工作目录之间来回切换

示例:
请添加图片描述

相对路径和绝对路径
相对路径:以当前目录为起点,描述路径的一种写法,路径无需以/开头
绝对路径:以根目录为起点,描述路径的一种写法,路径以/开头


pwd指令

单词全称:print work directory
语法: pwd
功能:查看当前所在的工作目录
示例:
请添加图片描述

我们先用cd /boot进入到boot目录中,然后使用pwd指令来查看当前目录,显示结果就是/boot目录
如果你是root用户,使用pwd命令后显示的是/root;而如果你是普通用户的话,显示的结果是/home/用户名,这里的用户名是你创建普通用户的名字。


mkdir指令

单词全称:make directory
语法:mkdir \[选项] dirname
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:

  • -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
    示例:
    请添加图片描述

新建目录的名称 不能与当前目录中 已有的目录或文件 同名


touch指令

语法:touch 文件
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。


cat指令

语法:cat [选项] [文件]
功能: 查看目标文件的内容
cat不适合看大文本,适合看小文本,至于为什么,可以接着往下看。

命令含义
-b对非空输出行编号
-n对输出的所以行编号
-s不输出多行空行

示例:
先把内容输入到文件当中
请添加图片描述

选项区别:

请添加图片描述
请添加图片描述

more指令

语法:more \[选项] \[文件]
功能:more支持翻页,如果文件内容过多,可以一页一页的展示
基本选项和man指令一样,这里就不在过多展示了,直接看示例吧。
示例:
我们先用一个脚本指令写一个从1到10000行的hello Linux到test.txt文件当中。
请添加图片描述

当我们使用cat指令查看内容时,会直接显示到最后,而如果想看最开始的内容,则需要慢慢的往前翻,非常的不方便,所以上面说过cat指令不适合看大文件。
而如果想看前面的内容就可以使用more指令:

请添加图片描述

cp指令

单词全称:copy
语法:cp \[选项] 源文件或目录 目标文件或目录
功能:复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
常用选项:

命令含义
-f或–force强行复制文件或者目录,不论目的文件或目录是否已经存在
-i或–interactive覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R或–recursive递归处理,将指定目录下的文件及子目录一并处理

mv指令

单词全称:move
语法:mv [选项] 源文件或目录 目标文件或目录
功能:

  1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
  2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
  3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中

rm指令

单词全称:remove
语法:rm [选项] 参数1 参数2
功能:删除文件或目录
常用选项:

选项含义
-f即文件属性为只读,亦直接删除
-i删除前逐一询问确认
-r删除目录及其下所有文件

普通用户删除内容不会弹出提示,只有root用户删除内容时会有提示,所以一般用户用不到-f选项。
参数1、参数2 表示要删除的文件或者文件夹路径,按照空格隔开。

  • 示例:
    请添加图片描述

rm命令支持通配符*,用来做模糊匹配。符号*表示通配符,即匹配任意内容(包含空),示例:

  • test*,表示匹配任何以test开头的内容
  • *test,表示匹配任何以test结尾的内容
  • *test*,表示匹配任何包含test的内容
    比如说你很多以.txt结尾的文件,那么就可以用rm *.txt来删除所有文件。

rmdir指令
rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。
语法:rmdir \[-p] \[dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:-p :当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除


less指令

  • less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。
  • less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看
  • 但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!
  • 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
    语法:less [参数] 文件
    功能:less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
    常用选项:
选项含义
-i忽略搜索时的大小
-N显示每行的行号
/向下搜索“字符串”的功能
?向下搜索“字符串”的功能
n重复前一个搜索(与/或?有关)
N反向重复前一个搜索(与/或?有关)
q退出

head指令

head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾
语法: head [参数]… [文件]…
功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行
选项:-n<行数>:显示指定的行数

  • 示例:
    请添加图片描述

tail指令

tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail - f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容
语法: tail [必要参数] [选择参数] [文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件
选项:

  • f 循环读取
  • -n<行数> 显示行数
  • 示例
    请添加图片描述
    这个test.txt文件有3000行内容,比如说我们想看第1001行到1020行的内容,总共有2种方法可以看到。
    方法1:head -1020 test.txt > temp.txt,然后再tail -20 temp.txt
    就是先把前1020行的内容重定向到temp.txt文件中,然后再从temp.txt文件中从尾部取20行。
    方法2:head -1020 test.txt | tail -20
    具体解释在后面的讲解中会学习,可以先认识一下。
    请添加图片描述

which指令

我们在前面学习的Linux命令,其实它们的本体就是一个个的二进制可执行程序。和Windows系统中的.exe文件,是一个意思。我们可以通过which命令,查看所使用的一系列命令的程序文件存放在哪
语法:which 要查找到命令

  • 示例:
    请添加图片描述

find命令

  • Linux下find命令在目录结构中搜索文件,并执行指定的操作。
  • Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
  • 即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限
  • 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。

语法:find 起始路径 -name “被查找文件名”
功能:用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:

选项含义
find / -name test.txt查找当前目录下名为 txt.sh 的文件
find / -name “*.txt”查找当前目录下后缀为 ‘.txt’ 的文件
find /home/user1 -name *.txt在目录 ‘/ home/user1’ 中查找带有’.txt’ 结尾的文件
find /etc -type f查找 etc 目录下的所有文件
find /etc -type d查找 etc 目录下的所有文件夹
find /usr/bin -type f -atime +100查找在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10查找在10天内被创建或者修改过的文件
find /home -size 10M查找 home 目录下等于 10M 的文件
find /home -size +10M查找 home 目录下大于 10M 的文件
find / -mtime -3查找 3 天内修改过的文件
find / -atime -3查找 3 天内访问过的文件

注意:按文件大小查找文件的话,把-name改成-size,+和-表示大于和小于,而且数字后面要跟单位,如k(小写字母)表示kb、M表示MB、G表示GB。

  • 示例
    请添加图片描述

grep命令

语法:grep [选项] “关键字” 文件路径
功能:在文件中搜索字符串,将找到的行打印出来
常用选项:

选项含义
-i忽略大小写的不同,所有大小写视为相同
-n顺便输出行号
-v反向选择,亦即显示出没有“关键字”内容的那一行
-c输出文件中匹配“关键字”的数量
-o只输出匹配的内容“关键字”
-w只匹配“关键字”这个字符串的行
  • 示例:
    请添加图片描述
    先用touch指令创建一个文件,然后向这个文件输入三行内容,最后用grep指令查找相关内容。

管道符

在tail指令一节,我们知道了管道符这个符号。那么管道符的含义是:将管道左边命令的结果,作为右边命令的输入。其中|叫做管道符。可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里 | 的左右分为两端,左端塞东西(写),右端取东西(读)。

  • 示例:
    请添加图片描述
    cat test.txt指令的结果作为右边grep hello命令的输入。

echo命令

语法:echo 输出的内容
功能:显示输出的内容
无需选项,只有一个参数,表示要输出的内容,输出的内容默认是字符串形式并且会自动换行,要是复杂的内容可以用""包围。
重定向符>和>>

  • >:将左侧命令的结果,覆盖写入到符号右侧指定的文件当中
  • >>:将左侧命令的结果,追加写入到符号右侧指定的文件当中
  • 示例:

重要的几个热键[Tab],[ctrl]-c, [ctrl]-d

  • [Tab]按键—具有命令补全档案补齐的功能
  • [Ctrl]-c按键—让当前的程序停掉
  • [Ctrl]-d按键—通常代表着:**键盘输入结束(End Of File, EOF 戒 End OfInput)**的意思;另外,他也可以用来取代exit

历史命令记录

在学习Linux中,我们需要使用很多的命令,有时候一条指令会很长,当下一次使用这个指令的时候,又要重新写一遍。所以Linux供了一些快捷键来帮助我们提高效率。就比如说"历史命令记录"可以让你快速找到以前使用的指令,直接使用。

  1. 使用快捷键方法
快捷键描述
↑(上方向键)查看上一条命令
↓(下方向键)查看下一条命令
ctrl+p查看历史命令记录中的上一条命令
ctrl+n查看历史命令记录中的下一条命令
ctrl +r进入反向搜索模式
Alt+>移动到历史命令记录末尾
  1. 使用history方法
    使用history命令可以列出所有使用过的命令并为其编号。这些信息被存储在用户主目录的.bash_history文件中,这个文件默认情况下可以存储1000条历史命令记录。
    在这里插入图片描述

语法:history [选项]

  • 示例:

history 5 #查看最近的5条历史命令记录
history -c #清空所有历史命令记录

  1. 使用历史命令方法
    使用“!+编号”可以执行特定编号对应的历史命令,使用fc命令可以编辑历史命令。
使用实例功能描述
!!重复执行上一条命令
!n执行历史命令记录中的第n条命令
!w执行上一条w命令(或执行以w开头的历史命令)
fc编辑并执行上一条历史命令
fc -2编辑并执行倒数第2条历史命令
!-n执行倒数第n条命令
!$使用前一条命令最后的参数

find指令

语法:find 查找范围 [条件]
功能:查找相关的文件。

选项含义
-name “文件名”按名字查找(例如:find / -name “test.txt” (查找到是在当前目录下test.txt文件)
-type 文件类型按文件类型查找。例如:find /var -type d(在 /var 目录中查找所有目录)
-size [+/-]大小按大小查找(例如:find /home -size +10M(在 /home 目录中查找大于 10MB 的文件))
-mtime [+/-]天数按修改时间查找(例如:find /application/log/ -mtime +0 -type d (查找/application/log下一天前的日志,类型为目录))
-atime [+/-]天数按访问时间查找(例如:find /var/log -atime +30(在 /var/log 目录中查找超过30天未访问的文件))
-user 用户名按用户查找(例如:find /home -user alice(在 /home 目录中查找所有属于用户 alice 的文件))
-perm 权限按权限查找(例如:find /etc -perm 644(在 /etc 目录中查找权限为 644 的文件))
-group 组名按用户组查找(例如:find /home -group developers(在 /home 目录中查找所有属于组 developers 的文件))

删除乱码文件

有些时候,我们会遇到文件名称是乱码的,我们想要按名字删除的话,还不好删。这时可以通过删除inode的方法来处理。
示例:

  1. 使用ls -i命令找到文件的inode号。
  2. 使用find命令根据inode号删除文件。find . -inum 12345 -delete
    这种方法适用于删除文件或者空目录。如果是非空目录,需要使用其他参数。请添加图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值