linux1
day1
Linux的基本使用
输入密码登录,不能以访客登陆
关机时候先关闭ubuntu,在关闭vmware
Linux文件系统介绍
Linux没有类似windows的盘符,只有一个根目录,用/表示
所有的文件和子目录都在根目录下面
Linux是多用户操作系统,每个用户都有一个属于自己的目录,叫主目录,主目录在/home下
Linux常用的系统目录,系统目录的文件不能随便修改删除
Linux命令快速演练
进入终端--右键打开终端
Ctrl+shift+ +--放大字体
Ctrl+- --缩小字体
ls # 查看当前目录内容
cd # 切换目录
cd dbs # 进入dbs目录
cd .. # 回到上级目录
touch a.txt # 创建一个空文件a.txt
mkdir aaa # 创建一个目录aaa
rm a.txt # 删除a.txt
rm -r aaa # 删除目录aaa
![img](file:///C:\Users\39861\AppData\Local\Temp\ksohtml4800\wps1.jpg)
Linux命令的常用方式
上下键快速调出之前执行过的命令
Tab自动补齐
Linux下所有的命令和文件目录名大小写字母不同
Linux命令后面如果有参数,命令和参数之间一定有空格
Linux命令一般都是小写字母构成的
查看linux命令帮助
命令--help
Man命令
按空格键向下翻页
按tab键向上翻页
按q退出
Pwd查看当前目录
Pwd
Ls查看内容
-a查看所有内容
-l用列表方式显示详细信息
-h一般和-l联合使用,-hl显示文件大小的时候,用人性方式显示大小
![img](file:///C:\Users\39861\AppData\Local\Temp\ksohtml4800\wps2.jpg)
Ls -l的结果
第一部分:d目录,-是文件,l链接文件
第二部分:rwxrwxr-x,文件存储权限
第三部分:2 硬链接数
第三部分:python python 文件所属的用户和组名
第四部分:4096,文件大小
第五部分:文件最后修改时间
第六部分:文件或者目录名
权限
Rwxrwxrwx,三部分组成,每三个字母为一组
第一组:文件所属用户的权限
第二组:文件所属组的权限
第三组:其他用户和组对文件的权限
r读 w写 x执行 -没有对应权限
rwx---r-- # 用户可读可写可执行,组不能读写执行,其他用户可读,不能写和执行
rw-rw---- # 用户可读可写不可执行,组可读可写不可执行,其他用户无任何权限
![img](file:///C:\Users\39861\AppData\Local\Temp\ksohtml4800\wps3.jpg)
Ls 目录名 显示指定目录内容
![img](file:///C:\Users\39861\AppData\Local\Temp\ksohtml4800\wps4.jpg)
通配符
*任意多个字符
?一个字符
[abc]abc字符中的任意一个
[a-f]a到f字符的任意一个
cd /bin # 把当前目录切换为根目录的bin目录
ls *l # 查看前面任意字符,最后l结尾的文件或者目录
ls l* # 查看l开头,后面任意
ls a*l # 查看a开头,l结尾,中间任意
ls l? # l开头,后面只有一个任意字符
ls [abc]* # a或者b或者c开头,后面任意
ls [a-g]* # a到g之间任意开头,后面任意
![img](file:///C:\Users\39861\AppData\Local\Temp\ksohtml4800\wps5.jpg)
Chmod修改权限
u用户user,g组group,o其他other,a所有all
+增加-去除=直接赋值
cd # cd直接回车代表回到用户的主目录
touch a.txt # 新建一个文件,用于练习chmod命令
chmod u+r a.txt # 为a.txt所属用户增加r权限
chmod u-r a.txt # 所属用户去掉r权限
chmod g+rw a.txt # 组增加r和w权限
chmod o-rwx a.txt # 其他用户所有权限都去掉
chmod a+rwx a.txt # 所有用户增加所有权限
chmod u=r a.txt # 给所属用户赋值r,wx不要
chmod a=r a.txt # 给所有用户入职r,wx不要
![img](file:///C:\Users\39861\AppData\Local\Temp\ksohtml4800\wps6.jpg)
数字法
R4 w2 x1
chmod 777 a.txt rwxrwxrwx
chmod 567 a.txt r-xrw-rwx
chmod 123 a.txt --x-w--wx
Cd切换当前目录
cd 目录名 进入指定的目录
cd .. 回到上级目录
cd
cd ~ 回到用户的主目录
cd / 回到根目录
![img](file:///C:\Users\39861\AppData\Local\Temp\ksohtml4800\wps7.jpg)
相对路径和绝对路径
相对路径总是从当前目录开始计算
cd dbs # 进入当前目录下的dbs目录
cd .. # 返回当前目录的上级目录
绝对路径总是从根目录开始
cd / # 回到根目录
cd /home # 回到根目录的home下
cd /bin # 回到根目录的bin目录下
![img](file:///C:\Users\39861\AppData\Local\Temp\ksohtml4800\wps8.jpg)
cd # 回到主目录
cd ..
cd
cd /home
cd
cd dbs
cd
cd /home/python/dbs
cd
cd ../../bin
cd
cd /bin
Touch
如果文件不存在,创建新文件
如果文件存在,修改文件的最后修改日期
touch a.txt
touch b.txt
Mkdir
创建目录
-p创建有层级关系的多级目录
mkdir abc # 创建一个abc目录
mkdir -p a/b/c # 创建a目录,里面有b目录,里面有c目录
rm
删除文件或者目录
-r删除目录
-f强制删除,即使不存在,也不提示
rm a.txt # 删除文件a.txt
rm -r abc # 删除目录abc
rm -f a.txt # 删除文件a.txt,即使文件不存在,也不报错不提示
rm -rf abc # 删除目录abc,即使目录不存在,也不报错不提示
![img](file:///C:\Users\39861\AppData\Local\Temp\ksohtml4800\wps9.jpg)
cp拷贝文件
cp 源文件 目标文件
-r 如果是目录,那么就需要加r参数
-i 如果目标文件已经存在,i参数会提示是否覆盖目标文件
cd
touch a.txt
mkdir abc
cp a.txt abc/a.txt # 把文件a.txt拷贝到目录abc下,文件名还叫a.txt
cp a.txt abc/b.txt # 把文件a.txt拷贝到目录abc下,文件名改为b.txt
cp -i a.txt abc/b.txt # 把文件a.txt拷贝到目录abc下,文件名改为b.txt,如果b.txt已经存
在,会提示是否覆盖
mv移动文件
mv 源文件 目标文件
mv命令与cp命令语法基本一致,区别是cp之后源文件存在, mv之后源文件不存在
cd
touch a1.txt
mv a1.txt abc/a1.txt # 把a1.txt移动到abc目录下,名字还叫a1.txt
mv abc/a1.txt a1.txt # 把abc目录下的a1.txt移动到当前目录
mv a1.txt a2.txt # 把a1.txt改名为a2.txt
![img](file:///C:\Users\39861\AppData\Local\Temp\ksohtml4800\wps10.jpg)
cat查看文件
查看文件内容
cd /proc
cat cpuinfo # 查看文件cpuinfo的内容
cat version # 查看文件version的内容
cat -n cpuinfo # 显示文件内容同时显示行号
cat -b cpuinfo # 显示文件内容,空行不编号
more分屏显示
查看文件内容,如果内容特别多,会自动分屏显示
more memino # 查看文件meminfo内容,如果内容一屏显示不下,会自动分屏, 按空格键显示下一屏
grep查找指定内容
在指定的文件中查找指定的内容
grep '要找的内容' 文件名
grep 'cpu' cpuinfo # 在文件cpuinfo中查找字符串cpu
grep -n 'cpu' cpuinfo # 查找字符串cpu,并显示行号
grep -v 'cpu' cpuinfo # 查找没有字符串cpu的行
grep -i 'cpu' cpuinfo # 查找字符串cpu不区分大小写
Grep的模式查找
^字符 # 查找以指定字符开头的行
字符$ # 查找以指定字符结尾的行
^字符.*字符$ 查找指定字符开头,指定字符结尾的行
grep ^a cpuinfo # 查找字符a开头的行
grep 0$ cpuinfo # 查找字符0结尾的行
grep ^a.*0$ # 查找a开头,0结尾的行
Echo回显
echo hello # 执行结果就是显示hello
echo aaaaa # 执行结果就是显示aaaaa
Clear清除屏幕
clear # 把当前屏幕清空
重定向
Linux允许把一个命令执行的结果,放入另外一个文件中
重定向符
>如果目标文件不存在,就创建文件,如果存在就覆盖文件
>>如果目标文件不存在,就创建文件,如果存在就在文件后面追加
cd
ls > a.txt # 把ls命令执行的结果放入a.txt中,如果a.txt文件不存在就创建,如果存在就覆盖
ls -l >> a.txt # 把ls -l命令执行结果方法哦a.txt,如果a.txt不存在就创建,如果存在,在文件
内容后面追加
![img](file:///C:\Users\39861\AppData\Local\Temp\ksohtml4800\wps11.jpg)
管道 |
Linux允许把一个命令的输出作为另一个命令的输入
命令1 | 命令2
ls -l > a.txt
grep ^d a.txt
# 把以上两步合成一步的语法
ls -l | grep ^d
ls -al | more # 把ls -al的结果分屏显示
![img](file:///C:\Users\39861\AppData\Local\Temp\ksohtml4800\wps12.jpg)
![img](file:///C:\Users\39861\AppData\Local\Temp\ksohtml4800\wps13.jpg)
Find
查找指定文件
find 开始目录 -name 文件名
find ./ -name a.txt # 从当前目录开始查找所有子目录,是否有文件a.txt
Ln
Ln作用是创建一个链接文件,链接文件类似于windows的快捷方式
-s创建软连接
ln a.txt a # 给文件a.txt创建一个硬链接a
ln -s a.txt aa # 给文件a.txt创建一个软链接aa
硬链接和软链接的区别
硬链接文件与源文件大小一致
软链接不管源文件多大,总是很小
源文件每多一个硬链接ls -l的时候显示硬链接数会增加1
软链接不会影响ls -l显示的硬链接数
当源文件不存在了,硬链接可以使用,但软链接就无效了
目录的权限
R--可以用ls查看目录的内容
W--可以在目录下增加和删除文件
X--可以通过cd进入目录
操作这个练习的步骤
回到主目录下
创建一个目录
尝试用chmod修改这个目录的权限,然后ls查看目录,或者cd进入目录,或者在目录下增加文件
Cd user进入当前目录下的user目录
Cd /user 进入根目录下的user目录
命令1 | 命令2
Ls | grep
Ls -a | more
命令1必须有输出, 命令2必须能读文件
如果只在当前目录查找文件用ls,在当前文件的子目录查找用find
day2
随堂材料
cd user # 进入当前目录下的user目录
cd /user # 进入根目录下的user目录
cd -user # 这样写是不对的
cd *
命令1 | 命令2
命令1必须有输出 命令2必须能读文件
ls | more
ls | grep
grep | ls
/etc目录下有文件ucf.conf
/proc目录下有文件cpuinfo
把这两个文件通过vi, 内容合并为一个文件,文件在用户的主目录下,文件名为a1.txt
文件第一行修改为hello
最后一行修改为world,保存a1.txt退出
gzip
压缩和解压文件
压缩--gzip 要压缩的文件
压缩后源文件不存在
解压--gzip -d 要解压的文件
解压后,压缩文件不见了
ls -l > a.txt
gzip a.txt
gzip -d a.txt.gz
zip
压缩和解压文件
压缩:zip a.zip a.txt#把文件a.txt压缩为 a.zip
#压缩完之后,源文件和压缩文件都存在
解压:uzip a.zip
#解压之后,压缩文件a.zip仍然存在
linux和unix下,首选用gzip压缩,zip压缩是为了和windows有通用的压缩格式
tar
把多个文件或者目录打包成一个文件
打包:tar -cvf 打包文件.tar 要打包的目录
查看打包文件内容:tar -tvf 打包文件.tar
解包:tar -xvf 打包文件.tar
mdkir abc
cd abc
#在abc目录下随便创建几个文件
cd ..#打包abc目录,一定要返回abc的上级目录
tar -cvf abc.tar abc#把目录abc打包成一个文件abc.tar
rm -r abc#已经打包成文件了,abc目录没用了
tar -tvf abc.tar#查看tar文件内容
tar -xvf abc.tar解包
tar和gzip的配合使
不会单独使用tar,实际场景是tar之后总是用gzip压缩
z参数可以实现自动使用gzip压缩和解压
打包同时压缩:tar -zcvf 打包压缩文件名.tar.gz 目录名
解压后解包:tar -zxvf 打包压缩文件名.tar.gz
tar -zcvf abc.tar.gz abc#把abc目录打包并压缩为abc.tar.gz
tar -zxvf abc.tar.gz#把文件解包同时解压
df
查看磁盘使用情况
df
df -h用人性化方式显示
ps
查看系统进程信息
进程就是正在运行的程序
ps aux或者ps -aux效果相同
top
动态查看进程信息c
top#推出top界面按q键
kill
终止进程
kill PID
kill -9 pid强制杀死进程pid
使用kill的步骤
- 先用ps aux找到要杀的进程pid
- 然后用kill pid杀死
ping
检查与目标主机是否网络联通
ping 目标域名或者ip地址
ifconfig
查看网卡信息
ifconfig
su
切换用户
su - 用户名
如果是root,切换到其他用户不需要密码
su - root #等价于su - 切换到root用户的主目录
su root等价于 su
-代表切换用户,同时把当前目录修改为用户的主目录
没有- 代表只切换用户,不改变当前用户的目录
exit
返回前一个用户
su切换到用户,可以用exit返回到之前的用户
useradd
增加用户
useradd -d 目录名
useradd -m 目录名
- 只有root有权限添加用户,所有执行useradd前先切换到root用户
- -d指定添加用户的主目录
- -m如果指定的用户不存在,就自动创建这个目录
- 用户的主目录和用户名一样
- 主目录都要放到/home下
su - #切换到root用户的主目录
useradd -d /home/user1 user1 -m#创建一个用户名叫user1,主目录在/home/user1,如果主目录不存在,自动创建
passwd
修改密码.
passwd 用户名,省略用户名代表修改用户自己的密码
普通用户只能修改自己的密码,只有root用户才能修改其他用户的密码
passwd user1 #修改用户user1的密码
whoami
显示当前登录用户名
whoami
userdel
删除用户
- 只有root用户才有权限删除用户
- r删除用户的主目录和邮箱
- f强制删除,即使用户已经登陆,也删除
不要用user1用户su到root用户
su -
userdel -rf user1
user1最好不是登陆状态
vi
-
用vi新建一个文件--vi a.txt
-
输入内容--hello
进入vi后按i键(插入文本)接下来可以输内容
-
保存退出--按esc保存,按冒号,输入wq回车
vi的三种模式
- 命令模式--第一次进入vi,默认就是命令模式
- 输入模式--在命令模式下按i键,进入输入模式//输入模式下按esc,回到命令模式
- 末行模式--在命令模式下按冒号进入末行模式//输入wq进入命令模式
- 不论在什么模式,按esc总能回到命令模式
- 输入模式不能直接进入末行模式
vi的启动方式
- vi新文件 创建一个新文件
- vi 已有文件--打开文件
- vi 空--没有输入文件,先进入vi的命令模式
从命令模型进入输入模式的指令
- i--在光标当前位置插入
- a--在光标后面的位置插入
- o--在关闭所在行的下一行插入
- O--在光标所在行的上一行插入
- A--在关闭所在行的行尾插入
- L--在光标所在行的行首插入
启动vi没有指定文件名的操作方式
-
如果启动vi没有输入任何内容--按冒号进入末行,接着按q回车
-
启动vi输入了内容
1.不保存退出(先回到命令行//按冒号进入末行,输入q!)
2.保存退出(先回到命令行//按冒号进入末行,输入w 文件名,末行继续输入q)
命令模式下的删除指令
- x--删除光标所在的一个字符
- dd--删除光标所在的一行
- ndd--n是数字,代表删除从光标开始向下指定的数量行eg 5dd删除光标一下5行
命令模式下的撤销指令
- u--撤销
- ctrl+r--反撤销
命令模式下的复制和粘贴
- yy--复制光标所在的一行
- nyy--复制光标所在向下n行eg3yy
- p--在光标以下进行粘贴
命令模式下的查找指令
/要查找的字符串
- n--查找下一个
- N--查找上一个
末行模式指令
- w--保存不退出
- w 文件名--保存到指定文件
- wq--保存退出//不可写qw
- q!--不保存退出
- q--如果文件内容没有修改,q直接退出||如果文件修改,不能用q退出,否则报错
案例
cd
vi /proc/cpuinfo # 进入vi后在命令模式下27yy,代表拷贝27行,退出vi
vi /etc/ucf.conf # 把光标移动到文件最后,按p,把刚才的内容粘贴过来
# 把第一行内容修改为hello,最后一行修改为world
# 回到末行模式 w a1.txt
# q!退出vi