一、Linux背景
1.发展史
1991年10月5日,赫尔辛基大学的一名研究生Linux Benedict Torvalds宣布他编制出一种类似UNIX的小操作系统
2.开源
- Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统在1991年首次发布后,在加上用户空间的应用程序之后,就称为了Linux操作系统。严格来讲,Linux只是操作系统的内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指代基于LInux内核的完整操作系统,它包括GUI组件和许多其他的实用工具。
- GNU通用公共许可协议(GNU General Public License,简称GPL),是一个广泛被使用的自由软件许可协议条款,GPL给予了计算机程序自由软件的定义,任何基于GPL软件开发的衍生产品在发布时必须采用GPL许可证方式,且必须公开源代码
- Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有源代码,也可以自由的修改和再发布。随着Linux操作系统飞速的发展,各种集成在Linux上的开源软件和实用工具也得到了应用和普及,因此Linux也成为开源软件的代名词。
3.官网
kernel官网https://www.kernel.org/
4.企业应用现状
Linux在服务器领域的发展
距权威部门统计,目前Linux在服务器领域已经占据了75%的份额,同时Linux在服务器市场的迅速崛起,已经引起了全球IT产业的高度关注,并以强劲的势头成为服务器操作系统领域中的中坚力量
Linux在桌面领域的发展
近年来,特别是在国内市场,Linux桌面操作系统的发展趋势非常迅猛。国内如中标麒麟Linux,红旗Linux,深度Linux等系统软件厂商都推出Linux桌面操作系统,目前已经在政府企业OEM等领域得到广泛应用。但是从系统整体的功能性能来看,Linux桌面系统与Windows来比还有一定差距,主要在系统易用性,系统管理和软硬件兼容性,软件的丰富程度等方面
Linux在移动嵌入式领域的发展
Linux的低成本,强大的定制功能以及良好的移植性能,使得Linux在嵌入式系统方面也得到广泛应用,目前Linux以广泛应用于手机,平板电脑,路由器,电视和电子游戏机等领域。在移动设备上广泛使用的Android 操作系统就是创建在Linux内核之上的。目前,Android已经成为全球最流行的智能手机操作系统。
Linux在云计算/大数据领域的发展
互联网产业迅猛发展,促使云计算、大数据产业形成并快速发展,促使云计算、大数据产业的形成并快速发展。其作为一个基于开源软件的平台,Linux占据了核心优势。
5.发行版本
Debian
Debian运行起来极为稳定,非常适合用于服务器。Debian这款操作系统适合于系统管理员和高级用户
Ubuntu
Ubuntu是Debian的一款衍生版本,也是当今最受欢迎的免费操作系统。Ubuntu侧重于它在这个市场的应用,在服务器,云计算,甚至一些运行Ubuntu Linux的移动设备上很常见。适用于新手·
红帽企业级Linux
这是第一款面向商业市场的Linux发行版。它有服务器版本,支持众多处理器架构,包括X86和X86_64
CentOS
CentOS是一款企业级Linux发行版,它使用用红帽企业级Linux中免费源代码重构而成。这款重构版本完全去掉了注册商标以及Binary程序包方面一个非常细致的变换。适用于不想支付一大笔费用,又能领略红帽企业级Linux
...
6.os概念,定位
使用计算机更好用!这是操作系统的根本要义!
二、使用Xshell远程登陆Linux
关于Linux桌面
很多朋友的Linux启动进入图形化的桌面,这个东西大家以后就可以忘记了,以后工作中没有机会使用图形化界面。
使用图形化界面会导致效率变低,有一定的安全问题等
下载安装Xshell
Xshell是一个远程终端软件,官网https://www.netsarang.com/products/xsh_overview.html
查看Linux主机ip
在终端下敲ifconfig指令,查看到ip地址
使用Xshell登录主机
在Xshell终端下敲ssh [ip],ip为刚刚看到的ifconfig的结果
如果网络通畅,将会提示输入用户名密码,输入即可正确登录。
Xshell下的复制粘贴
复制:Ctrl+insert
粘贴:shift+insert
Ctrl+c/Ctrl+v是不行的
三、Linux下的基本指令
ls 指令
语法: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下所有子目录与文件。对于文件,将列出文件名以及其他的信息
常用选项:
- -a 列出目录下所有文件,包括以.开头的隐含文件。
- -d将目录像文件一样显示,而不是显示其下的文件。如:ls -d 指定目录
- -i 输出文件的i节点的索引信息。如ls-ai指定文件
- -k 以k字节的形式表示文件的大小
- -l 列出文件的详细信息
- -r 对目标进行反向排序
- -t 以时间排序
- -s 在l文件名后输入该文件的大小
- -R列出所有子目录下的文件
- -1一行之输出一个文件
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls
- hello2.txt hello.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls -a
- . .. hello2.txt hello.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls -l
- total 0
- -rw-r--r-- 1 root root 0 Jan 30 23:04 hello2.txt
- -rw-r--r-- 1 root root 0 Jan 30 23:02 hello.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls -alFn
- total 0
- drwxr-xr-x 2 0 0 41 Jan 30 23:04 ./
- dr-xr-x---. 11 0 0 242 Jan 30 22:59 ../
- -rw-r--r-- 1 0 0 0 Jan 30 23:04 hello2.txt
- -rw-r--r-- 1 0 0 0 Jan 30 23:02 hello.txt
复制代码
pwd指令
语法:pwd
功能:显示用户当前所在的目录
- [root@iZ2zeiwy4tf4rghoyh5d1yZ dir]# pwd
- /root/118/dir
复制代码
cd 指令
Linux理论知识:路径的认识
- Linux系统中,磁盘上的文件和目录被组成一颗目录树,每个结点都是目录或者文件
- 其中普通文件一定是目录树的叶子节点
- 目录可能是叶子(空目录),也可能是路上节点
- 理解路径存在的意义:树状组织方式,都是为了保证快速定位查找到指定文件,而定位文件就需要具有唯一性的方案来定位文件。其中任何一个节点,都只有一个父节点,所以从根目录开始定位指定文件,路径具有唯一性。
- 绝对路径:一般从/开始,不依赖其他目录的定位文件的方式
- 相对路径:相对于当前用户所处目录,定位文件的路径方式
- 绝对路径一般不会随着用户的路径变化而丧失唯一性,一般在特定服务的配置文件中经常被使用
- 相对路径因为它的便携性,一般在命令行中使用较多
语法:cd 目录名
功能:改变工作目录,将当前的工作目录改变到指定的目录下
- # 返回上级目录
- [root@iZ2zeiwy4tf4rghoyh5d1yZ dir]# pwd
- /root/118/dir
- [root@iZ2zeiwy4tf4rghoyh5d1yZ dir]# cd ..
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# pwd
- /root/118
- #绝对路径定位目录或者文件
- [root@iZ2zeiwy4tf4rghoyh5d1yZ ~]# pwd
- /root
- [root@iZ2zeiwy4tf4rghoyh5d1yZ ~]# cd /root/118/dir
- [root@iZ2zeiwy4tf4rghoyh5d1yZ dir]# pwd
- /root/118/dir
- #相对路径定位目录或者文件
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# pwd
- /root/118
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# cd ../117/dir
- [root@iZ2zeiwy4tf4rghoyh5d1yZ dir]# pwd
- /root/117/dir
- #每一次新建一个用户都会/home目录下为新用户创建新的工作目录,目录以新用户名称命名
- #root用户在安装操作系统的时候,就已经内置的工作目录:/root
- [root@iZ2zeiwy4tf4rghoyh5d1yZ dir]# ls /home
- admin xhx_home
- #返回到最近访问的目录
- [root@iZ2zeiwy4tf4rghoyh5d1yZ dir]# pwd
- /root/117/dir #当前在该目录下
- [root@iZ2zeiwy4tf4rghoyh5d1yZ dir]# cd /root/118/dir
- [root@iZ2zeiwy4tf4rghoyh5d1yZ dir]# cd - #直接可以回退到最近一次所处的目录
- /root/117/dir
复制代码
touch 指令
语法: touch [选项] 文件
功能:touch命令参数可更改文档或者目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项:
- -a :change only the access time
- -m : change only the modification time
- #创建普通文件
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 117]# ls
- dir hello4.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 117]# touch newfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 117]# ls
- dir hello4.txt newfile.txt
- #查看文件时间
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 117]# stat newfile.txt
- File: newfile.txt
- Size: 0 Blocks: 0 IO Block: 4096 regular empty file
- Device: fd01h/64769d Inode: 454844 Links: 1
- Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
- Access: 2026-01-30 23:44:45.308963546 +0800
- Modify: 2026-01-30 23:44:45.308963546 +0800
- Change: 2026-01-30 23:44:45.308963546 +0800
- Birth: -
- #修改文件access时间
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 117]# touch -a newfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 117]# stat newfile.txt
- File: newfile.txt
- Size: 0 Blocks: 0 IO Block: 4096 regular empty file
- Device: fd01h/64769d Inode: 454844 Links: 1
- Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
- Access: 2026-01-30 23:47:09.285242975 +0800
- Modify: 2026-01-30 23:44:45.308963546 +0800
- Change: 2026-01-30 23:47:09.285242975 +0800
- Birth: -
- #修改文件modify时间
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 117]# touch -m newfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 117]# stat newfile.txt
- File: newfile.txt
- Size: 0 Blocks: 0 IO Block: 4096 regular empty file
- Device: fd01h/64769d Inode: 454844 Links: 1
- Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
- Access: 2026-01-30 23:47:09.285242975 +0800
- Modify: 2026-01-30 23:47:56.274639641 +0800
- Change: 2026-01-30 23:47:56.274639641 +0800
- Birth: -
复制代码
mkdir指令
语法: mkdir [选项] dirname...
功能:在当前目录下创建一个名为 dirname 的目录
常用选项:
- -p/--parents:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上该选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
- #创建普通空目录
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls
- dir hello2.txt hello.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# mkdir mydir
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls -l
- total 0
- drwxr-xr-x 2 root root 24 Jan 30 23:14 dir
- -rw-r--r-- 1 root root 0 Jan 30 23:04 hello2.txt
- -rw-r--r-- 1 root root 0 Jan 30 23:02 hello.txt
- drwxr-xr-x 2 root root 6 Jan 31 14:03 mydir
- #递归建立多个目录,创建指定路径
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# mkdir -p a/b/c/d
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# tree
- .
- ├── a
- │ └── b
- │ └── c
- │ └── d
- ├── dir
- │ └── hello3.txt
- ├── hello2.txt
- ├── hello.txt
- └── mydir
- 6 directories, 3 files
复制代码
rmdir指令&&rm指令
rmdir是一个与mkdir相对应的命令,mkdir是建立目录,而rmdir是删除
语法:rmdir [-p] [dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
- -p 当子目录被删除后如果父目录也变成空目录的话,就连父目录一起删除。
- #删除空目录
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# clear
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ll
- total 0
- drwxr-xr-x 3 root root 15 Jan 31 14:05 a
- drwxr-xr-x 2 root root 24 Jan 30 23:14 dir
- -rw-r--r-- 1 root root 0 Jan 30 23:04 hello2.txt
- -rw-r--r-- 1 root root 0 Jan 30 23:02 hello.txt
- drwxr-xr-x 2 root root 6 Jan 31 14:03 mydir
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# tree mydir/
- mydir/
- 0 directories, 0 files
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# rmdir mydir
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ll
- total 0
- drwxr-xr-x 3 root root 15 Jan 31 14:05 a
- drwxr-xr-x 2 root root 24 Jan 30 23:14 dir
- -rw-r--r-- 1 root root 0 Jan 30 23:04 hello2.txt
- -rw-r--r-- 1 root root 0 Jan 30 23:02 hello.txt
- #删除路径
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ll
- total 0
- drwxr-xr-x 3 root root 15 Jan 31 14:05 a
- drwxr-xr-x 2 root root 24 Jan 30 23:14 dir
- -rw-r--r-- 1 root root 0 Jan 30 23:04 hello2.txt
- -rw-r--r-- 1 root root 0 Jan 30 23:02 hello.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# tree a
- a
- └── b
- └── c
- └── d
- 3 directories, 0 files
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# rmdir -p a/b/c/d
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ll
- total 0
- drwxr-xr-x 2 root root 24 Jan 30 23:14 dir
- -rw-r--r-- 1 root root 0 Jan 30 23:04 hello2.txt
- -rw-r--r-- 1 root root 0 Jan 30 23:02 hello.txt
- #指定路径中有不为空的路径,便无法删除
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# rmdir -p a/b/c/d
- rmdir: failed to remove directory 'a/b/c': Directory not empty
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# tree a
- a
- └── b
- └── c
- └── name.txt
- 2 directories, 1 file
复制代码
rm命令可以同时删除文件或者目录
语法:rm[-f-i-r-v][dirName/dir]
适用对象:所有使用者
功能:删除文件或目录
常用选项:
- -f 即是文件属性为只读(即写保护),亦直接删除
- -i 删除前逐一询问确认
- -r 删除目录及其下所有文件
- #删除普通文件
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ll
- total 0
- drwxr-xr-x 3 root root 15 Jan 31 14:17 a
- drwxr-xr-x 2 root root 24 Jan 30 23:14 dir
- -rw-r--r-- 1 root root 0 Jan 30 23:04 hello2.txt
- -rw-r--r-- 1 root root 0 Jan 30 23:02 hello.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# rm hello.txt
- rm: remove regular empty file 'hello.txt'? yes
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls
- a dir hello2.txt
- #删除目录文件
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls
- a dir hello2.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# rm dir
- rm: cannot remove 'dir': Is a directory
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# rm -r dir
- rm: remove directory 'dir'? yes
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls
- a hello2.txt
- #删除普通文件前询问
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# rm -i hello2.txt
- rm: remove regular empty file 'hello2.txt'? yes
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls
- a
- #删除目录前询问
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# rm -ir a
- rm: descend into directory 'a'? y
- rm: descend into directory 'a/b'? y
- rm: remove regular empty file 'a/b/hello.txt'? y
- rm: remove directory 'a/b'? y
- rm: remove directory 'a'? y
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls
- #递归强制删除非空目录
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls
- a
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# tree a
- a
- ├── b
- │ ├── c
- │ │ └── d
- │ └── file2.txt
- └── file1.txt
- 3 directories, 2 files
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# rm -f a
- rm: cannot remove 'a': Is a directory
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# rm -rf a
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls
复制代码
man指令
Linux的命令有很多参数,我们不可能全记住,可以通过查看联机手册获取帮助
语法: man [选项] 命令
常用选项
- -k 根据关键字搜索联机帮助
- num 只在第num章节查找
- -a 将所有章节的都显示出来,比如man printf他缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕
man 手册分为9章(不同系统可能会有所差别)
- 是普通命令
- 是系统调用,如open write之类的
- 是库函数,如printf是特殊文件,也就是/dev下的各种设备文件
- 略
- 是指文件的格式,比如passwd ,就会说明这个文件中各个字段的含义
- 是给游戏留的,由各个游戏自己定义
- 是附件还有一些变量,比如像environ这种全局变量在这里就有说明
- 是系统管理用的命令 这些命令只能由root使用,如ifconfig
- 略
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# man printf
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# man 2 fork
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# man 3 printf
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# man 7 signal
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# man 7 environ
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# man man
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# man -a printf #按q后可查看下一个匹配项
复制代码
cp指令
语法:cp [选项] 源文件或目录 目标文件或目录
功能:复制文件或目录
说明:
cp指令用于复制文件或目录
如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中
常用选项:
- -f 或 --force 强制复制文件或目录,不论目的的文件或者目录是否已经存在
- -i 或 --interactive 覆盖文件前先询问用户
- -r 递归处理,将指定目录下的文件与子目录一并处理。
- #普通文件
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# touch myfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# echo "hello tyut">myfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# cat myfile.txt
- hello tyut
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ll
- total 4
- -rw-r--r-- 1 root root 11 Jan 31 15:28 myfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# cp myfile.txt myfile-backup.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ll
- total 8
- -rw-r--r-- 1 root root 11 Jan 31 15:29 myfile-backup.txt
- -rw-r--r-- 1 root root 11 Jan 31 15:28 myfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# cat myfile-backup.txt
- hello tyut
- #将多个文件拷贝到指定路径下
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# mkdir dir
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ls
- dir myfile-backup.txt myfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# cp *.txt dir #*表示通配符
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# ll
- total 8
- drwxr-xr-x 2 root root 49 Jan 31 15:32 dir
- -rw-r--r-- 1 root root 11 Jan 31 15:29 myfile-backup.txt
- -rw-r--r-- 1 root root 11 Jan 31 15:28 myfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# tree dir
- dir
- ├── myfile-backup.txt
- └── myfile.txt
- 0 directories, 2 files
- #cp如果目标文件存在,就覆盖
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# echo "hi tyut">myfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# cat myfile.txt
- hi tyut
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# cp myfile.txt myfile-backup.txt
- cp: overwrite 'myfile-backup.txt'? yes
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# cat myfile-backup.txt
- hi tyut
- #拷贝前询问
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# cp -i myfile.txt myfile-backup.txt
- cp: overwrite 'myfile-backup.txt'? y
- #递归强制拷贝整个目录
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# tree dir
- dir
- ├── dir1
- │ └── file.txt
- ├── myfile-backup.txt
- └── myfile.txt
- 1 directory, 3 files
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# cp -fr dir dir-backup
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 118]# tree
- .
- ├── dir
- │ ├── dir1
- │ │ └── file.txt
- │ ├── myfile-backup.txt
- │ └── myfile.txt
- ├── dir-backup
- │ ├── dir1
- │ │ └── file.txt
- │ ├── myfile-backup.txt
- │ └── myfile.txt
- ├── myfile-backup.txt
- └── myfile.txt
复制代码
mv指令
mv命令是move的缩写,可以用来移动文件或者将文件改名,经常用来备份文件或者目录
语法:mv [选项] 源文件或目录 目标文件或目录
功能:
- 视为mv命令中的第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移动到一个新的目录中。
- 当第二个参数类型是文件时 ,mv命令完成文件重命名,此时,源文件只能有一个(也可以是原目录名),它将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已经存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移到目标目录中。
常用选项:
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
- -i :若目标文件(destination)已经存在,就会询问是否覆盖!
- #更改名称(文件->文件)
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# touch myfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# ll
- total 0
- -rw-r--r-- 1 root root 0 Jan 31 16:56 myfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# mv myfile.txt yourfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# ll
- total 0
- -rw-r--r-- 1 root root 0 Jan 31 16:56 yourfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]#
- #如果当前路径存在同名文件,改名即覆盖
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# touch myfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# ll
- total 0
- -rw-r--r-- 1 root root 0 Jan 31 16:58 myfile.txt
- -rw-r--r-- 1 root root 0 Jan 31 16:56 yourfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# mv myfile.txt yourfile.txt
- mv: overwrite 'yourfile.txt'? y
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# ls
- yourfile.txt
- #如果当前路径存在同名文件,改名前可以添加i选项,让系统提出警告供用户选择
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# tree .
- .
- ├── dir
- │ └── myfile.txt
- ├── myfile.txt
- └── yourfile.txt
- 1 directory, 3 files
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# mv -i myfile.txt dir
- mv: overwrite 'dir/myfile.txt'? y
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# tree .
- .
- ├── dir
- │ └── myfile.txt
- └── yourfile.txt
- 1 directory, 2 files
- #mv整个目录
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# touch myfile.txt
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# mkdir temp
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# ll
- total 0
- -rw-r--r-- 1 root root 0 Jan 31 17:04 myfile.txt
- drwxr-xr-x 2 root root 6 Jan 31 17:04 temp
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# mv myfile.txt temp
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# ls
- temp
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# mv temp ../
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# ls
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 121]# ls -d ../temp
- ../temp
复制代码
cat 指令
语法:cat [选项] [文件]
功能:查看目标文件的内容
常用选项:
- -b 对非空行输出行编号,空行不做编号
- -n 对输出的所有行编号
- -s 不输出多行空行
more 指令
语法: more[选项]
功能:more命令 功能类似cat
常用选项:
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# more -5 file.txt
- hi tyut
- hi tyut
- hi tyut
- hi tyut
- hi tyut
复制代码
less 指令
less工具也是对文件或其他输出进行分页显示的工具,应该说是Linux正统查看文件内容的工具,功能非常强大
less的用法比起more更加有弹性,在more的时候我们并没有办法向前翻,只能往后看
但若使用了less时,就可以使用[pageup][pagedown] 等案件的功能来往前往后翻看文件,更容易用来查看一个文件的内容
除此之外,在less里头可以拥有更多搜索的功能,不只可以向下搜,也可以向上搜
语法: less [参数] 文件
功能:less和more类似,但使用less可以随意浏览文件,而more仅仅能向前移动,却不能向后移动,而且less在查看前不会加载整个文件。
选项:
- -i 忽略搜索时的大小写
- -N 显示每行的行号
- /字符串:向下搜索“字符串”的功能
- ?字符串:向上搜索“字符串”的功能
- n:重复前一个搜索(与/或?有关)
- N:反向重复前一个搜索(与/或?有关)
- q:quit
- #命令行输出多行文本
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# cnt=0; while [ $cnt -le 2000 ]; do echo "hi $cnt";let cnt++ ; done > file.txt
- #测试搜索和-N等功能
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# less -N file.txt
- 1 hi 0
- 2 hi 1
- 3 hi 2
- 4 hi 3
- 5 hi 4
- 6 hi 5
- 7 hi 6
- 8 hi 7
- 9 hi 8
- 10 hi 9
- 11 hi 10
- 12 hi 11
- 13 hi 12
- 14 hi 13
- 15 hi 14
- 16 hi 15
- 17 hi 16
- 18 hi 17
- 19 hi 18
- #综合问题
- #如何显示文件的[180,200]行的内容
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# head -200 file.txt | tail -20
- hi 180
- hi 181
- hi 182
- hi 183
- hi 184
- hi 185
- hi 186
- hi 187
- hi 188
- hi 189
- hi 190
- hi 191
- hi 192
- hi 193
- hi 194
- hi 195
- hi 196
- hi 197
- hi 198
- hi 199
复制代码
head 指令
head与tail就像它的名字一样浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head用来显示档案的开头至标准输出中,而tail想当然就是看档案的结尾。
语法:
head [参数]…[文件]…
功能:
head用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行
选项:
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# head file.txt
- hi 0
- hi 1
- hi 2
- hi 3
- hi 4
- hi 5
- hi 6
- hi 7
- hi 8
- hi 9
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# head -5 file.txt
- hi 0
- hi 1
- hi 2
- hi 3
- hi 4
复制代码
tail指令
tail命令从指定点开始将文件写到标准输出。使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail-f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容。
语法:tail 必要参数 [文件]
功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用于查看日志文件。
选项:
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# tail file.txt
- hi 1991
- hi 1992
- hi 1993
- hi 1994
- hi 1995
- hi 1996
- hi 1997
- hi 1998
- hi 1999
- hi 2000
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# tail -3 file.txt
- hi 1998
- hi 1999
- hi 2000
复制代码
date 指令
指定格式显示时间: date +%Y:%m:%d
用法: date [OPTION] … [+FORMAT]
1.在显示方面,使用者可以设定预显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下:
- %H:小时(00..23)
- %M: 分钟(00..59)
- %S: 秒(00..59)
- %X:相当于%H:%M :%S
- %m:月份(01..12)
- %Y: 完整年份(0000..9999)
- %F: 相当于%Y-%m-%d
2. 在设定时间方面
date-s //设置当前时间,只有root权限才能设置,其他只能查看。
3.时间戳
- 时间->时间戳: date +%s
- 时间戳->时间: date -d@150874939
- Unix时间戳是从1970年1月1日开始所经过的秒数,不考虑润秒
- #显示常规时间
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# date
- Sat Jan 31 19:42:16 CST 2026
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# date +%Y/%m/%d
- 2026/01/31
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# date +%Y/%m/%d-%H:%M:%S
- 2026/01/31-19:43:21
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# date +%X-%F
- 07:43:40 PM-2026-01-31
- #显示时间戳
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# date +%s
- 1769859870
- #时间戳转化为可视时间
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# date +%F-%X -d @0
- 1970-01-01-08:00:00 AM
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# date +%F-%X -d @1769859870
- 2026-01-31-07:44:30 PM
复制代码
cal 指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法。“阳历”又名“太阳历”,以地球绕太阳一周为一年,为西方各国所通用
命令格式:cal 参数 [年份]
功能:用于查看日历等时间信息,如果只有一个参数则表示年份(1-9999),如有两个参数,则表示月份和年份
常用选项:
- -3 显示系统前一个月,当前月,下一个月的月历
- -j 显示在当年中的第几天
- -y 显示当前年份的日历
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# cal
- January 2026
- Su Mo Tu We Th Fr Sa
- 1 2 3
- 4 5 6 7 8 9 10
- 11 12 13 14 15 16 17
- 18 19 20 21 22 23 24
- 25 26 27 28 29 30 31
-
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# cal -3
- December 2025 January 2026 February 2026
- Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7
- 7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14
- 14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21
- 21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28
- 28 29 30 31 25 26 27 28 29 30 31
-
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# cal 1949
- 1949
- January February March
- Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 1 2 3 4 5 1 2 3 4 5
- 2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12
- 9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
- 16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
- 23 24 25 26 27 28 29 27 28 27 28 29 30 31
- 30 31
- April May June
- Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 2 1 2 3 4 5 6 7 1 2 3 4
- 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11
- 10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18
- 17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25
- 24 25 26 27 28 29 30 29 30 31 26 27 28 29 30
-
- July August September
- Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 2 1 2 3 4 5 6 1 2 3
- 3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10
- 10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17
- 17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24
- 24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 30
- 31
- October November December
- Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
- 1 1 2 3 4 5 1 2 3
- 2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10
- 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
- 16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
- 23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
- 30 31
- # -j显示某月的天当年中的第几天
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# cal -j 2 2026
- February 2026
- Sun Mon Tue Wed Thu Fri Sat
- 32 33 34 35 36 37 38
- 39 40 41 42 43 44 45
- 46 47 48 49 50 51 52
- 53 54 55 56 57 58 59
-
复制代码
find 指令
Linux下find命令在目录结构中的搜索文件,并执行指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强大。
即是系统中含有网络文件系统(NFS),find命令在该文件系统中同样有效,只要你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里指30G以上的文件系统)
语法: find pathname -options
功能:用于在文件树中查找文件,并做出相应的处理(可能访问磁盘)
常用选项:
其他选项需要现查,这个命令比较复杂
- #在指定路径下搜索执行名称的文件或目录
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# find find ~ -name dir
- find: ‘find’: No such file or directory
- /root/118/dir
- /root/120/dir
- /root/117/dir
复制代码
which 指令
功能:搜索系统指定的命令
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# which ls
- alias ls='ls --color=auto'
- /usr/bin/ls
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# which pwd
- /usr/bin/pwd
复制代码
whereis 指令
功能:用于找到程序的源、二进制文件或手册
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# whereis ls
- ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
复制代码
alias指令
功能:设置命令的别名
- #设置别名
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# alias hello='pwd'
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# hello
- /root/119
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# which hello
- alias hello='pwd'
- /usr/bin/pwd
- #删除别名
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# alias hello=''
- [root@iZ2zeiwy4tf4rghoyh5d1yZ 119]# hello
复制代码
grep 指令
语法:grep [选项] 搜索字符串 文件
功能:在文件中搜索字符串,将找到的行打印出来
常用选项:
- -i :忽略大小写的不同,所有大小写视为相同
- -n :顺便输出行号
- -v :反向选择,即显示出没有搜寻字符串的那一行
- #文件内容
- [root@iZ2zeiwy4tf4rghoyh5d1yZ ~]# cat temp.txt
- abcd
- ABCD
- hello
- tyut
- 1234
- #基本查找
- [root@iZ2zeiwy4tf4rghoyh5d1yZ ~]# grep "abcd" temp.txt
- abcd
- #忽略大小写
- [root@iZ2zeiwy4tf4rghoyh5d1yZ ~]# grep -i "abcd" temp.txt
- abcd
- ABCD
- #输出行号
- [root@iZ2zeiwy4tf4rghoyh5d1yZ ~]# grep -n "e" temp.txt
- 3:hello
- #反向选择,输出行号,忽略大小写
- [root@iZ2zeiwy4tf4rghoyh5d1yZ ~]# grep -ivn "a" temp.txt
- 3:hello
- 4:tyut
- 5:1234
复制代码
top 指令
用途:用于动态查看进程活动,系统资源占用以及运行状态
- top -d 1 -n 5
- -d:刷新的时间间隔
- -n:刷新的次数
- q:退出
复制代码
zip/unzip指令
语法:zip 压缩文件 .zip 目录或文件
功能: 将目录或文件压缩成zip格式
常用选项
-r:递归处理,将指定目录下的所有文件和子目录一并处理
举例
将text2目录压缩: zip test2.zip test2/*
解压到tmp目录: unzip test2.zip -d /tmp
tar 指令(*)
打包/解包,不打开它,直接看内容
语法: tar [-cxtzjvf] 文件与目录....
参数:
- -c :建立一个压缩文件的参数指令(create的意思);
- -x :解开一个压缩文件的参数指令
- -t :查看tarfile里面的文件
- -z:是否同时具有gzip属性?即是否需要用gzip压缩?
- -j :是否同时具有bzip2的属性?即是否需要用bzip2压缩?
- -v:压缩过程中显示文件!不建议用在背景执行过程!
- -f : 使用档名,f之后需要立即接档名不能再加参数
- -C:解压到指定目录
- [root@iZ2zeiwy4tf4rghoyh5d1yZ d]# tar -czf test1.tgz test1
- [root@iZ2zeiwy4tf4rghoyh5d1yZ d]# ls
- test1 test1.tgz
- [root@iZ2zeiwy4tf4rghoyh5d1yZ d]# tar -xzf test1.tgz -C ~/
- [root@iZ2zeiwy4tf4rghoyh5d1yZ d]# cd ..
- [root@iZ2zeiwy4tf4rghoyh5d1yZ ~]# ls
- d test1
- [root@iZ2zeiwy4tf4rghoyh5d1yZ ~]# tree test1
- test1
- ├── dir
- │ └── hello.txt
- └── hi.txt
- 1 directory, 2 files
复制代码
bc 指令
bc命令可以很方便的进行浮点运算
- [root@iZ2zeiwy4tf4rghoyh5d1yZ ~]# bc
- bc 1.07.1
- Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
- This is free software with ABSOLUTELY NO WARRANTY.
- For details type `warranty'.
- 1+1
- 2
- 1+2+34
- 37
- 1.2+3.4566
- 4.6566
- 1*33
- 33
- 2*4
- 8
- 7/2
- 3
复制代码
unname 指令
语法:unname[选项]
功能:unname用来获取电脑和操作系统的相关信息。
补充说明:uname可以显示Linux主机所用的操作系统的版本、硬件的名称等基本信息、
常用选项:
- -a 或 -all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
- lsb_release -a :查看操作系统版本
- [root@iZ2zeiwy4tf4rghoyh5d1yZ ~]# uname
- Linux
- [root@iZ2zeiwy4tf4rghoyh5d1yZ ~]# uname -a
- Linux iZ2zeiwy4tf4rghoyh5d1yZ 4.18.0-193.28.1.el8_2.x86_64 #1 SMP Thu Oct 22 00:20:22 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
- [root@iZ2zeiwy4tf4rghoyh5d1yZ ~]# lsb_release -a
- LSB Version: :core-4.1-amd64:core-4.1-noarch
- Distributor ID: CentOS
- Description: CentOS Linux release 8.2.2004 (Core)
- Release: 8.2.2004
- Codename: Core
复制代码
关机 指令
语法:shutdown [选项]
常见选项:
- -h :将系统的服务停掉后,立即关机
- -r :将系统的服务停掉后,重新启动
- -t sec:-t 后面加秒数,过几秒后关机
重要的几个热键[Tab] [ctrl] +c [ctrl]+d
- [Tab]按键具有命令补全和档案补齐的功能
- [Ctrl] c让当前程序停掉
- [Ctrl] d代表着键盘输入结束 也可代替exit
四、shell命令以及运行原理
Linux严格意义上说是一个操作系统,我们称之为“核心(kernel)”,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来和kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,shell的最简单定义:命令行解释器主要包含:
将使用者的命令翻译给核心(kernel)处理
同时,将核心的处理结果翻译给使用者
对比Windows GUI 我们操作Windows不是直接操作Windows内核,而是通过图像接口,点击,从而完成我们的操作
shell对于Linux,有着相同的作用,主要对我们的指令进行解析,解析指令给linux内核。反馈结果在通过内核运行输出结果,通过shell解析给用户。
shell相当于一个翻译官。