linux文件管理
====快捷键
Ctrl + a :移到命令行首(*)
Ctrl + e :移到命令行尾(*)
Ctrl + u :从光标处删除至命令行首
Ctrl + k :从光标处删除至命令行尾
Ctrl + w :从光标处删除至字首
==控制命令:
Ctrl + l:清屏
Ctrl + c:终止命令
Tab键: 自动补全
查看历史命令: history
查看当前所在的绝对路径:pwd
创建文件: touch
创建目录: mkdir
====文件类型
* - 普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)
* d 目录文件(蓝色)
b 设备文件 block device 设备文件,如硬盘,U盘;
c 设备文件 字符设备文件,比如我们的终端tty1,打印机。
* l symbolic link 即符号链接文件,又称软链接文件 (类似Windows快捷方式)(浅蓝色)
s socket 即套接字文件,用于实现两个进程进行通信
p 管道文件
====文件管理命令
切换目录----cd
表示当前目录: ## .
回到上一级目录: ## cd ..
直接回到家目录: ## cd
切换目录=绝对路径 ## cd /home/alice
回到原来目录: ## cd -
=== echo
echo 加内容 > 加文件名 #覆盖:把之前的内容替换掉
# echo 123 > a.txt
echo 加内容 >> 加文件名 #追加:保留之前的内容,在后面添加新内容
# echo 345345 >> a.txt
当使用echo 123 >> a.txt 这个命令的时候在文件不存在的时候会创建该文件并将内容追加到改文件中
==== 创建目录---mkdir
语法:mkdir -v 详细 -p 递归 目录
# mkdir /home/dir2 /home/dir3 ## 创建两个目录
# mkdir /home/{dir4,dir5} ##创建多个目录
# mkdir -v /home/{dir6,dir7} #-v :verbose 冗长的。显示创建时的详细信息
# mkdir -p /home/dir8/111/222 #-p 创建连级目录,一级一级的创
==== 复制---cp
语法:
cp -v 原路径文件 目标路径文件 ## -v :显示复制的详细信息
cp /opt/111.txt /root/222.txt ## 复制并更改文件名
-r 语法:
cp -r /etc /root/ ## -r : 拷贝目录使用,连同目录中的文件一块拷贝
cp -r /etc/password /etc/hosts /root/111.txt 目标目录 ## -r : 将多个文件拷贝到同一个目录
==== 移动/重命名---mv
语法:
移动; mv 原文件路径 新文件路径
重命名: mv 源文件名 新文件名
==== 删除 ---rm
语法:
# rm -f - 删除普通文件
# rm -rf -删除目录文件
# rm -rf /opt/* -删除目录下的所有文件, - * :为通配符。代表所有
==== 查看普通文件内容---cat、head、tail、grep、less、more
语法:
--cat:
# cat 文件名 - 查看文件
# cat -n 文件名 -显示行数
# cat -A 文件名 -显示包括控制字符(换行符\制表符)
--head:
# head 文件路径 - 默认查看前十行
# head -2 文件路径 - 默认查看前两行
--tail:
# tail 文件路径 - 默认查看后十行
# tail -2 文件路径 - 默认查看后两行
# tail -f 文件路径 - 动态查看文件的尾部
--grep:
# grep '要查找的关键词' 文件\路径 - 过滤文件中带有‘关键字’的内容
# grep '^关键词' 文件\路径 - 过滤文件中以‘关键字’开头的行, ‘^’以什么开头
# grep ‘关键词$’ 文件\路径 - 过滤以‘关键词’结尾的行:$ --以什么结尾
--less:
# less 文件\路径 1.空格键是翻页 回车键是翻行
2.上下箭头可以来回翻
3. /关键字 #搜索 (n按关键字往下翻 N按关键字往上翻)
4.快捷键:q -quit 退出
--more:
more 文件名 空格键是翻页 回车键是翻行
====查看文件详细信息 --- ll、stat
-- ll:
# ll 文件 - 查询文件的详细信息
-- stat :
#stat 文件 - 查询文件更加详细的信息
====文件编辑器---vi、vim
vim分为三种模式:命令模式,插入模式(编辑模式),末行模式(底线命令模式)
-----进入编辑模式——(命令模式转为编辑模式):
*i #在光标所在处进入编辑模式
a #在当前光标后面进入编辑模式
A #在行尾进入编辑模式
*o #在光标的下一行进入编辑模式
大O #在光标的上一行进入编辑模式
# 从编辑模式进入命令模式:ESC
-----命令模式——(命令模式的操作)
光标定位键盘:
hjkl #上下左右
* 0 $ #行首行尾
* gg #页首--文本顶端
* G(shift+g) #页尾--文本底部
3G #进入第三行
* /string #查找字符,n下一个,N上一个 (n N 可以循环的)
-----文本编辑——可以在进入编辑模式之前进行的操作(命令模式的操作)
yy #复制 ,一行
3yy #从光标开始复制3行。在最后粘贴
ygg #从当前光标复制到页首
yG #从光标开始复制到页尾
* dd #删除一行
3dd #从光标开始删除3行
dgg #从光标开始删除到页首
dG #从光标开始删除到页尾
d^ #删除当前光标之前的内容
p #粘贴到本行的下一行
大P #粘贴到本行的上一行
x #删除光标所在的字符
D #从光标处删除到行尾
* u #undo撤销
* r #可以用来修改一个字符
-----扩展命令(尾行)模式:——末行模式(底线命令模式)的操作
shift+: #进入尾行模式(扩展命令模式)
:10 #进入第10行
:w #保存
:q #退出
:wq #保存并退出
:q! #不保存并退出
:wq! 强制保存退出
-----进入其他模式
ctrl+v #进入可视块模式
shift+v #进入可视行模式
-----查找替换——末行模式(底线命令模式)的操作
语法----> :范围 s/old(老的,原来的)/new(新的,现在的)/选项
:s/world/nice/ #替换当前光标所在行
:3s/sbin/nice/ #替换指定行
:1,5 s/nologin/soso/ #从1-5行的nologin 替换为soso
:%s/bin/soso/ #替换所有行
:%s/sbin/nice/g #替换行内所有关键字
注释:%表示替换所有行 g表示行内所有关键字
将文件另存(另存为)——{经常利用另存为,对配置文件进行备份}
语法----> :w 存储到当前文件
:w /tmp/aaa.txt #另存为/tmp/aaa.txt
:1,3 w /tmp/2.txt #从1-3行的内容另存为/tmp/2.txt
-----设置环境 : ——末行模式(底线命令模式)的操作
* :set nu #设置行号 ,显示行号
:set nonu #取消设置行号
:set list #显示控制字符
:set nolist #取消设置字符
========linux用户管理========
用户组:
---group:
# groupadd 用户组名 -创建新的用户组
# groupadd 用户组名 -g gid号 -创建组,并指定gid
---groupmod:
# groupmod -g 新的gid号 用户组名 - ‘-g’:修改组的gid号
# groupmod -n 新组名 旧组名 - ‘-n’ :修改组名
删除组: # groupdel 组名
用户:
创建新用户: # useradd 用户名
# useradd 用户名 -u uid号 -创建新用户,并指定uid号
# useradd 用户名 -s 为用户指定的shell路径 -创建用户并指定shell
# useradd 用户名 -G 主属组,附加组 -创建用户,并指定用户组和附加组
# useradd -g 用户组 用户 - 创建用户并,指定用户组
# useradd 用户名 -u uid号 -s 为用户指定的shell - 创建用户,并指定uid,指定shell
删除用户;
# userdel -r 用户名 ‘-r’ 删除用户,同时删除用户家目录
# userdel 用户名 删除用户,但是不删除家目录
用户密码:
# passwd 用户名 - 更改用户密码
$ passwd 用户名 - 普通用户只能给自己修改密码,而且必须提供原密码
用户操作:
查看用户信息 #id 用户名
修改用户名 # usermod -l 新用户名 老用户名
修改gid号 # usermod 用户名 -g 新gid号
修改uid号 # usermod 用户名 -u 新uid号
组成员管理:
给组添加账户, ‘-a’添加一个用户到组 # gpasswd -a 用户 用户组
同时添加多个用户到组,‘-M’添加多个用户到组 # gpasswd -M 用户 用户组
从组删除用户, ‘-d’删除用户 # gpasswd -d 用户 用户组
文件权限管理
===基本权限
权限对象:
属主------->u
属组------->g
其他人------>o
基本权限类型:
读(read):r ---->4
写(write):w ---->2
执行: x(exec) ----->1
chown:改变文件或目录的所属主以及所属组
修改属主属组 ## chown 属主.属组 文件\文件路径
修改属主 ## chown 属主 文件\文件路径
修改属组 ## chown .属组 文件\文件路径
递归修改---针对目录(可递归到目录下的所有文件) ## chown -R 属主.属组 目录\目录路径
chmod:为文件或目录设置访问权限
[root@linux-server ~]# chmod u+x file1.txt //属主增加执行
[root@linux-server ~]# chmod a=rwx file1.txt //所有人等于读写执行
[root@linux-server ~]# chmod a=- file1.txt //所有人都没有权限
[root@linux-server ~]# chmod ug=rw,o=r file1.txt //属主属组等于读写,其他人只读
[root@linux-server ~]# chmod -R 720 /home/(目录) //递归修改文件权限
[root@linux-server ~]# ll
-rw-rw-r--. 1 tom it 0 Nov 1 15:30 file1.txt
注意:chown和chmod只能在root账户下使用
===高级权限 suid,sgid,sticky
suid ----- 4 提权 (只对二进制命令文件生效,其他不管用)
sgid ---- 2 组继承 (只能对目录设置)
sticky ---- 1 (t权限) 权限控制
===设置特殊权限
a、字符---语法:
chmod u+s file
chmod g+s dir
chmod o+t dir
b、数字
chmod 4777 file
chmod 2770 dir
chmod 1770 dir
目前两种给普通用户提权手段:
sudo: 有针对性,例如针对某个用户以能够以root的身份执行某些命令。
suid: 基本针对所有用户,任何用户在执行有suid权限的程序时(例如/usr/bin/rm),都是以root身份在执行。
visudo #打开配置文件
===文件属性
设置权限
[root@linux-server ~]# chattr +a file1 #不允许修改,只允许追加
[root@linux-server ~]# chattr +i file2 #不允许做任何操作
[root@linux-server ~]# chattr +A file3 #不能修改对文件的最后访问时间
取消权限:把‘+’号换成‘-’号
lsattr file1 file2 file3 ##查看文件的属性
覆盖文件: echo 内容 > 文件
追加文件: echo 内容 >> 文件
管道与重定向
===输出重定向(覆盖,追加)
> ----覆盖
>> ----追加
正确输出: 1> 1>> 等价于 > >>
错误输出: 2> 2>>
错误输出(是指打出的命令是错误的,并且会出现错误提示信息《这个错误信息就是指错误输出》)
正确输出--覆盖 ## date 1> date.txt (注意:如果 > 前面什么都不加默认为1,标准正确输出。)
正确输出--追加 ## date >> date.txt
===echo(Linux中 echo命令主要用于打印字符或者回显,一般起到一个提示的作用。)
> 表示覆盖,原内容被覆盖 ## echo 内容 > 文件\文件路径
>> 表示追加,原内容不变 ## echo 内容 >> 文件\文件路径
===输入重定向
*软件包管理
rpm
#用rpm安装需要考虑如下信息:
1.需要考虑系统的版本需要与rpm对应
2.系统的架构:如32位还是64位
3.需要考虑依赖关系
第一种方法:
查找rpm包的网站: http://rpmfind.net/ http://pkgs.org
#wget下载命令
#wget 下载地址 -O 指定存放路径
#curl 下载地址 -o 另存为的文件路径
注意:要是没有weget工具,用yum -y install wget下载
需要先下载rpm安装包 ## wget http://mirror.centos.org/centos/7/os/x86_64/Packages/unzip-6.0-21.el7.x86_64.rpm(安装包)
rpm安装 ## rpm -ivh 软件包名称(或者跟存放的文件路径)
第二种方法:
直接通过网络连接安装rpm包 ##rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/unzip-6.0-21.el7.x86_64.rpm
===查询:
(从本地的rpm数据库)
-q query (查询)
-l list (列出)
-f file
-a all
*[root@linux-server ~]# rpm -qa | grep 软件名 # 查找软件是否安装
[root@linux-server ~]# rpm -ql 软件名 #查询安装的文件在哪里
[root@linux-server ~]# rpm -qf /usr/share/httpd/noindex #查询该文件属于哪个包
[root@linux-server ~]# rpm -qf /etc/passwd #查询某一个文件是哪个软件产生的:只能查询已经安装好的软件
===卸载——只能删除所安装的那个软件,不能删除所依赖的安装包
卸载 ##rpm -e 软件名称
#可以自动解决rpm软件依赖关系,虽然是通过yum安装的但是最后执行的还是rpm,也就是说没有rpm命令yum也就不能用了。
分类:本地yum和远程yum
本地yum:
file://
远程yum:
http://
ftp://
清楚缓存————yum clean all
构建缓存————yum makecache
下载安装应用或命令————yum -y install 软件名 (-y:跳过确认直接安装)
删除应用或命令————yum remove
查看安装包————yum reoplist
查看系统已经安装好的软件和没有安装的软件(源里存在即可查到):
# yum list
## yum list | wc -l // 显示多少行数
查看命令属于哪个软件 # yum provides rz
查看命令属于哪个软件 ## yum provides rz(命令)
远程yum的流程:
1、yum -y install 软件名 #下载某个应用
2、访问yum源信息 /etc/yum.repos.d/
3, 识别下载地址,建立连接(跟yum仓库建立连接)
4,安装对应软件
本地yum的流程:
1,yum -y install 软件名 #下载某个应用
2、访问yum源信息 /etc/yum.repos.d/
3,识别下载路径(找仓库路径)
4,安装对应软件
远程备份yum源流程
1,备份原始*.repo源文件
2、写新的*.repo源文件
3、清理yum缓存:yum clean all
4、构建新缓存:yum makecache
本地换yum源流程:
1、准备rpm本地安装包(一种是镜像,一种是yum缓存下载)
2、备份原始*.repo源文件
3、写新的*.repo源文件
4、清理yum缓存:yum clean all
5、构建新缓存:yum makecache
进程管理
查看进程:
静态查看 ## ps aux \ps -ef
动态进程 ## top\htop
查看指定pid ## ps aux | grep sshd(进程名称)
查看端口 ## netstat -lntp
杀死进程:
kill -9 pid号 ## 杀死此pid号的进程
pkill -9 进程名称 ## 杀死所有带有此进程名称的进程
任务调度的命令
查看当前有多少任务在后台运行 ## jobs
让程序暂停一段时间 ## sleep
让一个任务或者程序在后台执行 ## 程序名 &
将一个在后台暂停的命令,变成继续执行 ## bg
将后台中的命令调至前台继续运行 ## fg
查看当前cpu负载 ## uptime
查看内存使用 ## free -m \free -h
临时清理内存 ## echo 3 > /proc/sys/vm/drop_caches
查看系统的版本和内核 ## cat /etc/redhat-release
查看正在运行的内核版本 ## uname -a
查看内核版本 ## uname -r
修改主机名 ## hostnamectl set-hostname 新主机名
上传 ## rz
下载 ## sz
计划任务
at
创建一次性计划任务 ## at now +5min(时间规格)《五分钟后开始执行》
查看at启动状态 ## systemctl status atd
启动at服务 ##systemctl start atd
查看一次性计划任务 ## atq
删除一次性计划任务 ## atrm 序号
cron
如果软件不存在要安装 crontabs ## yum -y install crontabs
查看cron服务状态 ## systemctl status crond.serbice
需要进入 cd /var/spool/cron 目录中才能编辑任务
编辑当前用户的计划任务 ## crontab -e
查看当前用户的计划任务 ##crontab -l
删除当前用户的所有计划任务 ##crontab -r
去管理当前用户的计划目录 ## crontab -u 用户 参数(-e \-l)
使用者权限文件:
/etc/cron.deny 该文件中所列用户不允许使用crontab命令
/etc/cron.allow 该文件中所列用户允许使用crontab命令
/etc/crontab 系统本身的计划任务