这次我给大家介绍Linux系统,究竟怎么更快上手Linux,怎么学习Linux?接下来我给大家分享一下干货。
Linux入门
环境搭建
主要有三种:
-
直接安装在物理机上. 但是由于 Linux 桌面使用起来非常不友好, 不推荐.
-
使用虚拟机软件, 将 Linux 搭建在虚拟机上. 但是由于当前的虚拟机软件(如 VMWare 之类的)存在一些 bug , 会
导致环境上出现各种莫名其妙的问题, 比较折腾. -
使用云服务器, 可以直接在 腾讯云, 阿里云或华为云 等服务器厂商处直接购买一个云服务器.
我个人就是使用的云服务器,因为性价比很好,使用学生优惠买一个阿里云或者腾讯云一年也就五六十块钱。如果你也是新手,就买个最便宜的2核2G也是够用的。使用云服务器不仅环境搭建简单, 避免折腾, 同时还有一个最大的好处, 部署在云服务器上的项目可以直接被外网访问到, 这个时候就和一个公司发布一个正式的网站没有任何区别. 也就能让我们自己写的程序真的去给别人去使用。
我个人使用CentOs7.6版本的云服务器,所以我比较推荐大家使用这个版本,具体买哪个版本和配置还是因人而异,新手学习建议买最便宜的,直接买一年,买下之后如何配置我给大家一一介绍。(注意:服务器购买后会让输入密码,一定要记住)
我就以阿里云为例,进入官网之后,点击我的阿里云
点击进入服务器
进入你的轻量云服务器
记住公后面这个IP地址
买好服务器之后还需要一个xshell工具,链接: [link](链接: link),填上邮箱姓名,会给你发免费版下载链接
下载好xshell后,在终端下输入指令ssh ip地址
- 新手第一次登陆用户名就先用root
- 输入买服务器时让记住的密码
- 这样就算登录成功了
Linux指令
我们学习Linux的时候没有图形化界面,就需要学习以命令行的方式操作文件数据。
基本指令
- mkdir: 在当前路径下,创建一个目录(文件夹);
- pwd:显示当前我所处的路径
- cd:进入指定目录
- touch:创建指定的普通文件
- tree : 以树状结构显示Linux执行的目录结构
ls命令
很多命令后面都会带一些命令选项,例如:ls -l
-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 一行只输出一个文件。
cd指令
- cd . :当前路径
- cd … : 返回上一级路径
- cd 绝对路径 例如:/root/dir/test.c
- cd 相对路径 (相对于你当前所处的路径) 例如:…/dir2/newdir/学习资料.txt
- cd ~:直接进入当前用户的家目录
- cd - :回到最近上一次所处的路径
- tab键 cd时候可以写一个文件的开头,然后tab就能列出想要的文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5hboiE8Y-1675926760953)(C:\Users\JRG\AppData\Roaming\Typora\typora-user-images\image-20221228114253066.png)]
安装软件的指令
yum install -y (软件名称)
例如 :yum install -y tree
rmdir和rm指令
redir
只能删除空目录
rm
可以删除任何的目录和普通文件,-r
删除目录,递归删除,-f
强制删除,不进行二次确认
man指令
查询指令以及一些接口的手册,例如:man printf
如果不能查询手册,可以先进行安装 yum install -y man-pages
cp指令
这个指令主要是拷贝文件或目录,例如:cp file.txt dir
默认只能拷贝普通文件,如果要拷贝目录需要加-r
,例如cp -r dir ..
把dir目录拷贝到上级目录,cp -rf dir ..
强制拷贝
mv指令
这个指令可以剪切文件到指定的位置 mv 文件名/目录 目标位置
可以直接剪切目录,他是默认递归的
这个指令还有一个功能是可以对目录或者文件重命名,例如:重命名file.txt
mv file.txt name.txt
mv file.txt ../name.txt
(剪切到上级目录并重命名为name.txt)
cat指令
语法:cat 【选项】 【文件】
功能:查看目标文件的内容
常用选项:
- -b对非空输出行编号
- -n对输出的所有行编号
- -s不输出多行空行
输出重定向
执行这个指令echo "aaaaaaaaa"
就会在屏幕打印一串a,echo后面跟什么就会打印什么,
如果这样执行echo "aaaaa" > mylog.txt
就会把字符串写进这个.txt文件,如果没有目标文件会自动创建,不过是覆盖式的写入,每次写进去会覆盖之前的内容,如果写成echo "aaaaa" >> mylog.txt
这样就会变成追加,不会覆盖。
这种把本来应该显示在显示器上的文本写进了文件里,这个就叫输出重定向,显示器也可以被看成文件
输入重定向
cat mylog.txt
和cat < mylog.txt
都可以打印出文本文件的内容,但是两者有区别,一个是通过命令行的方式,一个是通过输入重定向
more命令
从0第行查看文本文件,回车键往下翻,q键退出,可以用正斜杠搜索
less命令
less跟more一样可以从第0行逐行翻阅,可以上下键翻,可以用正斜杠搜索
head指令
一般默认会打印文本文件的前十行,head -5 mylog.txt
这样就是显示前五行
tail指令
一般默认会打印文本文件的最后十行,tail -5 mylog.txt
这样是显示最后五行
统计文本文件的行数
wc -l 文件名
或者cat 文件名| wc -l
文件名后面的分隔符 叫做管道
利用管道提取文本文件的中间行
假如文本文件有1000行,我们提取500行到520行的数据
cat mylog.txt | head -520 | tail -20
可以联合多条指令做数据的加工
时间指令
date
输出时间date +%Y-%m-%d/%H:%M:%S
输出时间格式化(2023-01-03/17:25:59)date +%s
显示秒,时间戳,从1970年开始date +%Y-%m-%d/%H:%M:%S -d @0
显示时间戳的时间(1970-01-01/08:00:00)cal
查看日历,默认显示本月
sort指令
sort 文本文件.txt
默认按每行的第一个字符按照ASCII进行升序排序
sort -r 文本文件.txt
按照按每行的第一个字符按照ASCII进行降序排序
uniq指令
这个指令可以去重,相邻行一样被去重
find指令
可以搜索文件,例如:这样可以搜索到以根目录为起始的所有名为file.txt文件
[root@iZ2ze13z51wq9dt5rn81d5Z ~]# find ~ -name file.txt
/root/file.txt
/root/dir/file.txt
which指令
可以搜索指令的程序
[root@iZ2ze13z51wq9dt5rn81d5Z ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@iZ2ze13z51wq9dt5rn81d5Z ~]# which pwd
/usr/bin/pwd
whereis指令
搜索包含关键字的文档
alias指令
这个指令可以给别的指令起别名,例如:alias myls='ls -a -l -i -n'
,就是给后面的一长串指令起别名为myls
grep指令
搜索文本文件中包含被搜索字符的文本行,例如:grep '98' file.txt
,grep 'm' -n file.txt
- -i :忽略大小写的不同,所以大小写视为相同
- -n:顺便输出行号
- -v:反向选择,显示没有‘搜寻字符串’内容的那一行
清空文本文件
>文本文件名
,例如:>file.txt
,清空之后文件什么内容都没有了
zip和unzip指令
-
zip指令是将文件压缩,例如把dir压缩成dir.zip
zip -r dir.zip dir
如果不带-r选项,就压缩不到dir目录下的文件 -
unzip 文件/目录
这样可以直接解压,如果要解压到指定目录下,需要加-d
选项,例如:unzip dir.zip -d 指定目录
*通配符
*可以替换任意长度的任意字符
tar指令
- -c:建立一个压缩文件的参数指令
- -x:解开一个压缩文件的参数指令
- -t:查看tarfile里面的文件
- -z:是否同时具有gzip的属性?亦是否需要用gzip压缩?
- -j:是否同时具有bzip2的属性?亦是否需要用bzip2压缩?
- -v:压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
- -f:使用档名,在f之后要立即接档名!不要再加参数
- -C:解压到指定目录
例如:
使用gzip打包并压缩
tar -czf temp.tgz temp
使用gzip解压压缩包
tar -xzf temp.tgz
bc指令
输入bc指令,进入计算器模式,输入表达式按回车会显示结果,CTRL+C退出。
uname指令
查看电脑和操作系统的相关信息
[root@iZ2ze13z51wq9dt5rn81d5Z ~]# uname
Linux
[root@iZ2ze13z51wq9dt5rn81d5Z ~]# uname -a
Linux iZ2ze13z51wq9dt5rn81d5Z 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
热键的使用
[Tab]按键—具有『命令补全』和『档案补齐』的功能
[Ctrl]-c按键—让当前的程序『停掉』[Ctrl]-d按键—通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可
以用来取代exit[Ctrl]+r 搜索之前的指令
history 可以查看之前所有输过的命令
批量化注释/取消批量化注释
- CTRL+v,出现v-block
- 按j选中要注释的行
- 切换大写键盘
- 输入i
- 输入双斜杠
- esc退出
- CTRL+v,出现v-block
- 按l选中双斜杠,然后用j选中注释行
- 按d
Linux权限
Linux系统服务器下有两种用户:
root用户。
普通用户。
- root用户:就是一个系统的管理员,对系统拥有绝对的控制权,Linux下一切皆文件,root用户可以操作所有文件,不受任何人约束
- 普通用户:会被权限所约束,一个Linux系统可以有多个普通用户。
在root用户和普通用户之间切换的方法:
root切换普通用户:su - 用户名
普通用户切换root :su -
在普通用户的目录下用root角色:su
什么是权限?在Linux下一个文件或目录能被三种角色访问,自己、所属组、其他人,而这三种角色能对文件做三种操作,读、写和运行三种操作,也就是读权限、写权限、运行权限或者进入目录
被框住的就是三种角色代表的权限。
- 最开头凡是以d开头的都是目录,**-**开头的都是普通文件
- 红色代表的是自己的权限,也就是文件的拥有者对文件的读写和访问权限。
- 黄色的是文件的所属组对文件的读写和访问权限。
- 紫色就是其他用户对文件的读写和访问权限。
- r代表读权限、w代表写权限、x代表文件的运行权限。
更改文件权限
一般而言必须是文件的拥有者或者root才有更改文件的权限
添加拥有者权限:
chmod u+rwx test.txt
添加所属组权限:
chmod g+rwx test.txt
添加other权限:
chmod o+rwx test.txt
去除拥有者权限:
chmod u-rwx test.txt
去除所属组权限:
chmod g-rwx test.txt
去除other权限:
chmod o-rwx test.txt
给所有人加相关的权限
chmod a+rwx test.txt
给所有人去除相关的权限
chmod a-rwx test.txt
chmod u+x,g+r,o+w test.txt
分别给不同的人加权限
chown
功能是更改文件的拥有者
chown [参数]用户名 文件名
-R
递归修改
chgrp
修改文件或目录的所属组
chgrp [参数]用户名 文件名
-R
递归修改
更改权限的二进制方案
有权限为1,没有权限为0
例如:-rw-rw---- 可以写成110 110 000==660
chmod 444 test.txt
,就会变成-r–r–r–
目录的权限
- 进入一个目录需要的权限是x
- 没有r权限,我们无法查看目录下的文件名和文件属性
- 没有w权限,我们无法直接在该目录下创建新文件
默认权限
-
我们创建的普通文件(不包括可执行),普通文件起始权限是664,目录是775。
-
系统为了更好的控制文件权限,系统会有默认的权限掩码的概念 umask Linux默认的掩码是002。
-
umask可以修改默认掩码。
umask 八进制数
-
我们看到的默认权限是经过起始权限被掩码“过滤”之后的默认权限,先将掩码按位取反,然后和起始权限按位与
&
,最终得到我们看到的默认权限。(文件的起始权限是666,目录的权限是777,Linux下默认子网掩码是002)
粘滞位
一、粘滞位介绍
粘滞位(Stickybit),或粘着位。最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。在linux系统的实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。一个目录具有粘滞位,则在other的X位会表现为 t,或者T。T和t的区别在于,原来x位上有x权限,有了粘滞位则表现为t,否则,则表现为T。
在Linux系统中比较典型的例子就是"/tmp"、 “/var/tmp"目录。这两个目录作为Linux系统的临时文件夹,权限为"rwxrwxrwx”,即允许任意用户、任意程序在该目录中进行创建、删除、移动文件或目录等操作。试想一下:若任意一个普通用户都能够删除系统服务运行中使用的临时文件,将造成什么结果?
粘滞位权限便是针对此种情况设置,当目录被设置了粘滞位的t权限以后,即便用户对该目录有写入权限,也不能删除该目录中其他用户的文件数据,而是只有该文件的所有者和root用户才有权将其删除。设置了粘滞位的t权限之后,正好可以保持这种动态的平衡:允许各用户在目录中任意写入、删除数据,但是禁止随意删除其他用户的数据。需要注意: 粘滞位权限只能针对⽬录设置,对于⽂件⽆效。
正常情况下,在Linux系统中,如果对一个目录具有写权限,那么就可以在这个目录下创建删除文件。**现在有这么个需求:**如果现在需要创建这样一个目录,可以在这个目录里创建文件,但是其他用户不能删除这个文件。这里就要用到Linux这个特殊的权限:粘滞位,也就是t特殊权限!需要注意:粘滞位t权限给其它用户带来的安全限制 仅仅在于不能删除和移动/更名文件 (即粘滞位保护的是文件不被其他用户rm或mv,即使文件对其他用户有写权限,777都不行!),因为它针对的是目录。
粘滞位t权限都是针对其他用户(other)设置,使用chmod命令设置目录权限时,“o+t”、"o-t"权限模式可分别用于添加、移除粘滞位权限。
设置粘滞位权限方法
# chomd o+t
# chomd 1777
删除粘滞位权限方法
# chomd o-t
根据以上示例,可以得出结论
当一个目录被设置为"粘滞位"的t权限后,则该目录下的文件只能由
- 超级管理员(root)删除或移动/更名(rm或mv)
- 该目录或文件的所有者删除或移动/更名(rm或mv)
需要注意
- 虽然目录有了粘滞位t权限,other用户不能对该目录的文件进行删除或者移动操作,但是如若other对该文件由w权限,还是可以进行修改文件内容的。
- 粘滞位只对目录有效,对文件无效。
学习计算机,Linux系统是必不可少的,这些可以帮您更快的入门,如果对您有帮助,可以关注一下,后续我也会持续更新Linux内容,希望我们能一起成长。