目录
Linux背景
Linux发展
UNIX发展的历史
Linux发展历史
看了这么多,是不是感觉脑瓜子嗡嗡的?其实我们只要注意以下就行了。
Linux下基本指令
ls指令
举个栗子:
[cyq@VM-0-7-centos ~]$ ls
[cyq@VM-0-7-centos ~]$ ls lesson3
[cyq@VM-0-7-centos lesson3]$ ls file1
常用选项
对于上面比较多的选项,在这里只介绍一些常用的~
ls -a
[cyq@VM-0-7-centos ~]$ ls -a
ls -l
[cyq@VM-0-7-centos ~]$ ls -l
组合选项 ls -al
[cyq@VM-0-7-centos ~]$ ls -al
pwd指令
[cyq@VM-0-7-centos lesson3]$ pwd
cd指令
举些栗子:
例1:
[cyq@VM-0-7-centos lesson3]$ pwd //当前路径
/home/cyq/lesson3
[cyq@VM-0-7-centos lesson3]$ cd .. //进入上级目录
[cyq@VM-0-7-centos ~]$ pwd //当前路径
/home/cyq
例2:
[cyq@VM-0-7-centos ~]$ cd /home/cyq/lesson3 //绝对路径
例3:
[cyq@VM-0-7-centos lesson3]$ pwd
/home/cyq/lesson3
[cyq@VM-0-7-centos lesson3]$ cd ~ //进入家户目录
[cyq@VM-0-7-centos ~]$ pwd
/home/cyq
例4:
[cyq@VM-0-7-centos file5.c]$ pwd
/home/cyq/lesson3/file5.c
[cyq@VM-0-7-centos file5.c]$ cd ~
[cyq@VM-0-7-centos ~]$ pwd
/home/cyq
[cyq@VM-0-7-centos ~]$ cd -
/home/cyq/lesson3/file5.c
[cyq@VM-0-7-centos file5.c]$ cd -
/home/cyq
[cyq@VM-0-7-centos ~]$ cd -
/home/cyq/lesson3/file5.c
touch指令
常见选项
touch创建一个文件:
[cyq@VM-0-7-centos lesson3]$ ls
file1 file2 file3 file4 file5.c
[cyq@VM-0-7-centos lesson3]$ touch file5
[cyq@VM-0-7-centos lesson3]$ ls
file1 file2 file3 file4 file5 file5.c
touch创建多个文件:
[cyq@VM-0-7-centos lesson7]$ ll
total 0
[cyq@VM-0-7-centos lesson7]$ touch file1 file2 file3
[cyq@VM-0-7-centos lesson7]$ ls
file1 file2 file3
touch修改文件创建时间:
[cyq@VM-0-7-centos lesson3]$ stat file5
File: ‘file5’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 658687 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ cyq) Gid: ( 1001/ cyq)
Access: 2022-01-28 17:08:26.529179380 +0800
Modify: 2022-01-28 17:08:26.529179380 +0800
Change: 2022-01-28 17:08:26.529179380 +0800
Birth: -
[cyq@VM-0-7-centos lesson3]$ touch file5
[cyq@VM-0-7-centos lesson3]$ stat file5
File: ‘file5’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 658687 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ cyq) Gid: ( 1001/ cyq)
Access: 2022-01-28 17:10:30.868345561 +0800
Modify: 2022-01-28 17:10:30.868345561 +0800
Change: 2022-01-28 17:10:30.868345561 +0800
Birth: -
mkdir指令
[cyq@VM-0-7-centos lesson3]$ ls
file1 file2 file3 file4 file5 file5.c
[cyq@VM-0-7-centos lesson3]$ mkdir dir
[cyq@VM-0-7-centos lesson3]$ ls
dir file1 file2 file3 file4 file5 file5.c
支持多目录创建:
[cyq@VM-0-7-centos lesson3]$ ls
dir file1 file2 file3 file4 file5 file5.c
[cyq@VM-0-7-centos lesson3]$ mkdir dir1 dir2
[cyq@VM-0-7-centos lesson3]$ ls
dir dir1 dir2 file1 file2 file3 file4 file5 file5.c
mkdir递归创建多个目录:
如果我们这样来递归创建目录的话是错误的。
[cyq@VM-0-7-centos lesson7]$ ls
file1 file2 file3
[cyq@VM-0-7-centos lesson7]$ mkdir dir1/dir2/dir3/dir4
mkdir: cannot create directory ‘dir1/dir2/dir3/dir4’: No such file or directory
正确的做法是应该在mkdir后面跟上 -p选项:
[cyq@VM-0-7-centos lesson7]$ ls
file file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ mkdir -p dir1/dir2/dir3/dir4
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ tree dir1
dir1
`-- dir2
`-- dir3
`-- dir4
3 directories, 0 files
是不是对tree指令感到疑惑?下面来介绍一下tree指令~
tree指令
[cyq@VM-0-7-centos ~]$ tree lesson7
lesson7
|-- dir1
| `-- dir2
| `-- dir3
| `-- dir4
|-- file1
|-- file2
`-- file3
4 directories, 3 files
这就相当于windows环境下这种形式:
rmdir指令 && rm 指令
功能选项
rmdir只能删除空目录,举个栗子:
正确打开方式:
[cyq@VM-0-7-centos lesson7]$ mkdir dir
[cyq@VM-0-7-centos lesson7]$ ls
dir dir1 file1 file2 file3
[cyq@VM-0-7-centos lesson7]$ rmdir dir
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file1 file2 file3
rm命令可以同时删除文件或目录
常用选项
[cyq@VM-0-7-centos lesson7]$ mkdir -p dir1/dir2/dir3/dir4
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file1 file2 file3
[cyq@VM-0-7-centos lesson7]$ tree dir1
dir1
`-- dir2
`-- dir3
`-- dir4
3 directories, 0 files
[cyq@VM-0-7-centos lesson7]$ rm dir1
rm: cannot remove ‘dir1’: Is a directory
[cyq@VM-0-7-centos lesson7]$ tree dir1
dir1
`-- dir2
`-- dir3
`-- dir4
3 directories, 0 files
[cyq@VM-0-7-centos lesson7]$ rm -r dir1
[cyq@VM-0-7-centos lesson7]$ ls
file1 file2 file3
rm也可以删除普通文件
[cyq@VM-0-7-centos lesson7]$ ls
file1 file2 file3
[cyq@VM-0-7-centos lesson7]$ mkdir -p dir1/dir2/dir3/dir4
[cyq@VM-0-7-centos lesson7]$ rm file1
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file2 file3
man指令
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是man。
常用选项
man指令完整版安装
可能我们在使用man指令时有些东西查不出来,这时候我们需要用过下面指令来配置一下。
yum install -y man -pages
我们也可以查看man指令的使用方法。
[cyq@VM-0-7-centos lesson7]$ man man
部分截图:
cp指令
常用选项
例1:
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file3
[cyq@VM-0-7-centos lesson7]$ cat file3 //cat表示查看文件内容
hello
[cyq@VM-0-7-centos lesson7]$ cp file3 file4
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file3 file4
[cyq@VM-0-7-centos lesson7]$ cat file4
hello
例2:
[cyq@VM-0-7-centos lesson7]$ mkdir dir2
[cyq@VM-0-7-centos lesson7]$ ls
dir1 dir2 file3 file4
[cyq@VM-0-7-centos lesson7]$ ls dir1
dir2
[cyq@VM-0-7-centos lesson7]$ cp dir1 dir2
cp: omitting directory ‘dir1’
例2:
[cyq@VM-0-7-centos lesson7]$ cp -r dir1 dir2
[cyq@VM-0-7-centos lesson7]$ ls
dir1 dir2 file3 file4
[cyq@VM-0-7-centos lesson7]$ tree dir2
dir2
`-- dir1
`-- dir2
`-- dir3
`-- dir4
4 directories, 0 files
mv指令
在windows下就相当于剪切、重命名。
例1:剪切
[cyq@VM-0-7-centos lesson7]$ ls
dir file3 file4
[cyq@VM-0-7-centos lesson7]$ mkdir Newdir
[cyq@VM-0-7-centos lesson7]$ ls
dir file3 file4 Newdir
[cyq@VM-0-7-centos lesson7]$ mv dir Newdir
[cyq@VM-0-7-centos lesson7]$ ls
file3 file4 Newdir
[cyq@VM-0-7-centos lesson7]$ tree Newdir
Newdir
`-- dir
`-- dir2
`-- dir3
`-- dir4
4 directories, 0 file
对文件剪切:
[cyq@VM-0-7-centos lesson7]$ ls
file file1 Newdir
[cyq@VM-0-7-centos lesson7]$ cat file
hello world
[cyq@VM-0-7-centos lesson7]$ cat file1
[cyq@VM-0-7-centos lesson7]$ cat file
hello world
[cyq@VM-0-7-centos lesson7]$ mv file file1
[cyq@VM-0-7-centos lesson7]$ ls
file1 Newdir
[cyq@VM-0-7-centos lesson7]$ cat file1
hello world
例2:重命名
[cyq@VM-0-7-centos ~]$ cd lesson7
[cyq@VM-0-7-centos lesson7]$ tree .
.
|-- dir1
| `-- dir2
| `-- dir3
| `-- dir4
|-- file3
`-- file4
4 directories, 2 files
[cyq@VM-0-7-centos lesson7]$ mv dir1 dir
[cyq@VM-0-7-centos lesson7]$ ls
dir file3 file4
[cyq@VM-0-7-centos lesson7]$ tree dir
dir
`-- dir2
`-- dir3
`-- dir4
3 directories, 0 files
对文件重命名:
[cyq@VM-0-7-centos lesson7]$ ls
file1 Newdir
[cyq@VM-0-7-centos lesson7]$ cat file1
hello world
[cyq@VM-0-7-centos lesson7]$ mv file1 file
[cyq@VM-0-7-centos lesson7]$ ls
file Newdir
[cyq@VM-0-7-centos lesson7]$ cat file
hello world
cat指令
常用选项
[cyq@VM-0-7-centos lesson7]$ ls
file Newdir
[cyq@VM-0-7-centos lesson7]$ nano file
[cyq@VM-0-7-centos lesson7]$ cat file
#include<stdio.h>
int main()
{
printf("hello linux!\n");
return 0;
}
[cyq@VM-0-7-centos lesson7]$ cat -n file
1 #include<stdio.h>
2 int main()
3 {
4 printf("hello linux!\n");
5 return 0;
6 }
more指令
常用选项
演示more指令前我们先写一个脚本帮助我们来展示~
count=0; while [ $count -le 1000 ]; do echo "hello ${count}"; let count++; done > file.txt
举个栗子:
[cyq@VM-0-7-centos lesson7]$ ls
file file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ more file.txt
运行后:
我们也可以使用-n选项:
[cyq@VM-0-7-centos lesson7]$ more -12 file.txt
hello 0
hello 1
hello 2
hello 3
hello 4
hello 5
hello 6
hello 7
hello 8
hello 9
hello 10
hello 11
运行后:
less指令
常用选项
[cyq@VM-0-7-centos lesson7]$ less -N file.txt
head指令
选项
举个栗子:
[cyq@VM-0-7-centos lesson7]$ head file.txt
hello 0
hello 1
hello 2
hello 3
hello 4
hello 5
hello 6
hello 7
hello 8
hello 9
-n选项
[cyq@VM-0-7-centos lesson7]$ head -5 file.txt
hello 0
hello 1
hello 2
hello 3
hello 4
tail指令
选项
举个栗子:
[cyq@VM-0-7-centos lesson7]$ tail file.txt
hello 991
hello 992
hello 993
hello 994
hello 995
hello 996
hello 997
hello 998
hello 999
hello 1000
-n选项
[cyq@VM-0-7-centos lesson7]$ tail -6 file.txt
hello 995
hello 996
hello 997
hello 998
hello 999
hello 1000
date指令
选项
举个栗子:
[cyq@VM-0-7-centos lesson7]$ date +%Y/%m/%d_%H:%M:%S
2022/01/28_20:56:01
[cyq@VM-0-7-centos lesson7]$ date +%F
2022-01-28
[cyq@VM-0-7-centos lesson7]$ date +%X
08:57:00 PM
时间方面的设置
在这里简单了解一下即可:
时间戳
举个栗子:
[cyq@VM-0-7-centos lesson7]$ date +%s
1643374923
[cyq@VM-0-7-centos lesson7]$ date -d@1643374923
Fri Jan 28 21:02:03 CST 2022
cal指令
常用选项
栗子:
例1:
[cyq@VM-0-7-centos ~]$ cal
例2:
[cyq@VM-0-7-centos ~]$ cal -3
例3:
[cyq@VM-0-7-centos ~]$ cal -j
例4:
[cyq@VM-0-7-centos ~]$ cal 2022
find指令
选项
举个栗子:
[cyq@VM-0-7-centos lesson7]$ ls
file file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ find Newdir
Newdir
Newdir/dir
Newdir/dir/dir2
Newdir/dir/dir2/dir3
Newdir/dir/dir2/dir3/dir4
再举个栗子:
[cyq@VM-0-7-centos ~]$ find . test
查找结果:
grep指令
常用选项
比如我们还以之前脚本写的文本为例,搜索带'99'的行。
举个栗子:
例1:
[cyq@VM-0-7-centos lesson7]$ grep '99' file.txt
例2 -v选项:
[cyq@VM-0-7-centos lesson7]$ grep -v '99' file.txt
部分截图:
例3 -n:
[cyq@VM-0-7-centos lesson7]$ grep -n '99' file.txt
例4 -i:
[cyq@VM-0-7-centos lesson7]$ grep -i 'world' file.txt
管道指令
举个例子:
[cyq@VM-0-7-centos lesson7]$ cat file.txt | grep '999'
管道命令一个重要应用场景
上面的方法是比较累赘的,我们可以借助管道命令来进行操作:
举个栗子:
[cyq@VM-0-7-centos lesson7]$ head -510 file.txt | tail -10
结果如下:
也可以连续使用:
[cyq@VM-0-7-centos lesson7]$ head -510 file.txt | tail -10 | head -5
重定向命令 >
[cyq@VM-0-7-centos lesson7]$ echo "hello world" > file
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ cat file
hello world
验证一下:
追加重定向命令 >>
举个栗子:
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ cat file
wmm
[cyq@VM-0-7-centos lesson7]$ echo "wmm" >> file
[cyq@VM-0-7-centos lesson7]$ echo "wmm" >> file
[cyq@VM-0-7-centos lesson7]$ echo "wmm" >> file
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ cat file
wmm
wmm
wmm
wmm
zip/unzip指令(压缩/解压)
选项
举个栗子:
对文件压缩解压:
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ zip file.zip file
adding: file (deflated 50%)
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file file.txt file.zip Newdir
解压时:
[cyq@VM-0-7-centos lesson7]$ unzip file.zip -d file
Archive: file.zip
checkdir: cannot create extraction directory: file
File exists
[cyq@VM-0-7-centos lesson7]$ unzip file.zip -d dir1
Archive: file.zip
inflating: dir1/file
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file file.txt file.zip Newdir
[cyq@VM-0-7-centos lesson7]$ cd dir1
[cyq@VM-0-7-centos dir1]$ ls
dir2 file
[cyq@VM-0-7-centos dir1]$ cat file
wmm
wmm
wmm
wmm
特例:
对目录进行压缩
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ zip -r dir1.zip dir1
adding: dir1/ (stored 0%)
adding: dir1/dir2/ (stored 0%)
adding: dir1/dir2/dir3/ (stored 0%)
adding: dir1/dir2/dir3/dir4/ (stored 0%)
adding: dir1/file (deflated 50%)
[cyq@VM-0-7-centos lesson7]$ ls
dir1 dir1.zip file file.txt Newdir
解压目录时
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ zip -r dir1.zip dir1
adding: dir1/ (stored 0%)
adding: dir1/dir2/ (stored 0%)
adding: dir1/dir2/dir3/ (stored 0%)
adding: dir1/dir2/dir3/dir4/ (stored 0%)
adding: dir1/file (deflated 50%)
[cyq@VM-0-7-centos lesson7]$ ls
dir1 dir1.zip file file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ rm -rf dir1
[cyq@VM-0-7-centos lesson7]$ unzip dir1.zip
Archive: dir1.zip
creating: dir1/
creating: dir1/dir2/
creating: dir1/dir2/dir3/
creating: dir1/dir2/dir3/dir4/
inflating: dir1/file
[cyq@VM-0-7-centos lesson7]$ ls
dir1 dir1.zip file file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ tree dir1
dir1
|-- dir2
| `-- dir3
| `-- dir4
`-- file
3 directories, 1 file
tar指令(打包/解包)
选项
举个栗子先~
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ tar czvf file.tgz file
file
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file file.tgz file.txt Newdir
解压:
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file file.tgz file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ rm -f file
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file.tgz file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ tar xzvf file.tgz
file
[cyq@VM-0-7-centos lesson7]$ ls
dir1 file file.tgz file.txt Newdir
[cyq@VM-0-7-centos lesson7]$ cat file
wmm
wmm
wmm
wmm
此外,-C选项还可以在解包时解包到指定到目录中。
bc指令
也可以这样进行计算:
[cyq@VM-0-7-centos ~]$ echo "1+2+3+4" | bc
uname指令
选项
举个栗子:
几个重要的热键
TAB键
比如我们输入这样的命令:
如下:
ctrl+c键
ctrl+d键
ctrl+r键
history
[cyq@VM-0-7-centos lesson7]$ history
部分截图:
关机指令
选项
注意:如果使用的是云服务器的话,不要关机
补充
有兴趣的话可以自己去试一下~
Linux权限
从超级用户切回普通用户 su - (用户名)
[root@VM-0-7-centos ~]# su - cyq
从普通用户切回超级用户 su -
[cyq@VM-0-7-centos ~]$ su -
为什么呢?因为每次通过su - cyq(用户名)进出普通用户时,每次都会新创建一个bash进程,占用系统资源。我们不妨来看一下如何查看bash进程
ps axj | grep bash
如下:
文件访问者的分类
文件类型和访问权限
rwx的意思:
文件类型
文件权限的设置
chmod
常用选项
举个栗子:
支持多组修改权限:
可以用a进行操作:
chmod第二种修改命令方式
举个栗子:
chown
举个栗子:
我们发现直接使用修改拥有者用户时是不对的:
正确写法:
[cyq@VM-0-7-centos lesson7]$ sudo chown root file
chgrp
选项
举个栗子:
[cyq@VM-0-7-centos lesson7]$ sudo chgrp root file
chgrp特例
举个栗子:
[cyq@VM-0-7-centos lesson7]$ chgrp cyq dir1
chown特例(更改当前用户和所属组)
举个栗子:
[cyq@VM-0-7-centos lesson7]$ sudo chown root:root dir1
chown也遵循chgrp那个特例:
[cyq@VM-0-7-centos lesson7]$ chown cyq:cyq dir1
umask
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002
我们在这里用普通文件来展示一下子关掩码的用处:
示例如下:
另外,我们可以自己修改umask值,但是仅仅限制于当前登录,当退出时,umask值有恢复成默认的了。
举个栗子:
这时候我们再创建一个文件:
注意:
file指令
常用选项
目录的权限
重点来了:进入目录需要可执行权限!如果没有可执行权限,查看目录文件也会出错,仅仅会显示一下目录下文件名和信息。
另外我们从上面看到:
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件。
这时候我们引入下一个概念:
粘滞位
我们举个栗子:
[cyq@VM-0-7-centos lesson7]$ chmod o+t Newdir/
这时候我们来设置一下:
情况如下:
就算是root用户的文件也不可以被修改:
以及被设置粘滞位的子目录下的子目录也不可以删除:
Newdir已经被设置成了粘滞位了。Bew
关于权限的总结
针对第三种情况我们来演示一下:
普通用户创建和删除
创建用户名
[root@VM-0-7-centos ~]# useradd zhangsan
设置密码
[root@VM-0-7-centos ~]# passwd zhangsan
过程如下:
这时候我们看到出文件的用户名就创建成功了:
删除用户
[root@VM-0-7-centos ~]# userdel -rf zhangsan
删除结果: