Linux 文件和目录结构
- windows 单用户
- Linux 多用户
- Linux 没有盘符概念,都是用文件夹.
- "/"本目录
- home 目录 下的目录代表各个用户.
- 树状
- Linux 主要目录速查表 可以去网上找
/etc 保存配置文件
/bin 保存执行的二进制文件目录,也就是终端命令.
常用Linux 命令基本使用
- ubantu 调节终端字体快捷键 放大:ctrl + shif + = 缩小:ctrl + -
- ls: 查看当前文件夹下内容
- pwd: 查看当前所在文件夹
- cd [目录名] :切换文件夹
- touch [文件名]:如果文件不存在,新建文件
- mkdir [目录名]:新建文件夹
- rm [文件名]:删除指定文件 rm -r 删除目录
- clear:清屏
终端命令格式
command [-options] [parameter]
[]:代表可选. 注意空格
command: 命令名
-options:选项,可用来对命令控制,也可以省略
parameter: 传给命令参数,可以说是零个,一个,或多个.
查阅终端命令帮助信息.
command --help 帮助
man command 手册
ls -a 查看隐藏文件
ls -l 已列表方式显示
ls -l -h h是用来 更方便的查看文件大小的
选项可以在一个-后一起使用 比如 ls -alh
通配符
"" 代表任意个字符(包括0个) 例如: ls 1或 ls *1.txt ls 1
"?"代表任意一个字符 ,至少一个 例如: ls 1?1.txt
'[]' 可以定义一个匹配的字符组 ls [12]23.txt
"[abc]" 匹配 a b c的任意一个
"[a-f]"匹配从a到f范围内的任意一个字符
cd命令扩展
- 回到home目录的方式 直接 cd 或者 cd ~
- 代表home
cd . 保持在当前目录布标
cd.. 回到上级目录
cd - 最近两个工作目录之间切换
相对目录
绝对目录
文件命令
touch 命令 如果文件不存在 穿件一个空白文件,如果已经存在会修改文件的末次修改日期
mkdir -p 参数 可以递归创建目录. mkdir a/b/c/d/e/f 新建目录不能与当前目录中已有的目录或文件同名.
rm 删除文件或目录 不能恢复(不去回收站)
rm -r 递归删除目录下的内容,删除文件夹时候必须带此参数.
rm -f 强制删除文件 忽略不存在的文件 并且不会提示
rm 可以用通配符一次性删除想要删掉的内容哦.
rm -r * 本文件夹所有文件夹会全部删除 一般不要用.
rm -rf * 禁术 你可以尝试一下
tree[目录名] 以树状图列出文件结构 -d 参数 只显示文件夹
cp 源文件 目标目录 复制 文件 和目录
cp -i 覆盖文件前提示 安全! 有用.
cp -r 若给出的源文件是目录文件,则cp 将递归复制该目录下所有子目录和文件,目标文件必须为一个目录名.
mv 源文件 目标位置 移动文件, 可以给文件和目录用来重命名
mv -i 覆盖之前体质(重命名时更加安全!)
查看文件内容
cat 文件名 查看文件内容 创建文件 文件合并 追加文件内容等功能
cat -b 文件名 显示文件行号 (不包含空行)
cat -n 文件名 (包含空行)
more 文件名 分屏显示文件内容 使用方法和man命令一样
grep 搜索文本 文件名 搜索文本文件内容 是一个强大的文本搜索工具
grep 允许对文本文件进行模式查找,模式 查找就是正则表达式
-n 显示匹配行及行号
-v 显示不包含脾胃文本的所有行 (求反)
-i 忽略大小写
^a 行首,搜寻以a开头的行
k$ 行尾,搜寻以ke结束的行.
如果要搜索的内容用空格要用 " " 把内容引起来.
echo和重定向
echo 把参数重新显示一遍 在日常中很少使用 和重新定向一起使用
重定向:把本应该显示在屏幕上的内容输出到其他位置.用">"表示输出用">>"表示追加
echo touch 1.txt > 1.log
echo touch 123.txt >> 1.log
ls -lh > a..txt 把ls 的内容输出到文件a.txt里面
">"一个大于号会把以前内容覆盖掉.
管道概念 |
Linux允许一个命令的输出可以通过管道作为另一个命令的输入.
要使用管道至少需要两个命令,后面的命令通常使用more 和 grep
ls -lh | more 分屏显示
ls -alh ~ | grep open | more 搜索open的解决过分屏显示
tree / | grep open | more
远程管理常用命令
shutdown 选项 时间 : 关机和重启电脑
默认是关机 -r选项是重启 现在是:now 不指定时间是1分钟之后
shutdown -c 取消关机计划
shutdown 20:25 :20点25会关机
shutdown +10 过十分钟后关机
远程服务器 一般用重启 不要用关机.
ifconfig 查看网卡配置信息
ping
ifconfig | grep inet ::利用通道,只显示ip地址
ssh基础
客户端和服务器都是软件
数据传输是加密的并且是压缩的.
是目前较可靠,专为远程登录回话和其他网络服务提供安全性的协议
ssh [-P port] user@remote
uer: 是远程计算机上的用户名
remote:是远程计算机的地址 ip或域名
port: 是ssh server 监控端口默认是22
scp: 复制文件 只能在linux或unix下进行
scp -P 22 user@remote:desktop/01.py /home
scp -P 22 01.py user@remote:desktop
scp -P 22 -r user@remote:desktop /home
windows用filezilla软件进行文件传输。
ssh 免密码登录
有关ssh配置信息都保存在用户家目录下的.ssh目录下(存储key)
配置公钥
在.ssh 目录下 执行 shh-keygen即可生成ssh钥匙一路回车即可
上传公钥(pub文件)到服务器 :ssh-copy-id user@remote
本地使用私钥对数据加密解密,服务器使用公钥对数据加密解密
非对称加密算法
使用公钥加密的数据需要使用私钥解密
使用私钥加密的数据需要使用公钥解密
配置别名 把复杂的用户地址 变成一个别名
在~/.ssh/config下 追加内容
Host name
HostName ip地址
User user
Port 22
用户权限
用户是Linux系统工作中重要的一环 用户管理包括用户与组管理
在Linux系统中不论是由本机或远程登陆系统每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限
在Linux中 可以指定每一个用户针对不同的文件或者目录的不同权限
为文件/目录的权限包括
读 r 4
写 w 2
执行 x 1
为了方便用户管理提出了组的概念
在实际应用中可以预先针对组设置好权限,然后将不同的用户添加到对应的组中 从而不用依次为每个用户设置权限
ls -l 硬链接概念,表示有几种方式能进入到此文件。
ls -l “-”代表文件 “d”代表文件夹
后面的三组 rwx 分别代表第一组代表用户权限,第二组代表用户组权限,第三组代表来宾权限
chmod +或- r或w或x 文件名/目录名 代表 增加或者减去指定文件夹或文件的权限
三组rwx后面试 所属用户在后面是所属组
如果目录没有可执行权限 不能对目录进行操作
组管理
groupadd 组名 添加组
groupdel 组名 删除组
cat/etc/group 查看组信息
chgrp 组名 文件/目录名 修改文件/目录成都所属组
用户相关命令
创建用户必须要使用两个命令:
useradd -m -g 组名 新建用户名 添加用户 -m自动建立用户家目录 -g指定用户所在的组,否则会建立一个和同名的组
passwd 用户名 设置用户密码 如果是普通用户直接用passwd可以修改自己的账户密码
userdel -r 用户名 删除用户 -r 选项会自动删除用户家目录。
cat /etc/passwd | grep 用户名 查看
id[用户名] 查看用户UID 和GID 用户代号 组代号
who 查看当前登录的用户列表
whoami
passwd 文件 在 /etc/passwd 是村阿阿房用户的信息,由6个分号分成7个信息 分别是:
1.用户名
2.密码 x代表加密
3.UID
4.GID
5.用户全名或本地账号
6.家目录
7.登录使用的shell就是登录之后使用的终端命令ubuntu默认是dash
usermod 主组和附加组
附加组通常用来给用户附加权限。
usermod 可以用来设置用户的主组/附加组和登录shell格式如下:
主组:通常在新建用户时指定,在etc/passwd的第4列GID对应的组
附加族:在etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限
提示:设置了用户的夫家族之后需要重新登录才能生效
修改用户的主组 usermod -g 组 用户名
修改用户的附加组 usermod -G 组 用户名
修改用户登录shell usermod -s /bin/bash
注意 默认使用useradd添加用户是没有权限使用suo以root身份执行命令的,可以使用以下命令,将用户添加到附加组中。
usermod -G sudo 用户名
which(重要)
提示:
/etc/passwd 适用于保存用户信息的文件
/usr/bin/passwd 是用于修改用户密码的程序。
which 命令可以查看执行命令所在的位置:
例如:
which passwd
which ls
which useradd
查看 查找到的问价发现属于root组 对root 可对可写可执行 ,对于其他用户是可读可执行。
bin 和 sbin
在Linux中,觉大都数可执行文件都是保存在/bin /sbin /usr/bin /usr/sbin
/bin 是二进制执行文件目录 主要用于具体应用
/sbin 是系统管理员专用的二进制代码存放目录主要用于系统管理
/usr/bin 后期安装的一些软件
/usr/sbin 超级用户的一些管理程序。
切换用户
su -用户名 切换用户 并且切换目录 -可以切换到用户家目录 否则位置不变
exit 退出表示退出切换的用户身份。
su 不接用户名可以切换到root 但是不推荐使用 不安全
修改文件权限
chown 修改拥有者
chgrp 修改组
chmod 修改权限
修改文件|目录的拥有者:chown 用户名 文件名|目录名
递归修改文件|目录的组:chgrp -R 组名 文件名|目录名
递归修改文件权限: chmod -R 755 文件名|目录名
4 2 1概念 分别是读 写 执行
注意:000 代表 --- 不设置
常用的 分别是 777 和 755 和 644
系统信息相关命令
通常是远程维护服务器的时候使用的。查看服务器上的系统日期和时间/磁盘空间占用情况/程序执行情况。
date 查看系统时间
cal 查看日历(本月) 加-y选项可以查看一年的日历。
df -h disk free 显示磁盘剩余空间
du -h [目录名] diskusage显示目录下的文件大小
进程:通俗讲就是当前正在执行的一个程序.
ps -aux 查看进程的详细状况
top 动态显示运行中的进程.退出按"q"
kill[-9]进程代号(PID) 终止指定代号的进程 -9表示强行终止
ps 默认只会显示当前用户通过终端启动的应用程序
ps 选项说明功能(不需要"-"号):
a: 显示终端上的所有进程包括其他用户的进程
u:显示进程的详细状态
x:显示没有控制终端的进程
提示:使用kill 命令时最好只终止单签用户开启的进程,而不要终止root身份开启的进程,否则可能导致系统崩溃.
其他命令
查找文件
find [路径] -name."py" 查找指定路径下扩展名是.py的文件包括子目录
-name 是选项
如果省略路径 表示在当前文件夹下查找
之前学习的通配符在使用find 命令时同事可用.
还有更多高级使用方法.
文件软链接
就是类似于windows下的快捷方式
ln -s 被链接的源文件(绝对路径) 链接文件名 .建立文件的软连接
注意:
- 没有 -s 选项建立的是硬链接
两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接
2.源文件要使用绝对路径,不能使用先谷底路径,这样可以方便移动连接文件后仍然能够正常使用.
在linux中文件名和文件的数据是分开存储的
打包压缩
在不同的操作系统中 常用的打包压缩方式是不同的
windows 常用rar
mac 常用zip
Linux 常用 tar.gz
打包(只打包 不压缩!)和解包:
tar是Linux中最常用的备份工具,此命令可以把一系列文件打包到一个大的文件中,也可以把打包的大文件恢复成一系列文件
tar命令格式: tar -cvf 打包文件.tar 被打包文件/路径
解包文件:tar -xvf 打包文件.tar
选项说明:
c: 生成档案文件创建打包文件
x: 解开档案文件
v: 列出归档解档过程,显示进度
f: 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后面
注意: f选项必须放在最后,其他选项顺序可以随意.
想要压缩文件用 gzip 对tar包进行压缩
扩展名一般为 .tar.gz
linux中最常见的压缩 文件格式就是:.tar.gz
在tar命令中有一个选项 -z可以调用gzip从而可以方便的实现压缩和解压缩功能
命令格式如下:
压缩文件: tar -zcvf 打包文件.tar.gz 被压缩的文件/路径..
解压缩文件: tar -zxvf 打包文件.tar.gz
解压到指定路径:tar -zxvf 打包文件.tar.gz -C 目标路径
选项 -C 解压缩到指定目录 注意指定的目录必须存在.
bzip2(two)
和gzip基本一样 扩展名为*.tar.bz2
命令中 用 -jcvf 换为-j选项
软件安装
配置软件源
小火车演示 sudo apt install sl
当前进程排名优化软件. sudo apt install htop
主服务器国外太慢,想要更快的速度可以更换镜像源:
图形界面: 系统设置--> 软件和更新-->源代码 --下载自--其他站点-- 填写网址.
可以选择最佳服务器 自动全部测试选择最快
点击关闭
然后重新载入,更新缓存. 要等待.
tips:
问题:正在等待packagekitd退出
解决办法:systemctl stop packagekit 或者 systemctl disable packagekit
通过apt安装卸载软件
安装软件
sudo apt install 软件包
卸载软件
sudo apt remove 软件名
更新已安装的包
sudo apt upgrade