B站黑马视频 和
Linux
Linux中的"根目录"和"家目录"
Linux目录和Windows目录有很大不同,Linux目录类似一个树,最顶层是其根目录,如下图:
-
~ 代表是home目录,也就是家目录, / 代表的是根目录
-
用户登录后在 家目录 (home),可用pwd命令查看,普通用户为 /home/用户名,root用户为/root
-
根目录是在最顶端的目录(因为已经不能cd ...到上一级目录了 )
-
根目录是所有用户的都可以操作的,家目录用户才有权限操作(管理员可以分配权限)
相对路径
和绝对路径不同,相对路径不是从根目录 / 开始写起,而是从当前所在的工作目录开始写起。
./ :当前所在的目录
../ :父目录,上一级目录
/ :根目录
1.引用上级文件: ../cover1.jpg
2.引用同级文件: cover1.jpg
3.引用下级文件: cover/cover1.jpg
4.引用上上级文件: ../../cover1.jpg
-----------------------
cd ~ 切换到home目录
cd / 切换到根目录
模糊匹配
rm命令支持通配符*,用来做模糊匹配
符号*表示通配符,即匹配任意内容(包含空),示例:
test* ,表示匹配任何以test开头的内容
*test ,表示匹配任何以test结尾的内容
*test* ,表示匹配任何包含test的内容
管道符 |
将管道符 | ,左边命令的结果,作为右边命令的输入。可以嵌套
cat test.txt | grep "test"
将cat test.txt 这个文件作为结果,比如是x, 传入到|右边,成为了 grep "test" x。
第二章-11-grep-wc-管道符哔哩哔哩bilibili 不懂看这个。
用户用户组
Linux系统中可以:配置多个用户、配置多个用户组、用户可以加入到多个用户组中。
Linux中关于权限的管控级别有两个:针对用户的权限控制、针对用户组的权限控制。
以下命令需root用户执行: 创建用户组:groupadd 用户组名
删除用户组: groupdel 用户组名
创建用户
useradd [-g -d] 用户名
选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
删除用户
userdel [-r] 用户名
选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
查看用户所属组
id [用户名]
参数:用户名,被查看的用户,如果不提供则查看自身
修改用户所属组: usermod -aG 用户组 用户名,将指定用户加入指定用户组
getent命令get entries
使用getent命令,可以查看当前系统中有哪些用户: getent passwd共有七份信息:
用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
getent group,查看当前系统有哪些用户组,包含三份信息∶组名称:组认证(显示为x)∶组ID
查看权限控制信息
r (read),针对文件可以查看文件内容 针对文件夹,可以查看文件夹内容,如ls命令
w (write),针对文件表示可以修改此文件 针对文件夹,可以在文件夹内:创建、删除、改名等操作
x (execute),针对文件表示可以将文件作为程序执行 针对文件夹,表示可以更改工作目录到此文件夹,即cd进入。
权限修改
chmod命令change mode
功能:修改文件、文件夹的权限细节。 限制:只能是文件、文件夹的所属用户或root有权修改。 语法 : chmod [-R] 权限 文件或文件夹。 选项: -R , 对文件夹内的全部内容应用同样规则。
chmod u=rwx,g=rx,o=x hello.txt,将文件权限修改为:rwx r-x --x
其中: u表示user所属用户权限,g表示group组权限,o表示other其它用户权限
权限的数字序号
r代表4, w代表2,x代表1 rwx的相互组合可以得到从0到7的8种权限组合 如7代表: rwx , 5代表: r-x , 1代表:--×
chown命令change owner
只可root执行chown (change owner)。功能,修改文件、文件夹的所属用户、组
语法: chown [-R] [用户][:][用户组] 文件或文件夹
-R,同chmod,对文件夹内全部内容应用相同规则。
用户,修改所属用户。
用户组,修改所属用户组。
:用于分隔用户和用户组。冒号左右不能有空格。
小技巧快捷键
ctrl+c :强制停止某些运行的程序。也可以退出当前命令(比如你当前命令输入错误)
ctrl + d:退出或登出。退出账户的登录。或者退出某些特定程序的专属页面。
history:查看历史命令。
!命令前缀,自动匹配上一个命令。
ctrl + r,搜索历史命令。
ctrl+ a,跳到命令开头。ctrl+e,跳到命令结尾 ctrl+键盘左键,向左跳一个单词。ctrl+键盘右键,向右跳一个单词
清屏:通过快捷键ctrl +l,可以清空终端内容,或通过命令clear得到同样效果。
软连接 (类似快捷方式)
软连接可以将文件、文件夹链接到其他位置
语法:ln -s 参数1 参数2
-s选项,创建软连接
参数1:被链接的文件或文件夹
参数2:要链接去的目的地
date
1.date命令的作用和用法
date命令可以查看日期时间,并可以格式化显示形式以及做日期计算
语法: date [-d] [+格式化字符串]
%Y 年
%y 年份后两位数字,00到99
%m 月份(01_12)
%d 日(01_31)
%H 小时(0_23)
%M 分钟(0_59)
%S 秒(0_5O)
%s 自1970-01-01 00:00:00 到现在的秒数
有空格时,最好格式化字符串的时候加上双引号。
网络请求
1.使用ping命令可以测试到某服务器是否可联通
语法: ping [-c num] ip或主机名
选项:-c,测试的次数
2.使用wget命令可以进行网络文件下载
语法: wget [-b] url
选项:-b,后台下载
3.使用curl命令可以发起网络请求
语法: cur1 [-O] url
选项:-O.用于下载使用
4.ifconfig:查看网卡信息
语法:ifconfig 或 ifconfig | more
5.ping:查看与某台机器的连接情况
语法:ping ip
6.netstat -an:查看当前系统端口
语法:netstat -an
搜索指定端口。语法:netstat -an | grep 8080
netstat -anp | grep 端口号 ,查看本机指定端口号的占用情况
7.nmap lP地址,查看指定IP的对外暴露端口
进程管理
管理进程的命令
ps -ef 查看进程信息
ps -ef | grep 关键字 。过滤指定关键字进程信息。
kill [-9] 进程号 。关闭指定进程号的进程。
选项:-9,表强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。
压缩解压
1.Linux系统常用的压缩格式有:
tar格式,归档文件,简单的将文件整合到一个文件内,无压缩效果
gzip格式, gzip压缩文件,不仅能整合到一个文件,同时有体积压缩效果
2. tar命令
tar [-z -x -v -c -f -C]参数...
-c,创建压缩文件、
-v,查看压缩\解压过程、
-x,解压模式.
-f,指定压缩\解压的文件,
-z,gzip模式,
-C,指定解压的路径·
-z在选项组建议在开头,-f在选项组内必须在尾部, -C单独使用
3.zip命令
zip [-r]参数...
-r,压缩文件夹使用
unzip命令,unzip [-d]参数,-d指定解压去的目录
--------------
Linux命令
Linux选用命令行的原因: Linux从诞生至今,在图形化页面的优化上,并未重点发力。所以Linux操作系统的图形化页面:不好用、不稳定。在开发中,使用命令行形式,效率更高,更加直观,并且资源占用低,程序运行更稳定。
Linux命令基础格式: command [-options] [parameter]
文件夹的增删改查
ls命令(list)
1.ls命令的参数的作用
就是 list 的缩写,可以指定要查看的文件夹(目录)的内容,如果不给定参数,就查看当前工作目录的内容(文件或文件夹)
2.ls命令的选项:
命令:ls [-al]
ls 查看当前目录下的所有目录和文件
ls -a 查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -l 或 ll 列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)
ls /dir 查看指定目录下的所有目录和文件 如:ls /usr
3.命令的选项组合使用
命令的选项是可以组合使用的,比如: ls -lah,等同于ls -a -l -h
cd命令 Change Directory
cd命令来自英文: Change Directory
cd命令可以切换当前工作目录,语法是:cd [Linux路径]
cd / 切换到根目录
cd /usr 切换到根目录下的usr目录
cd ../ 切换到上一级目录 或者 cd ..
cd ~ 切换到home目录
cd - 切换到上次访问的目录
pwd命令Print work Directory
pwd命令来自英文: Print work Directory
pwd命令,没有选项,没有参数,直接使用即可。
作用是∶输出当前所在的工作目录
mkdir命令make directory
mkdir用以创建新的目录(文件夹)
语法:mkdir [-p] Linux路径
参数**必填**,表示要创建的目录的路径,相对、绝对、特殊路径符都可以使用
-p选项的作用可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录
mkdir test //当前工作目录下创建名为 test的文件夹
mkdir ./test //当前工作目录下创建名为 test的文件夹
mkdir -p /tmp/test/t1/t //在 tmp 目录下创建路径为 test/t1/t 的目录,若不存在,则创建:
mv 和 cp 目录修改【改】
一、重命名目录 (mv 即move)
命令:mv 当前目录 新目录
例如:mv aaa bbb 将目录aaa改为bbb
注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作
二、剪切目录 (mv 即move)
命令:mv 目录名称 目录的新位置
示例:将/usr/tmp目录下的aaa目录剪切到 /usr目录下面 mv /usr/tmp/aaa /usr
注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作
三、拷贝目录 (cp 即copy)
命令:cp -r 目录名称 目录拷贝的目标位置 (-r代表递归)
示例:将/usr/tmp目录下的aaa目录复制到 /usr目录下面 cp /usr/tmp/aaa /usr
注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归
rm 删除目录或文件【删】
命令:rm [-rf] 目录
删除文件:
rm 文件 删除当前目录下的文件
rm -f 文件 删除当前目录的的文件(不询问 f force,一般用户用不到,root用户使用)
删除目录:
rm -r aaa bbb 递归删除当前目录下的aaa,和bbb目录 (-r代表递归)
rm -rf aaa 递归删除当前目录下的aaa目录 (不询问)
全部删除:(不要乱用)
rm -rf * 将当前目录下的所有目录和文件全部删除
rm命令支持通配符*,用来做模糊匹配
符号*表示通配符,即匹配任意内容(包含空),示例:
test* ,表示匹配任何以test开头的内容
*test ,表示匹配任何以test结尾的内容
*test* ,表示匹配任何包含test的内容
rm -rf /* 【自杀命令!慎用!慎用!慎用!坐牢的那种】将根目录下的所有文件全部删除
find 搜索目录【查】
按文件名查找:支持通配符
find 起始路径 -name "被查找文件名"
eg: find /usr/tmp -name 'a*' 查找/usr/tmp目录下的所有以a开头的目录或文件
按文件大小查找:
find 起始路径 -size +n[kMG]
find 起始路径 -size -n[kMG]
+、-表示大于和小于n表示大小数字
kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
eg:查找根目录下大于10OMB的文件: find / -size +100M
./ :当前所在的目录
../ :父目录,上一级目录
/ :根目录
文件的增删改查
touch命令(增)
用于创建一个新的文件
语法:touch Linux路径 参数必填,表示要创建的文件的路径,相对、绝对、特殊路径符都可以使用
cat/more/less/tail (查)
cat命令 用于查看文件内容。catenate(连接)
语法:cat Linux路径 参数必填,表示要查看的文件的路径,相对、绝对、特殊路径符都可以使用
more:百分比显示
示例:使用more查看/etc/sudo.conf文件,可以显示百分比,回车可以向下一行,空格可以向下一页,q可以退出查看 more sudo.conf
less:翻页查看
示例:使用less查看/etc/sudo.conf文件,可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看 less sudo.conf
tail:指定行数或者动态查看
示例:使用tail -10 查看/etc/sudo.conf文件的后10行,Ctrl+C结束 tail -10 sudo.conf
语法:tail [-f -num] Linux路径
-f表示持续跟踪,-num:启动的时候查看尾部多少行,默认10行,Linux路径表示被查看的文件
vi或vim 修改文件【改】Visual Interface
vi (Visual Interface 视觉接口),vim(Vi IMproved 即vi增强)。
vi\vim编辑器,就是命令行模式下的文本编辑器,用来编辑文件。vim是vi的升级版,一般用vim即可,包含全部vi功能。
语法:vi\vim 文件路径
eg: vi aa.txt 或者 vim aa.txt 。打开当前目录下的aa.txt文件。
如果文件路径表示的文件不存在,那么此命令会用于编辑新文件。 如果文件路径表示的文件存在,那么此命令用j编辑已有文件。
基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
-
命令模式 (command mode) 控制屏幕光标的移动,字符、字或行的删除,查找,移动复制某区段及进入Insert mode下,或者到 last line mode。 命令行模式下的常用命令:(有很多命令,具体百度即可) 【1】控制光标移动:↑,↓,j 【2】删除当前行:dd 【3】查找:/字符 【4常用】进入编辑模式:i o a ( i :在当前光标位置进入输入模式。a:在当前光标位置之后进入输入模式。o:在当前光标下一行进入输入模式) i,a,o分大小写,具体作用查吧。
【5】进入底行模式:: 任何情况下输入esc都能回到命令模式。
-
编辑模式(Insert mode)按i o a进入编辑模式。 只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。 编辑模式下常用命令: ESC 退出编辑模式到命令行模式;
-
底行模式(last line mode) 将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号......等。 底行模式下常用命令: 【1】退出编辑: :q 【2】强制退出: :q! 【3】保存并退出: :wq
查找
which
which命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
使用实例:
which 要查找的命令
which pwd 查找pwd命令所在路径
which java 查找path中java的路径
grep命令
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
从文件中通过关键字过滤文件行
语法:grep [-n] 关键字 文件路径
选项 -n,可选,表示在结果中显示匹配的行的行号。
参数,关键字,必填,表示过滤的关键字,建议使用””将关键字包围起来
参数,文件路径,必填,表示要过滤内容的文件路径,可作为管道符的输入
eg: grep -n "code" test.txt 。在当前目录的 test.txt 文件中,找到含有 code 关键字的 一行,且显示行号。
wc命令 (word count)
命令统计文件的行数、单词数量、字节数、字符数等
语法: wc [-c -m -l -w] 文件路径
不带选项默认统计:行数、单词数、字节数
-c字节数、-m字符数、-l行数、-w单词数
参数,被统计的文件路径,可作为管道符的输入
su、sudo
su命令switch user
语法: su[-] [用户名]
- 符号是可选的,表示是否在切换用户后加载环境变量(后续讲解),建议带上。
用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root。
切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键: ctrl + d。
使用普通用户,切换到其它用户需要输入密码,如切换到root用户。
使用root用户切换到其它用户,无需密码,可以直接切换。
su test:切换到test用户,但是路径还是/root目录
su - test : 切换到test用户,路径变成了/home/test
su : 切换到root用户,但是路径还是原来的路径
su - : 切换到root用户,并且路径是/root
su不足:如果某个用户需要使用root权限、则必须要把root密码告诉此用户。
退出返回之前的用户:exit
sudo
sudo是为所有想使用root权限的普通用户设计的。可以让普通用户具有临时使用root权限的权利。只需输入自己账户的密码即可。
如何为普通用户配置sudo认证?
答:切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers
或者 直接 vi /etc/sudoer
可以让一条普通命令带有root权限,语法:sudo 其它命令
案例:
允许hadoop用户以root身份执行各种应用命令,需要输入hadoop用户的密码。
hadoop ALL=(ALL) ALL
案例:
只允许hadoop用户以root身份执行ls 、cat命令,并且执行时候免输入密码。
配置文件中:
hadoop ALL=NOPASSWD: /bin/ls, /bin/cat
echo命令
可以使用echo命令在命令行内输出指定内容。感觉跟print函数一样。
语法: echo 输出的内容
无需选项,只有一个参数,表示要输出的内容,复杂内容可以用” ”包围
eg: echo "hello world"
`反引号符
被`包围的内容,会被作为命令执行,而非普通字符
eg:echo pwd 只会输出pwd
echo `pwd` 则会输出 当前工作目录(Print work Directory)。
重定向符
重定向符
>,将左侧命令的结果,覆盖写入到符号右侧指定的文件中
>>,将左侧命令的结果,追加写入到符号右侧指定的文件中
eg: echo "hello world" > test.txt
echo "hello world" >> test.txt
-----------------
软件安装
CentOS: .rpm , yum Ubuntu: .deb , apt
CentOS使用yum管理器,Ubuntu使用apt管理器。
CentOS:yum命令
yum : RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。(RPM是linux系统的软件安装格式)
语法: yum [-y] [install | remove | search] 软件名称
选项: -y,自动确认,无需手动确认安装或卸载过程
install:安装
remove:卸载
search:搜索
yum命令需要root权限哦,可以su切换到root,或使用sudo提权。yum命令需要联网
Ubuntu:apt命令
用法和yum一致,同样需要root权限
语法: yum [-y] [install | remove | search] 软件名称
apt install wget,安装wget。
apt remove wget,移除wget。
apt search wget,搜索wget。
控制软件启动关闭
systemctl 命令
可以控制软件(服务)的启动、关闭、开机自启动 1系统内置服务均可被systemctl控制 2第三方软件,如果自动注册了可以被systemctl控制 3第三方软件,如果没有自动注册,可以手动注册(后续学习)
系统内置的服务比较多,比如:NetworkManager,主网络服务。
network,副网络服务。
firewalld,防火墙服务。
sshd, ssh服务(FinalShell远程登录Linux使用的就是这个服务)。
2.语法
systemctl start | stop | status | enable | disable 服务名
解释:start启动,stop关闭,status查看状态
enable开启开机自启,disable关闭开机自启