小白的编程经验(Linux命令)

关于Linux的介绍我就不多说了,百度都能找到,这篇文章主要讲一讲Linux中的一些命令。

一、Linux的文件系统

先简单认识一下Linux的文件系统:

名称用处
/根目录,所有文件都存储在它的下面
~当前用户主目录
.当前目录
. .上一级目录
/bin存储系统命令
/dev存储设备文件
/media多媒体目录、u盘、光驱、挂载的目录
/proc记录了程序运行期间资源的使用情况
/sbin存储超级用户才能使用的系统命令
/tmp存储一些临时文件
/boot存储系统启动相关文件
/etc各种软件的配置文件
/lib存储普通的库文件,静态库(.a结尾)、共享库(.so结尾)
/mnt存储与其他系统进行映射的目录文件
/root超级用户目录
/srv存储一些系统启动后需要提取的数据文件
/usr存储头文件
/home存储用户主目录
/opt存储安装的应用软件
/run存储临时文件
/sys存储系统相关的文件

相对路径和绝对路径:

绝对路径:从根目录开始描述一个位置  例如:/uer/include
相对路径:从当前位置(工作路径)描述另一个位置  例如:./include

二、Linux的系统命令

2.1 常用命令:

下面是一些常用的命令以及部分可选参数。

命令名可选参数用法功能
lsls [目标路径]显示目标路径(不写目标路径,默认为当前目录)下有哪些文件
-als  -a显示当前目录所有文件,包括隐藏文件(以.开头的文件)
-lls  -l显示文件的详细信息
cdcd  [目录路径] 进入目录(不写目录路径,默认为当前用户主目录~)
clearclear清屏(快捷键Ctrl+L)
pwdpwd显示当前所在路径
whoamiwhoami显示当前用户名
1)ls命令:主要用于目录下有哪些文件

例1 ls命令不加目标路径:ls
    当前目录为~,即当前用户主目录,ls命令显示了当前目录下的所有文件。

在这里插入图片描述
例2 ls命令加目标路径:ls /
    ls命令不加目标路径,默认显示当前目录中的文件。添加路径后,显示的是目标路径下的文件。/表示根目录,ls /命令可以显示根目录下的所有文件

在这里插入图片描述
例3 ls命令加参数-a:ls -a
    使用-a参数可以显示隐藏文件,如.bashrc等等

在这里插入图片描述
例4 ls命令加参数-l:ls -l
    使用-l参数可以显示文件的详细信息,如操作权限、内存、最后一次访问时间等等

在这里插入图片描述
例5 ls命令加参数-la:ls -la
    同时使用-a参数和-l参数可以显示所有文件(包括隐藏文件)的详细信息,放在这里只是想说明参数可以通过组合使用达到不同的效果。并且效果与参数顺序无关,也可写作 ls -al,两个命令的效果是一样的。

在这里插入图片描述

2)cd命令:进入目录

例1 cd命令不加目标路径:cd
    cd命令不加目标路径默认跳转到当前用户主目录( ~ ),当前目录是在根目录(/)下,通过cd命令跳转到当前用户主目录( ~ )

在这里插入图片描述
例2 cd命令加目标路径:cd 公共的
    cd命令加目标路径跳转到目标路径下。通过ls命令查看到当前路径下有公共的这个目录,通过 cd 公共的 跳转到公共的目录下

在这里插入图片描述

3)clear命令:清屏

例1 clear命令可以清空窗口的命令:clear
    下面第一张图是还没使用clear命令的状态,按下回车后,就出现了第二张图的情况,前面所有命令都被清空了。Ctrl+L快捷键也可以做到清屏的效果。

在这里插入图片描述
在这里插入图片描述

4)pwd命令:显示当前目录的绝对路径

例1 pwd命令可以显示当前目录的绝对路径:pwd
    当前目录在用户主目录下的公共的目录,通过pwd命令显示当前目录的绝对路径。

在这里插入图片描述

5)whoami命令:显示当前用户名

例1 whoami命令可以清空窗口的命令:whoami
    输入whoami命令,显示当前用户名为ubuntu。这个命令还挺形象的,whoami拆开就是Who am I,我是谁,那么告诉我当前用户名。

在这里插入图片描述

2.2 文件相关的命令

下面是一些关于文件操作的命令,但是并不是所有操作都有自己的命令,换句话说,有些命令的参数不同,可以实现不同的效果。

1)创建文件

touch命令主要用于修改文件信息,当文件不存在时,会创建该文件,因此可以用于创建文件。

例1 使用touch命令创建文件:touch a.txt
    创建前先用ls命令查看当前目录下的文件,再使用touch a.txt 创建a.txt文件,创建后再用ls命令查看当前目录下的文件,可以看到在当前路径下多了一个a.txt文件。

在这里插入图片描述

2)删除文件

rm命令主要用于删除文件,直接删除,不经过回收站。

例1 使用rm命令删除文件:mv a.txt
    创建前先用ls命令查看当前目录下的文件,再使用mv a.txt 删除a.txt文件,创建后再用ls命令查看当前目录下的文件,可以看到在当前路径下a.txt文件已经没有了。

在这里插入图片描述

3)查看文件

查看文件有四个命令,分别是cat、more、head、tail,他们都能查看文件,各自有各自的特点。

例1 使用cat命令查看文件:cat /usr/include/stdio.h
    使用cat命令查看根目录下usr目录下include目录中的stdio.h文件。结果如下,由于文件内容太多,cat命令把文件的内容全部显示到终端上,窗口显示不下。因此cat命令适合内容较少的文件。

在这里插入图片描述
例2 使用more命令查看文件:more /usr/include/stdio.h
    使用more命令查看根目录下usr目录下include目录中的stdio.h文件。结果如下,more命令把文件的内容分页显示到终端上。因此more命令适合内容较多的文件。在查看的时候,可以按回车查看下一行内容,也可以按空格查看下一页内容,按q退出查看。

在这里插入图片描述
例3 使用head命令查看文件:head /usr/include/stdio.h
    使用head命令查看根目录下usr目录下include目录中的stdio.h文件。结果如下,head命令只把文件的前十行内容显示到终端上。
在这里插入图片描述

例4 使用tail命令查看文件:tail /usr/include/stdio.h
    和head命令相反,使用tail命令查看根目录下usr目录下include目录中的stdio.h文件。结果如下,tail命令只把文件的后十行内容显示到终端上。

在这里插入图片描述

4)复制文件

cp命令可以把文件1复制到文件2中,如果文件2不存在将创建文件2。

例1 使用cp命令复制文件
    使用ls命令查看当前目录,可以看到当前目录下有一个a.txt文件。再用ls命令看一眼公共的目录,下面啥也没有。
    执行命令cp a.txt ./公共的 ,将当前目录下的a.txt文件复制到公共的目录下面。注意这里没有指定文件名称,复制文件将以原来的文件名命名。再次使用ls命令查看公共的目录,可以看到目录下面多一个a.txt文件。
    执行命令cp a.txt ./公共的/b.txt,将当前目录下的a.txt文件复制到公共的目录下面的b.txt文件中。这里指定了文件名称,复制文件将以给定的文件名命名。再次使用ls命令查看公共的目录,可以看到目录下面多一个b.txt文件。

在这里插入图片描述

5)移动文件/重命名文件

mv命令可以把文件移动到另一个文件中,相当于剪切。

例1 使用mv命令移动文件
    使用ls命令查看当前目录,可以看到当前目录下有一个a.txt文件。再用ls命令看一眼公共的目录,下面啥也没有。
    执行命令mv a.txt ./公共的 ,将当前目录下的a.txt文件移动到公共的目录下面。注意这里没有指定文件名称,移动的文件将以原来的文件名命名。再次使用ls命令查看,可以看到公共的目录下面多一个a.txt文件,而用户主目录中少了一个a.txt文件。
    执行命令mv ./公共的/a.txt b.txt,将公共的目录下的a.txt文件移动到用户主目录下面的b.txt文件中。这里指定了文件名称,复制文件将以给定的文件名命名。再次使用ls命令查看,可以看到用户主目录下面多一个b.txt文件,而公共的目录下a.txt文件没有了。
在这里插入图片描述
例2 使用mv命令重命名文件
    使用mv命令可以移动文件,并可以给一个新的名字。如果把文件从当前位置移动到当前位置,但是给另一个名字命名文件,即可实现文件重命名。
    使用ls命令查看当前目录,可以看到当前目录下有一个b.txt文件。
    执行命令mv b.txt a.txt ,将当前目录下的b.txt文件原地移动。并且指定了文件名称,移动的文件将以原来的文件名命名。再次使用ls命令查看,可以看到当前目录下面少了一个b.txt文件,多一个a.txt文件,表示文件重命名成功。
在这里插入图片描述

2.3 目录相关的命令

下面是一些关于目录相关的命令。

1)创建目录

例1 使用mkdir命令创建目录
    使用mkdir命令可以创建目录,如果目录已存在会报错,使用方法是mkdir 目录名称。
    使用ls命令查看当前目录,执行mkdir YHF,在当前目录下创建YHF目录。再次使用ls命令查看当前目录,可以看到多了一个YHF目录
在这里插入图片描述
例2 使用mkdir命令创建多级目录
    使用mkdir命令不仅可以创建一个目录,也可以一次创建多级目录(目录里面嵌套着目录),使用方法是mkdir -p 目录名称\目录名称\目录名称… 。
    依旧先使用ls命令查看当前目录,执行mkdir Y/H/F,不使用参数p的情况下,终端给出了报错信息,无没有那个文件夹或目录。系统认为你要创建的是./Y/H目录下的F目录,但是系统找不到Y/H目录,所以会报错。加上-p参数再次执行,发现可以成功执行并没有报错。使用cd Y/H/F命令可以进入目录。-p参数可以循环创建目录,在当前目录下创建Y目录,然后进入Y目录下创建H目录,最后进入H目录下创建F目录,这样就避免了找不到目录的报错。
在这里插入图片描述

2)删除目录

例1 使用rmdir命令删除目录
    使用rmdir命令可以删除目录,但是只能删除空目录,使用方法是rmdir 目录名称。
    使用ls命令查看当前目录,在当前目录下有Y目录和YHF目录,执行rmdir Y,显示删除失败,因为目录非空。用ls命令查看当前目录,显示当前目下Y目录确实没被删除。
    执行rmdir YHF,成功删除。用ls命令查看当前目录,显示当前目录下的YHF目录被删除。

在这里插入图片描述
b>例2 使用rm命令删除目录
    目录其实也是一类特殊的文件,也可以使用rm命令删除。使用rm目录删除目录需要使用参数-rf ,他可以删除非空目录,使用方法是rm -rf 目录名称。
    使用ls命令查看当前目录,在当前目录下有Y目录(Y目录中有内容),执行rm -rf Y,成功删除。用ls命令查看当前目录,显示当前目录下的Y目录被删除。

在这里插入图片描述

3)复制目录

cp命令也可以把目录1复制到目录2下,但是需要使用参数-rf 。

例1 使用cp命令复制目录
    使用ls命令查看当前目录,可以看到当前目录下有一个YHF目录。再用ls命令看一眼文档目录,下面啥也没有。
    执行命令cp YHF ./文档 ,在不使用参数-rf的情况下,无法进行复制操作。查看文档目录中确实没有YHF目录,即复制失败。
    执行命令cp -rf YHF ./文档 ,在使用参数-rf后,查看文档目录中出现了YHF目录,即复制成功。

在这里插入图片描述

4)移动目录/重命名目录

mv命令可以把目录移动到另一个目录中,相当于剪切。

例1 使用mv命令移动目录
    使用ls命令查看当前目录,可以看到当前目录下有一个a.txt文件。再用ls命令看一眼公共的目录,下面啥也没有。
    执行命令mv a.txt ./公共的 ,将当前目录下的a.txt文件移动到公共的目录下面。注意这里没有指定文件名称,移动的文件将以原来的文件名命名。再次使用ls命令查看,可以看到公共的目录下面多一个a.txt文件,而用户主目录中少了一个a.txt文件。
    执行命令mv ./公共的/a.txt b.txt,将公共的目录下的a.txt文件移动到用户主目录下面的b.txt文件中。这里指定了文件名称,复制文件将以给定的文件名命名。再次使用ls命令查看,可以看到用户主目录下面多一个b.txt文件,而公共的目录下a.txt文件没有了。
在这里插入图片描述
例2 使用mv命令重命名文件
    使用mv命令可以移动文件,并可以给一个新的名字。如果把文件从当前位置移动到当前位置,但是给另一个名字命名文件,即可实现文件重命名。
    使用ls命令查看当前目录,可以看到当前目录下有一个b.txt文件。
    执行命令mv b.txt a.txt ,将当前目录下的b.txt文件原地移动。并且指定了文件名称,移动的文件将以原来的文件名命名。再次使用ls命令查看,可以看到当前目录下面少了一个b.txt文件,多一个a.txt文件,表示文件重命名成功。
在这里插入图片描述

2.3 其他命令

1)压缩/解压文件

    可以使用tar命令通过添加不同参数对文件进行压缩、解压。

例1 使用tar命令压缩文件
    使用tar命令加上-zcvf参数可以实现压缩文件的效果。
    使用ls命令查看当前目录,可以看到当前目录下有一个a.txt。执行命令tar -zcvf a.tar.gz ./a.txt,再次查看当前目录,发现当前目录下多了一个a.tar.gz压缩包。

在这里插入图片描述

例2 使用tar命令解压文件
    使用tar命令加上-zxvf参数可以实现解压文件的效果。
    使用ls命令查看当前目录,可以看到当前目录不存在a.txt。执行命令tar -zxvf a.tar.gz ,再次查看当前目录,发现当前目录下多了一个a.txt文件。

在这里插入图片描述

2)修改文件权限

    可以使用chmod命令修改文件权限。先简单介绍一下文件权限:
    文件权限是指用户能对文件的操作,不同用户有不同的文件权限。文件权限通常分为读、写、执行,可用一个三位二进制数表示(如:000、001、…111),转换成八进制就是0到7(等下命令中会用到)。1表示有权限,0表示没有权限,举个例子:101表示,该用户对该文件只有读和执行的权限,而没有写的权限。通常文件的权限分为三种,不同的身份对于不同的权限:拥有者权限(owner),拥有者同组权限(group),其他用户权限(others)。用ls -l命令可以查看到当前文件的权限,如下图所示。下图展示权限的方式是使用九位表示法,即分三组权限,每组权限中读、写、执行操作分别用r、w、x表示,有该权限就用对字母表示,无权限则用 - 表示。

在这里插入图片描述

例1 使用chmod命令修改文件权限
    使用chmod命令修改文件权限,使用方法:chmod mmm 文件名 。mmm是一个三位八进制数,表示三组不同身份的权限,依次是拥有者权限(owner),拥有者同组权限(group),其他用户权限(others),其中m的值是一个0到7的八进制值。
    使用ls -l命令查看目录下的文件权限,可以看到a.txt的文件权限是rw- rw- r–,转换成二进制就是110 110 100,再转换成八进制就是664。现在要给该文件的所有用户都加上执行权限,即变成rwx rwx r-x。二进制是111 111 101,八进制是775,chmod命令中需要使用八进制。执行命令chmod 775 a.txt ,再用ls -l查看文件的权限,可以看到a.txt都加上了执行权限。

在这里插入图片描述
例2 使用chmod命令统一修改文件权限
    如果要对三个组的权限都进行统一修改,除了上面的方法外,也可以使用这种的格式:chmod +/-rwx 文件名。 +/-表示添加或减去权限,rwx表示要统一操作的权限,需要修改什么写什么。
    使用ls -l命令查看目录下的文件权限,可以看到a.txt的文件权限是rwx rwx r-x。现在要给该文件的所有用户都去掉读取权限和执行权限,即变-w- -w- —。执行命令chmod -rx a.txt ,再用ls -l查看文件的权限,可以看到a.txt的执行权限变成了-w- -w- —。

在这里插入图片描述

3)查找文件

    可以使用find命令查找文件。使用方法是:find 位置 条件
例1 使用find命令查找文件
    使用find命令查找当前用户主目录(~)下的YHF目录:find ~ -name YHF ,执行命令后将当期用户主目录下的所有YHF目录显示出来了

在这里插入图片描述

4)过滤内容

    可以使用grep命令来匹配文件中的某个信息,用以过滤内容。使用方法是:grep “过滤关键词” 文件名
例1 使用grep命令过滤内容
    执行命令grep “printf” /usr/include/stdio.h,筛选头文件stdio.h中关于printf的内容。

在这里插入图片描述

5)查找帮助手册

    可以使用man命令来查找帮助手册。使用方法是:man [章节数] 关键词 ,按q退出查看。
    由于部分内容可能既在系统命令里出现,有在系统函数中出现,不便于管理,因此采用的是分章节管理内容,常见的章节有: 第一章节:系统命令,第二章节:系统函数,第三章节:C标准库函数 等等。

例1 使用man命令查找printf函数的文档
    执行命令man printf,尽管也是printf的文档,但并不是我们要找的printf函数的文档信息。这是系统命令中的printf命令。

在这里插入图片描述
    如果需要查找printf函数的文档,需要加上章节数,C标准库函数在第三章节,因此需要加上3。执行命令man 3 printf,可以看到这次显示的就是关于printf函数的信息。

在这里插入图片描述

2.4 重定向、管道、通配符

1)重定向

    可以使用重定向的方法将命令的执行结果写入到文件中。使用方法是:命令 > 文件名 或者 命令 >> 文件名,两者都会将命令的结果写入l文件中,如果文件不存在将创建文件;它们区别在于:> 如果文件存在则覆盖内容(清空并写入),而 >> 如果文件存在则追加内容(不覆盖原有内容,在最后附加内容)。

例1 使用重定向写入文件
    还是先使用ls查看当前目录下的文件,可以看到只有一个YHF目录,执行命令ls>a.txt,再次使用ls查看目录文件,可以看到多了一个a.txt文件。使用cat查看a.txt文件的内容,显示是当前目录的内容(a.txt也写在其中,所以是先创建a.txt文件再执行ls命令)。
    使用touch命令创建一个b.txt文件,再执行 ls > a.txt ,可以看到a.txt中的新内容将原有内容进行了替换。执行 ls >> a.txt,可以看到a,txt中的内容仍存在,新内容附加在原有内容的后面。

在这里插入图片描述

2)管道

    管道将两个命令连接起来,前一个命令作为后一个命令的数据源,可以多个管道一起使用。

例1 使用管道查询所有文件名中包含stdio的文件
    执行命令 sudo find / | grep “stdio” 。sudo 是以超级权限执行命令,因为在根目录(/)中执行大多数操作都需要特殊权限。

在这里插入图片描述
    sudo find / | grep "stdio"相当于两个命令,sudo find / > a.txt 和 grep “stdio” a.txt 。先将根目录(/)下的所有文件写入到a.txt文件中,在使用grep命令在a.txt中过滤关于stdio的内容。就等同于前面命令的结果作为后面命令的数据源。

在这里插入图片描述

2)通配符

    使用通配符可以模糊执行命令。常用的通配符有以下几种:

  1. 星号(*)代表匹配零个或多个字符。
    例1 使用星号匹配文件
        执行命令 find ./*.txt,查找所有.txt结尾的文件。也可以执行find ./*,查找所有文件。
    在这里插入图片描述

  2. 问号(?)代表匹配单个字符。
    例2 使用问号匹配文件
        执行命令 find ./a?.txt,查找所有文件名是两位且第一位是a的文件。也可以执行find ./??.txt,查找所有两位名字文件。总而言之就是匹配一个字符。
    在这里插入图片描述

  3. [0-9]:中括号内加上数字[0-9]代表匹配0~9之间的单个数字的字符。
    例3 使用[0-9]匹配文件
        执行命令 find ./a[0-9].txt,查找所有文件名是两位且第二位是数字0-9的文件。也可以输入其他范围的值,如 find ./a[2-3].txt,查找所有文件名是两位且第二位是数字2-3的文件。
    在这里插入图片描述

  4. [a-z]:中括号内加上字母[a-z]代表匹配a-z之间的单个字母的字符。
    例4 使用[a-z]匹配文件
        执行命令 find ./a[0-9].txt,查找所有文件名是两位且第一位是字母a-z的文件。
    在这里插入图片描述

  5. [abc]:中括号内加上字母[abc]则是代表匹配a、b、c三个字符中的任意一个字符。建议用“,”号分开
    例5 使用[abc]匹配文件
        执行命令 find ./a[a,1,3][a,1,3].txt,查找所有文件名是两位且字符都在{a,1,3}集合中的文件。
    在这里插入图片描述

结语:

    希望这篇文章对你有所帮助。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值