Linux基本指令/上
目录
1.基本指令介绍
2.ls命令
3.cd命令
4.touch命令
5.mkdir命令
6.ll命令
7.rmdir/rm命令
8. * 符号
9.man指令
10.cp命令
1.基本指令介绍
一些常见的快捷键:
alt + enter 全屏切换
ctrl + shift + c 复制
ctrl + shift + v 黏贴
ctrl + c 终止操作(出现异常情况时,可以不断使用该快捷键让其停止下来)
一些常用的功能代码:
pwd 打印所处的路径
clear 清屏
whoami 打印用户名
2.ls命令
在linux当中,目录 = 文件夹;因此如果说到当前目录,其实就是当前文件夹的含义
[root@VM-16-3-centos ~]# mkdir 2025.5.27
[root@VM-16-3-centos ~]# ll
total 4
drwxr-xr-x 2 root root 4096 May 27 14:08 2025.5.27
[root@VM-16-3-centos ~]# ls
2025.5.27
[root@VM-16-3-centos ~]# pwd
/root
[root@VM-16-3-centos ~]# whoami
root
通过mkdir命令,来创建一个目录;然后通过 ll 或 ls 命令来查看当前目录下的文件
当前目录是root目录,即该用户所处的目录;该目录的目录路径可以通过pwd进行查看
紧跟着#的是命令,前面带 - 的叫做命令行选项,可以有0个或多个,如果有多个需要空格分开
如果我在windows操作系统里新建了一个空文件,那空文件就被保存在了磁盘里,它会占用磁盘内存吗?
会占用,文件 = 内容+属性,会有文件名、日期等等各种各样的信息,即使它默认是0kb大小,但其实是会占用内存的;这就类似于clock函数相减以后返回0,不是瞬间完成,而是运行时间小于1ms
ls 只会先是文件名,ls -l 能显示文件名+文件属性(都是L的小写,不是1);写的时候不同命令行选项需要空格隔开,也可以写成 -al 的形式( -a -l = -al)
区别于windows操作系统用后缀来区分文件类型,linux环境下用的是文件属性的第一个单词首字母
drwxr-xr-x 2 root root 4096 May 27 14:08 2025.5.27 :d 即为文件类型,directory(中文为“目录”)缩写成了d,即该文件的文件类型为目录文件
一些常见的ls命令行选项
- -a列出⽬录下的所有⽂件,包括以.开头的隐含⽂件。
- -d将⽬录像⽂件⼀样显⽰,⽽不是显⽰其下的⽂件。如:ls‒d指定⽬录
- -i输出⽂件的i节点的索引信息。如ls‒ai指定⽂件
- -k以k字节的形式表⽰⽂件的⼤⼩。ls‒alk指定⽂件 比特就业课
- -l列出⽂件的详细信息
- -n⽤数字的UID,GID代替名称。(介绍UID,GID)
- -F在每个⽂件名后附上⼀个字符以说明该⽂件的类型,“*”表⽰可执⾏的普通⽂件;“/”表⽰ ⽬录;“@”表⽰符号链接;“|”表⽰FIFOs;“=”表⽰套接字(sockets)。(⽬录类型识别)
- -r对⽬录反向排序
- -t以时间排序
- -s在l⽂件名后输出该⽂件的⼤⼩。(⼤⼩排序,如何找到⽬录下最⼤的⽂件)
- -R列出所有⼦⽬录下的⽂件。(递归)
- -1⼀⾏只输出⼀个⽂件。
[root@VM-16-3-centos ~]# touch test.c
[root@VM-16-3-centos ~]# ls
2025.5.27 test.c
touch:创建一个文件,后跟文件名
-rw-r--r-- 1 root root 0 May 27 18:40 test.c
属性如上所示,以 - 为开头的都叫做普通文件,windows操作系统中的文件
[root@VM-16-3-centos ~]# ls -a -l
total 56
dr-xr-x---. 7 root root 4096 May 27 18:40 .
dr-xr-xr-x. 19 root root 4096 May 27 18:45 ..
drwxr-xr-x 2 root root 4096 May 27 14:08 2025.5.27
-rw------- 1 root root 491 May 27 18:45 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
drwxr-xr-x 3 root root 4096 Mar 7 2019 .cache
drwxr-xr-x 3 root root 4096 Mar 7 2019 .config
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
drwxr-xr-x 2 root root 4096 May 26 21:46 .pip
-rw-r--r-- 1 root root 73 May 26 21:46 .pydistutils.cfg
drwx------ 2 root root 4096 Nov 5 2019 .ssh
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw-r--r-- 1 root root 0 May 27 18:40 test.c
[root@VM-16-3-centos ~]# cd 2025.5.27/
想要进入某个目录,通过cd命令,后面加上要进入的目录(带不带斜杠无所谓)
进入以后能看到下面的情况,为什么会 -l 没有任何文件,但 -a 就有两个点点文件呢?
点点文件被称为了隐藏文件,只有通过 -a 显示全部文件操作才能显示出来
[root@VM-16-3-centos 2025.5.27]# ls -l
total 0[root@VM-16-3-centos 2025.5.27]# ls -a -l
total 8
drwxr-xr-x 2 root root 4096 May 27 14:08 .
dr-xr-x---. 7 root root 4096 May 27 18:40 ..
如果我们创建一个以 . 开头的文件,那么也会被隐藏起来(如下所示)
这说明了 . 开头的文件,都是隐藏文件
此时我们可以把所学结合, . 开头的目录那么就是隐藏目录,我们就可以以此为例进行创建
[root@VM-16-3-centos 2025.5.27]# touch .youcannotseeme.txt
[root@VM-16-3-centos 2025.5.27]# ls -l
total 0
[root@VM-16-3-centos 2025.5.27]# ls -a -l
total 8
drwxr-xr-x 2 root root 4096 May 27 18:51 .
dr-xr-x---. 7 root root 4096 May 27 18:40 ..
-rw-r--r-- 1 root root 0 May 27 18:51 .youcannotseeme.txt
3.cd命令
cd命令(change directory):用来切换目录的一条linux命令
一般除了根目录以外,/ 是目录与目录or文件之间的分界符
那么 . 和 .. 隐藏目录究竟是什么呢?
. 代表的是当前目录,.. 代表的是上级目录;那么 cd .. 就是回到上一级目录的含义,即回到存放当前目录的目录当中,这条指令就类似于windows系统中的文件夹回退
即便是空的目录,也要自动生成这两个隐藏目录
不断回退,回退到根目录时,目录路径会输出 / ,如下所示
如果我们想要查看目录本身的属性信息,单单使用 -a -l 会把当前所有文件与目录显示出来
-a :显示所有文件
-l : 显示属性信息
因此我们需要使用到 -d ,只显示该目录信息(交互如下所示
[root@VM-16-3-centos /]# pwd
/[root@VM-16-3-centos /]# ls -l -d
dr-xr-xr-x. 19 root root 4096 May 27 20:13 .
[root@VM-16-3-centos /]# ls -a -l -d
dr-xr-xr-x. 19 root root 4096 May 27 20:13 .
通过下面的查看,能够看到 / 在根目录是真实存在的,这也正好证明了 / 代表就是根目录本身,与此同时 . 也能够代表根目录
[root@VM-16-3-centos /]# ls -ald /
dr-xr-xr-x. 19 root root 4096 May 27 20:17 /
[root@VM-16-3-centos /]# ls -ald .
dr-xr-xr-x. 19 root root 4096 May 27 20:18 .
总结:Linux的文件结构,是一棵从根目录 / 开始的多叉树
a.叶子节点肯定是普通文件or空目录
b.非叶子节点肯定是非空目录
c.路径具有唯一性
/etc/rc.d/rc3.d 就是一个目录路径,从根目录找到目标目录被叫做了绝对路径,可以通过绝对路径找到这个文件;如果是从非根目录找到目标目录,那么就叫做相对路径,例如现在我们处于rc3.d,我们要回到rc.d就用下面的代码即可
[root@VM-16-3-centos /]# cd ../rc.d
现在我们可以通过绝对路径或者相对路径,来对目录与文件进行一系列操作,例如 ls操作 或者 cd操作
windows当中,此电脑即为根目录,c盘d盘等都是根目录下的文件夹(这都由使用者来进行的磁盘划分)
我们现在就不难理解黑科技怎么实现的,比如说我买了一台苹果手机(ios系统是由linux搭建起来的),苹果手机默认都是普通用户因此打开不了根目录;此时我们只需要成为root用户,得以控制根目录的所有文件,此时我们就可以 删除系统软件or直接修改登录密码 ,做一些高大上的操作(doge)
[root@VM-16-3-centos /]# cd ~
[root@VM-16-3-centos ~]# pwd
/root
cd ~ 回到当前用户的家目录
任何一个linux用户,用特定的用户名登录系统时,默认在家目录下;如果是普通用户,那么家目录就如下所示
[user1@VM-16-3-centos ~]$ cd ~
[user1@VM-16-3-centos ~]$ pwd
/home/user1
windows、linux不同用户,有不同的页面;windows的家目录即C:\Users\user_name
[root@VM-16-3-centos ~]# cd -
cd - 为回到最近所处的目录
4.touch命令
touch命令被用来创建普通文件,也被用来更新已有普通文件,而普通文件一般性使用stat命令来查看详情
[root@VM-16-3-centos ~]# stat test1.cFile: ‘test1.c’Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 393713 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-05-27 21:39:05.260249329 +0800
Modify: 2025-05-27 21:39:05.260249329 +0800
Change: 2025-05-27 21:39:05.260249329 +0800
Linux access modify change 时间的区别是什么?
atime (Access Time):
代表文件或目录最后一次被访问的时间。这意味着文件内容被读取时,
atime
会被更新。例如,你用cat
命令查看文件内容时,atime
会改变。修改操作不会直接影响
atime
,只有访问文件的操作才会更新它。mtime (Modification Time):
代表文件内容最后一次被修改的时间。它会在文件内容被更改时更新,如编辑文件内容、重定向输出到文件时等。例如,如果你用文本编辑器修改文件内容,
mtime
会被更新。如果是修改文件的内容而不是元数据(例如权限、所有者等),则
mtime
会发生变化。ctime (Change Time):
代表文件的元数据(如权限、所有者、文件名等)最后一次更改的时间。如果你修改了文件的权限、所有者或其他元数据,
ctime
会被更新。请注意,ctime
是文件元数据的“更改时间”,而不是文件内容的修改时间。
ctime
只能由系统和超级用户修改,它并不表示文件的内容是否变化。(上述解释由chatGPT生成)
一些会用到的命令行选项
- -a : change only the accesstime
- -c : change only the modification time
5.mkdir命令
目录结构:有点像windows中文件夹套文件夹套文件夹……,根据一条路径所经过的所有目录
一般性的目录创建前面已经提及了,这边我们要讲一点好玩的,就比如一整个目录结构怎么创建?
目录结构创建用到的是 -p ,path缩写为p,即根据path来创建
[root@VM-16-3-centos ~]# pwd
/root
[root@VM-16-3-centos ~]# mkdir -p a/b/c/d/e
[root@VM-16-3-centos ~]# cd a
[root@VM-16-3-centos a]# pwd
/root/a
[root@VM-16-3-centos a]# cd b
[root@VM-16-3-centos b]# pwd
/root/a/b
[root@VM-16-3-centos b]# cd c
[root@VM-16-3-centos c]# pwd
/root/a/b/c
如果要一个一个cd进行查看就太麻烦了,所以可以用tree命令对其可视化,会返回以命令后目录为根目录的目录结构图;如果出现了tree命令不存在,请在界面上输入下面命令安装,然后就能够正常使用了(xshell并不会预装tree命令,所以需要自己去装)
yum -y install tree
6.ll命令
ll命令是 ls -l 的别名
如果使用which查看命令,我们能看到linux中命令都被保存在了bin目录中,所以命令实际上就是一个普通文件
[root@VM-16-3-centos ~]# which ls
alias ls='ls --color=auto'/usr/bin/ls
[root@VM-16-3-centos ~]# which pwd
/usr/bin/pwd
[root@VM-16-3-centos ~]# ll /usr/bin/pwd
-rwxr-xr-x 1 root root 33232 Nov 17 2020 /usr/bin/pwd
当我们创建了一个 .c 文件(普通文件)以后,并在里面写了printf hello linux,然后就能通过gcc -o 将其编译成一个命令(在windows中就能看作是一个可执行文件),使用时 ./名称 即可,最后会输出hello linux
总结:可执行文件 == 我们写的c/c++程序 == 命令的本质
当我们查看 ll 时,可以看到前面有个alias命令(alias就类似于c/c++中的typedef,是对我们的命令取别名)同时我们可以看到 ll 命令就是 ls 文件;格式是 alias 别名=命令名,如果命令有命令行选项则需要加上 ' ' ,并且别名在我们断开连接以后也会跟着一块消失
[root@VM-16-3-centos ~]# which ll
alias ll='ls -l --color=auto'/usr/bin/ls[root@VM-16-3-centos ~]# alias zhangsan=pwd
[root@VM-16-3-centos ~]# alias lisi='ls -al'
[root@VM-16-3-centos ~]# zhangsan
/root
[root@VM-16-3-centos ~]# lisi
total 108
dr-xr-x---. 8 root root 4096 May 28 14:05 .
dr-xr-xr-x. 19 root root 4096 May 28 14:14 ..
drwxr-xr-x 3 root root 4096 May 27 18:57 2025.5.27
drwxr-xr-x 3 root root 4096 May 28 01:18 a
-rw------- 1 root root 2682 May 28 14:14 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
drwxr-xr-x 3 root root 4096 Mar 7 2019 .cache
-rw-r--r-- 1 root root 0 May 28 13:45 code.c
-rw-r--r-- 1 root root 4096 May 28 13:53 .code.c.swn
-rw-r--r-- 1 root root 12288 May 28 13:52 .code.c.swo
-rw-r--r-- 1 root root 12288 May 28 13:50 .code.c.swp
drwxr-xr-x 3 root root 4096 Mar 7 2019 .config
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
drwxr-xr-x 2 root root 4096 May 26 21:46 .pip
-rw-r--r-- 1 root root 73 May 26 21:46 .pydistutils.cfg
drwx------ 2 root root 4096 Nov 5 2019 .ssh
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw-r--r-- 1 root root 0 May 27 21:39 test1.c
-rw-r--r-- 1 root root 59 May 28 14:03 test.c
-rw-r--r-- 1 root root 4096 May 28 13:56 .test.c.swo
-rw-r--r-- 1 root root 12288 May 28 13:55 .test.c.swp
7.rmdir/rm命令
rmdir(remove dir):专门被用来删除目录,空目录还有普通文件无法删除
rm(remove):专门被用来删除普通文件,空目录还有一般目录无法删除
一些相关的rm命令行选项
- -f 强制删除,超级管理员不需要再确认就能删除
- -r 递归删除,此时可以让 rm 删除空目录or一般目录(通过递归整个多叉树),recursion(递归)是 r 的缩写
[root@VM-16-3-centos ~]# ll
total 12
drwxr-xr-x 3 root root 4096 May 27 18:57 2025.5.27
drwxr-xr-x 3 root root 4096 May 28 01:18 a
-rw-r--r-- 1 root root 0 May 28 13:45 code.c
-rw-r--r-- 1 root root 0 May 27 21:39 test1.c
-rw-r--r-- 1 root root 59 May 28 14:03 test.c
[root@VM-16-3-centos ~]# rm -fr 2025.5.27
[root@VM-16-3-centos ~]# ll
total 8
drwxr-xr-x 3 root root 4096 May 28 01:18 a
-rw-r--r-- 1 root root 0 May 28 13:45 code.c
-rw-r--r-- 1 root root 0 May 27 21:39 test1.c
-rw-r--r-- 1 root root 59 May 28 14:03 test.c
8. * 符号
在linux中可以任意搭配,ls *.c 就会打印出所有存在的 .c 文件,单一 * 指的是当前目录(将隐藏目录、隐藏文件去除在外的)
[root@VM-16-3-centos ~]# ls *.c
code.c test1.c test.c
9.man指令
man指令+某个命令名称 = 给出该命令的作用、用法等,比如 man pwd 以后就会弹出下面的界面,查看完以后按q退出
如果某个命令有好几页的解释,那么可以通过 "man 1 命令名" 格式查看,man man 以后出现的手册可以查看具体每一页会有些什么内容,默认查看的是第一页解释;如果查看不了其他页的内容,需要输入下面的命令安装
# yum install -y man-pages
10.cp命令
cp(copy)命令用来将某个文件的内容,拷贝到另一个文件;如果另一个文件不存在,那么就会自动创建;并且可以拷贝到 该目录下or目录中子目录or上一级目录 ,这种拷贝方式无法对目录进行拷贝,需要加上 -r 才能对目录进行拷贝;同时在同一层目录当中,不能有同名文件;需要注意的是,如果 cp 拷贝到的地方为目录,(无论拷贝的是普通文件还是目录)一般会把指定文件拷贝到指定的目录内部(前提是拷贝到一个已经存在的目录内,如果不存在就在同一层新建一个目录,数据拷贝到该目录内)
[root@VM-16-3-centos ~]# cp hello.txt tt.txt
[root@VM-16-3-centos ~]# ll
total 16
drwxr-xr-x 3 root root 4096 May 28 01:18 a[root@VM-16-3-centos ~]# cp hello.txt ../a.txt
[root@VM-16-3-centos ~]# ll ..
total 76
-rw-r--r-- 1 root root 32 May 28 15:47 a.txt[root@VM-16-3-centos ~]# cp -r a a-backup
[root@VM-16-3-centos ~]# ll
total 20
drwxr-xr-x 3 root root 4096 May 28 01:18 a
drwxr-xr-x 3 root root 4096 May 28 15:50 a-backup
如果想要把a目录覆盖赋值到目标目录中,那么就会有覆盖提示;此时只需要输入 y+enter 即可,如果不想被提示可以通过 -f 命令行选项,但如果是超级管理员还是会弹出(可以切换成普通用户来使用)