目录
前言
Linux常用的基本命令
ls命令
pwd命令
cd命令
touch命令
mkdir命令(重要)
tree命令
rmdir命令
rm 命令(重要)
man 命令(重要)
cp命令(重要)
mv指令(重要)
总结
本文章将会为大家介绍一些Linux下常用的基本命令,相信通过这篇文章可以很快让刚接触到Linux的小伙伴们上手起来。那么我们废话不多说,开始我们今天的内容。
语法:ls [选项] 目录或文件(不写默认为当前目录)
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。通俗来讲就是列出目录内容(List Directtory Contents),运行它就是列出文件夹的内容,可能是文件也可能是文件夹。
常用选项:
- 不带选项 ,不带选项的ls命令只能光秃秃地列出文件和目录,我们是不能看到像文件类型、大小、修改日期和时间、权限以及链接这样具体的信息的。
- -a 列出目录下的所有文件,包括以 . 开头的隐含文件。(提示:在Linux下,以“.”开头的文件为隐藏文件,只用ls是看不到该目录下的隐藏文件的,必须在ls后面加上-a选项,即可看到隐藏文件)
- -d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
- -i 输出文件名对应的inode(中文译名为"索引节点")号码。每个文件都有一个自己的inode号码,操作系统用inode号码来识别不同的文件。inode号码就如同人的身份证一样,用户就相当于是你爸,文件就相当于你自己,你爸通过你的名字来找你,警察就相当于操作系统,警察会通过你的身份证号来找你。如:ls -i 指定文件
- -k 以 k 字节的形式表示文件的大小。 如:ls –alk 指定文件
- -l 将文件或目录可以显示的属性尽可能多的显示出来。(ls -l 命令等价于 ll 命令)一个文件是由两个部分组成的,一个是内容数据,比如你自己写进文件里面的代码,这就是内容数据;另一个是属性数据,比如文件或目录的大小、修改日期和时间、文件或目录的名字以及文件的属主和它的权限等,这些就是属性数据。而 ls -i 的作用就是将文件或目录可以显示出来的属性尽可能多的显示出来。
- -1 一行只输出一个文件。
- -n 用数字的 UID,GID 代替名称。(介绍 UID, GID)
- -F 在每个文件名后附上一个字符以说明该文件的类型,“*” 表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
- -r 对目录反向排序。
- -t 以时间排序。
- -s 在文件名前输出该文件的大小。(大小排序,如何找到目录下最大的文件)
- -R 列出所有子目录下的文件。(递归)
- 注意:Linux下所有的命令后面都可以带多个选项,例如:ls -a -l -i 或 ls -ali 这两种表示方法的效果是一样的,喜欢哪种就用哪种。
语法: pwd
功能:显示用户当前所在的目录
常用选项: 无
语法: cd 目录名
功能:改变工作目录,将当前工作目录改变到指定的目录下。
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
举例:
- cd .. 返回上级目录(这里的 ".." 也属于隐藏文件,表示上一级目录,"." 表示当前目录)。
- cd /home/xxx/linux/ 使用绝对路径进入linux这个目录。绝对路径就是从根目录开始一直到你想要去的哪个目录,途径的所有目录都要写出来。(绝对路径很少在日常操作中使用,一般会出现在比较正式的场合,比如配置文件中)。
- ../day03/ 使用相对路径进入day03这个目录。相对路径就是从当前你所在的目录开始一直到你想要去的哪个目录,途径的所有目录都要写出来。(相对路径一般用于日常操作,比较简单)。
- cd ~:进入用户家目录(也就是图中的xxx,每一个用户都有一个属于自己的用户家目录,而root用户默认的用户家目录在/root下)。
- cd -:返回最近访问目录。如果你当前访问的是day03这个目录,下一刻你用cd到了day01这个目录,这时你用 cd - 就直接返回到day03这个目录。
- 注意:目录与目录之间需要用路径分隔符 “/” 隔开。
语法:touch [选项]... 文件...
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项:
- -a 或 --time=atime 或 --time=access 或 --time=use 只更改存取时间。
- -c 或 --no-create 不建立任何文档。
- -d 使用指定的日期时间,而非现在的时间。
- -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
- -m 或 --time=mtime 或 --time=modify 只更改变动时间。
- -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
- -t 使用指定的日期时间,而非现在的时间。
提示:在入门阶段一般很少用到上面这些选项,只需会新建一个不存在的文件即可,例如: touch ../day1/test.txt,即在day1这个目录下新建一个名为 test.txt 的文件,如果只想在当前目录下新建这个文件,只用touch test.txt 即可。
语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname” 的目录
常用选项:
-p 或 --parents 后面可以跟一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。
举例:如果aaa、bbb、ccc这几个目录都不存在的话,系统将会自动把这几个目录都建立。
mkdir -p aaa/bbb/ccc
语法:tree 路径(默认为当前目录)
功能:以树状的结构把目录显示出来,包括该目录下的所有子目录和文件。
用前所需:如果你发现用不了tree命令,不要害怕,可能只是你没有安装这个命令,复制下面这段命令下载tree。(yum命令我后面会讲到,这里不要着急,可以直接先用)
yum install -y tree
tree的效果:看起来是不是很漂亮,那还在等什么呢赶快去试一试吧。
# tree . └── test ├── css ├── img │ └── head └── js
介绍:rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。
语法:rmdir [选项][dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录(注意:如果该目录不为空是删不了的哦)
常用选项:
- -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
介绍:rm命令可以同时删除(remove)文件或目录
语法:rm [选项][dirName/dir]
适用对象:具有当前目录操作权限的所有使用者
功能:删除文件或目录
常用选项:
- -f 即使文件属性为只读(即写保护),也可以强制(force)删除。
- -i 删除前逐一询问确认。
- -r 删除目录及其下所有文件,也就是递归(recursion)删除。在删除目录的时候需要用到,如果在删除目录的时候没加 -r ,是删除不了目录的。
举例:
- rm -rf mytest 强制删除mytest这个目录及其下所有文件。
- rm -rf *.c 强制删除以 ".c" 结尾的文件(提示:“*” 是一种通配结构)。
- rm -rf / 强制删除根目录,只要你有这个操作权限,你就可以删,但是不建议尝试,因为Linux下是没有回收站的,一旦你把根目录给删了,是很难找回来的,这样你的Linux也就完了,只有重装系统了。当然好奇的小伙伴还是可以去尝试,大不了重装系统,哈哈开个玩笑。
介绍:由于Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助了解各个命令的作用,访问Linux手册页的命令是就是 man。当然如果你连man命令的作用都不知道也可以用man命令来查询man命令的作用,也就是man man。
语法:man [选项] 命令
用前所需:由于我们很多小伙伴用的是云服务器,man命令可能是简化版的不完整,这时我们只需要执行下面命令就可以下载完整版的了。
yum install -y man-pages
举例:
man手册的目录结构:
名称 含义 NAME 名称 SYNOPSIS 命令语法 DESCRIPTION 命令完整描述 AUTHOR 作者 REPORTING BUGS 报告的错误 COPYRIGHT 版权 SEE ALSO 查看相关信息 提示:一般我们查询命令的时候会重点看第2项和第3项。
具体分析:
我们观察上图左上角可以发现MKDIR(1),这里的(1)是哪里来的,又代表什么意思呢?
原因是我们的man手册将各类命令分为9个章节,每个章节可以查询到的内容也会有所不同,这里的(1) 就代表是第一个章节里面的内容。
通过man man 命令我们可以查看到 man 各个选项的作用和各个章节的所有内容等man的所有用法,下面具体讲解各个章节的含义。
章节序号 含义 1 可执行文件或者shell命令 2 系统调用,如open,write之类的(通过这个,可以很方便的查到调用这个函数,需要加什么头文件) 3 库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件 4 特别的文件(通常在/dev) 5 指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义 6 是给游戏留的,由各个游戏自己定义 7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明 8 是系统管理用的命令,这些命令只能由root使用,如ifconfig 9 内核例程(非标准例程) 现在我们知道,上面MKDIR(1)里面的(1)就表示man在1号章节里面寻找mkdir这个命令。
注意:如果没有指定man在哪个章节中寻找,将会按照默认的顺序查找这些章节中的命令,只返回含有该命令的第一个文档,如果指定章节,则只会在指定章节中寻找该命令,所以有时候直接man而不指定章节则可能不会找到自己想要的文档。
举例:
常用选项:
- -k 根据关键字搜索联机帮助
- num(章节序号) 只在第num章节找
- -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按 下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
额外补充:
有时候我们会遇到章节序号后面带字母P的,这里的P表示 POSIX 的意思,所以这里表示的就是POSIX版本的手册,例如:
退出man手册:
到了最后那么如何退出man手册呢?非常简单,只需要轻轻按下键盘上的“q”即可退出man。
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
适用对象:具有目录操作权限的所有使用者
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。cp也可以将一个文件里面的内容复制到另外一个文件,如果该文件已有内容,则复制后原内容将会被新内容覆盖。
常用选项:
- -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在。
- -i 或 --interactive 覆盖文件之前先询问用户。
- -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理。
- -R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理。
注意:操作系统不允许将父目录复制到子目录中,如果能这样不就死循环了吗?
介绍:mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
语法: mv [选项] 源文件或目录 目标文件或目录。
适用对象:具有目录操作权限的所有使用者
功能:
- 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
- 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
常用选项:
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
举例:
- 例1:如果test.c这个文件存在的话,就将hello.c文件里面的内容移动到test.c上,并将test.c文件上的内容覆盖,最后只剩下test.c这个文件,内容是hello.c里面的内容。如果test.c文件不存在的话,就将hello.c重命名为test.c。
mv hello.c test.c
- 例2:将hello.c这个文件移动到上级目录。
mv hello.c ../
到这里 Linux常用的基本命令(上)就结束了,相信已经有不少小伙伴想去练习一下这些指令了,我将会在下篇文章讲解剩下常用的基本指令。如果大家有什么解决不了的问题,欢迎大家评论区留言或者私信告诉我。如果感觉对自己有用的话,可以点个赞或关注鼓励一下博主,我会越做越好的,感谢各位的支持。