一、Linux基础知识
1、命令行概述
1.1、Linux命令
用于实现某一类功能的指令或程序
命令的执行依赖于解释器(例如:/bin/bash)
1.2、Linux命令的分类
内部命令:属于Shell解释器的一部分
外部命令:独立于Shell解释器之外的程序文件
1.3、识别命令类型
type
1、 用途:识别命令类型
2、格式:type [-a] name
内部命令:
[root@localhost ~]# type type
回显:type is a shell builtin
外部命令:
[root@localhost ~]# type bash
回显:bash is /bin/bash
注意:bash 是外部命令程序
2、命令格式
2.1、命令提示符
[root@localhost ~]#
[ ]:这是提示符的分隔符号,没有特殊含义
root:显示的是当前的登录用户
@:分隔符号,没有特殊含义
localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)
~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录
#:命令提示符,Linux 用这个符号标识登录的用户权限等级。
如果是超级用户,提示符就是 #;如果是普通用户,提示符就是 $
2.2、家目录(又称主目录)是什么?
Linux 系统是纯字符界面,用户登录后,要有一个初始登录的位置,这个初始登录位置就称为用户的家
超级用户的家目录:/root
普通用户的家目录:/home/用户名
2.3、命令的基本格式
[root@localhost ~]# 命令 [选项] [参数]
命令格式中的 [ ] 代表可选项,也就是有些命令可以不写选项或参数,也能执行
选项的作用:命令之后不加选项和参数也能执行,不过只能执行最基本的功能
参数的作用:参数是命令的操作对象,一般文件、目录、用户和进程等可以作为参数被命令
2.4、简单命令
查看系统信息
查看内核信息
uname命令:
-a:显示主机名/内核/硬件平台等全部信息
-r:只显示内核版本
查看系统版本
cat /etc/redhat-release
查看主机名
hostname命令
查看主机的完整名称
包括主机名称、所在域的名称
hostname set-hostname 主机名
修改主机名
查看IP/MAC地址
ifconfig
查看CPU参数
cat /proc/cpuinfo
查看内存参数
cat /proc/meminfo
查看硬件存储
df -hT
-h 使用人类可读的格式
-T 显示文件系统的形式
重启命令
shutdown -r now
reboot
init 6
关机命令
shutdown -h now
poweroff
init 0
延时重启/关机命令
延时重启:shutdown -r 15 'Host will be reboot !!'
延时关机:shutdown -h 15 'Host will be shutdown !!'
2.5、路径概述
在 Linux 中,简单的理解一个文件的路径,指的就是该文件存放的位置
绝对路径:绝对路径一定是由根目录 / 开始写起
相对路径:相对路径不是从根目录 / 开始写起,而是从当前所在的工作目录开始写起
2.6、文件类型
对于第一次使用 Linux 命令行的用户,可能真的搞不清楚哪个是文件,哪个是目录,究其原因是很难直接通过名字看出来目录和文件的区别,虽然从名称上不容易分辨,但是可以从颜色上进行区分
一般情况下:
蓝色代表目录
绿色代表可执行文件
红色代表压缩文件
浅绿色代表链接文件
黄色代表设备文件
不同颜色所代表的文件类型不一定是这样,更准确的对应方式还取决于配置文件 /etc/DIR_COLORS 中的规定。因此,如果想详细了解不同文件类型所对应的颜色,可以使用 man 命令,例如:
[root@localhost ~]# man dir_colors
二、Linux基础命令
1、ls 命令
ls 是 list files 的缩写,用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)
选项:
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-h 以人们易读的方式显示文件或目录大小,如 1KB、234MB、2GB 等
-n 以 UID 和 GID 分别代替文件用户名和群组名显示出来
-R 连同子目录内容一起列出来,等於将该目录下的所有文件都显示出来
--color=never:never 表示不依据文件特性给予颜色显示
--color=always:always 表示显示颜色,ls 默认采用这种方式
--color=auto:auto 表示让系统自行依据配置来判断是否给予颜色
特别注意:
通过使用 -a,你会看到以 . 为开头的几个文件,以及目录文件 (.)、(..)、.gconf 等等,这些都是隐藏的目录和文件。其中,目录文件名以蓝色显示,一般文件以白色显示
Linux 系统中,隐藏文件不是为了把文件藏起来不让其他用户找到,而是为了告诉用户这些文件都是重要的系统文件,如非必要,不要乱动!所以,不论是 Linux 还是 Windows 都可以非常简单地査看隐藏文件,只是在 Windows 中绝大多数的病毒和木马都会把自己变成隐藏文件,给用户带来了错觉,以为隐藏文件是为了不让用户发现。
通过 ls -l 命令,我们就可以查看当前目录下所有文件和目录各自的属性
回显示例:
-rw------- 1 root root 1474 Sep 4 18:27 anaconda-ks.cfg
drwxr-x--- 4 root root 4096 Sep 24 00:07 .
第一个字符含义:
—
普通文件,包括纯文本文件、二进制文件、各种压缩文件等
d
目录,类似 Windows 系统中的文件夹
b
块设备文件,就是保存大块数据的设备,比如最常见的硬盘
c
字符设备文件,例如键盘、鼠标等
s
套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信
p
管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误
l
链接文件,类似 Windows 系统中的快捷方式
通过 ls -l 命令,我们就可以查看当前目录下所有文件和目录各自的属性
回显示例:
-rw------- 1 root root 1474 Sep 4 18:27 anaconda-ks.cfg
-rw------- 1 root root 955 Sep 24 00:08 .bash_history
第一列:规定了不同的用户对文件所拥有的权限,具体权限的含义将在后续章节中讲解。
第二列:引用计数,文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。
第三列:所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户。
第四列:所属组,默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
第五列:大小,默认单位是字节。
第六列:文件修改时间,文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。
第七列:文件名或目录名。
2、cd 命令
cd 是 change directory 的缩写,用于切换当前工作目录
cd 命令的基本格式:
[root@localhost ~]# cd [相对路径或绝对路径]
cd 命令后面可以跟一些特殊符号,表达固定的含义
~ (波浪号):代表当前登录用户的主目录
~用户名:表示切换至指定用户的主目录
-(减号):代表上次所在目录
.:代表当前目录
..:代表上级目录
cd后不接选项和参数,表示返回当前登录用户的家目录
3、pwd 命令
pwd 是 print work directory 的缩写,用于显示工作目录
执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称
例:
[root@localhost ~]# pwd
回显/root
4、mkdir 命令
mkdir 是 make directories 的缩写,用于创建新目录,此命令所有用户都可以使用
mkdir 命令的基本格式为:
[root@localhost ~]# mkdir 选项 目录名
选项:
-m 选项用于手动配置所创建目录的权限,而不再使用默认权限
例: [root@localhost ~]# mkdir -m 711 test2
-p 选项递归创建所有目录
以创建 /home/test/demo 为例,在默认情况下,你需要一层一层的创建各个目录,而使用 -p 选项,则系统会自动帮你创建 /home、/home/test 以及/home/test/demo
5、touch 命令
touch 用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件
需要注意的是,touch 命令不光可以用来创建文件(当指定操作文件不存在时,该命令会在当前位置建立一个空文件),此命令更重要的功能是修改文件的时间参数(但当文件存在时,会修改此文件的时间参数)
Linux 系统中,每个文件主要拥有 3 个时间参数(通过 stat 命令进行查看),分别是文件的访问时间、数据修改时间以及状态修改时间:
1.访问时间(Access Time,简称 atime):只要文件的内容被读取,访问时间就会更新。例如,使用 cat 命令可以查看文件的内容,此时文件的访问时间就会发生改变
2.数据修改时间(Modify Time,简称 mtime):当文件的内容数据发生改变,此文件的数据修改时间就会跟着相应改变
3.状态修改时间(Change Time,简称 ctime):当文件的状态发生变化,就会相应改变这个时间。比如说,如果文件的权限或者属性发生改变,此时间就会相应改变
touch 命令的基本格式如下:
[root@localhost ~]# touch [选项] 文件名
选项:
-a:只修改文件的访问时间
-c:仅修改文件的时间参数(3 个时间参数都改变),如果文件不存在,则不建立新文件
-d:后面可以跟欲修订的日期,而不用当前的日期,即把文件的 atime 和 mtime 时间改为指定的时间
-m:只修改文件的数据修改时间
-t:命令后面可以跟欲修订的时间,而不用目前的时间,时间书写格式为 YYMMDDhhmm
示例:
1、首先,使用ls命令查看testfile文件的属性,如下所示:
[root@localhost ~]# ls -l testfile #查看文件的时间属性
#原来文件的修改时间为16:09
-rw-r--r-- 1 root root 55 2021-01-22 16:09 testfile
2、执行指令"touch"修改文件属性以后,并再次查看该文件的时间属性,如下所示:
[root@localhost ~]# touch testfile #修改文件时间属性为当前系统时间
[root@localhost ~]# ls -l testfile #查看文件的时间属性
#修改后文件的时间属性为当前系统时间
-rw-r--r-- 1 root root 55 2021-01-22 16:12 testfile
3、 修改 testfile 文件的 atime 和 mtime
[root@localhost ~]# touch -d "2021-01-22 15:44" bols
[root@localhost ~]# ll testfile、 ll --time=atimetestfile、 ll --time=ctime testfile
-rw-r--r-- 1 root root 55 2021-01-22 15:44 testfile
-rw-r--r-- 1 root root 55 2021-01-22 15:44 testfile
-rw-r--r-- 1 root root 55 2021-01-22 16:15 testfile
#ctime不会变为设定时间,但更新为当前服务器的时间
6、stat 命令
stat 用于显示 inode 内容
stat 命令的基本格式如下:
[root@localhost ~]# stat [文件或目录]
查看 testfile 文件的inode内容内容,可以用以下命令:
[root@localhost ~]# stat testfile #输入命令
回显如下:
File: `testfile'
Size: 102 Blocks: 8 IO Block: 4096 regular file
Device: 807h/2055d Inode: 1265161 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2014-08-13 14:07:20.000000000 +0800
Modify: 2014-08-13 14:07:07.000000000 +0800
Change: 2014-08-13 14:07:07.000000000 +0800
7、cp 命令
cp 是 copy 的缩写 ,主要用来复制文件和目录,同时借助某些选项,还可以实现复制整个目录,以及比对两文件的新旧而予以升级等功能
cp 命令的基本格式如下:
[root@localhost ~]# cp [选项] 源文件 目标文件
选项:
-a:相当于 -d、-p、-r 选项的集合,这几个选项我们一一介绍(常用)
-p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间)(常用)
-r:递归复制,用于复制目录(常用)
-d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接
-i:询问,如果目标文件已经存在,则会询问是否覆盖
-l:把目标文件建立为源文件的硬链接文件,而不是复制源文件
-s:把目标文件建立为源文件的软链接文件,而不是复制源文件
-u:若目标文件比源文件有差异,则使用该选项可以更新目标文件,此选项可用于对文件的升级和备用
需要注意的是,源文件可以有多个,但这种情况下,目标文件必须是目录才可以
8、rm 命令
rm 是 remove 的缩写,用于删除一个文件或者目录
当 Linux 系统使用很长时间之后,可能会有一些已经没用的文件(即垃圾),这些文件不但会消耗宝贵的硬盘资源,还是降低系统的运行效率,因此需要及时地清理
rm 是强大的删除命令,它可以永久性地删除文件系统中指定的文件或目录。在使用 rm 命令删除文件或目录时,系统不会产生任何提示信息
此命令的基本格式为:
[root@localhost ~]# rm [选项] 文件或目录
选项;
-f:强制删除(force),和 -i 选项相反,使用 -f,系统将不再询问,而是直接删除目标文件或目录
-i:和 -f 正好相反,在删除文件或目录之前,系统会给出提示信息,使用 -i 可以有效防止不小心删除有用的文件或目录
-r:递归删除,主要用于删除目录,可删除指定目录及包含的所有内容,包括所有的子目录和文件
注意,rm 命令是一个具有破坏性的命令,因为 rm 命令会永久性地删除文件或目录,这就意味着,如果没有对文件或目录进行备份,一旦使用 rm 命令将其删除,将无法恢复,因此,尤其在使用 rm 命令删除目录时,要慎之又慎
9、mv 命令
mv 是 move 的缩写,既可以在不同的目录之间移动文件或目录,也可以对文件和目录进行重命名
该命令的基本格式如下:
[root@localhost ~]# mv 【选项】 源文件 目标文件
选项:
-f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖
-i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)
-n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户
-v:显示文件或目录的移动过程
-u:若目标文件已经存在,但两者相比,源文件更新,则会对目标文件进行升级
需要注意的是,同 rm 命令类似,mv 命令也是一个具有破坏性的命令,如果使用不当,很可能给系统带来灾难性的后果
例子:
1、移动文件或目录:
移动之后,源文件会被删除,类似剪切
[root@localhost ~]# touch testfile
[root@localhost ~]# mv testfile /tmp
也可以移动目录。和 rm、cp 不同的是,mv 移动目录不需要加入 "-r" 选项
[root@localhost ~]# mkdir movie
[root@localhost ~]# mv movie /tmp
2、如果移动的目标位置已经存在同名的文件,则同样会提示是否覆盖,因为 mv 命令默认执行的也是 "mv -i" 的别名,例如:
[root@localhost ~]# touch testfile #重新建立文件
[root@localhost ~]# mv testfile /tmp
回显为:mv:是否覆盖"/tmp/testfile"?
由于 /tmp 目录下已经存在 testfile 文件,所以会提示是否覆盖,需要手工输入 y 覆盖移动
扫描二维码,在手机上阅读!