linux常用命令
vim命令
1. VIM初识
三种模式:
命令行模式(Command mode)
输入模式(Insert mode)
底线命令模式(Last line mode)
vi/vim操作流程:
1. vi 打开文件 此时进入命令模式,你可以输入 i 命令,进入编辑模式
2. 在编辑模式下,开始输入字符串
3. 写完之后, 按下 esc 回到命令模式,按下 : 进入底线命令模式
4. :w 写入不退出 :wq! 写入且强制退出
2.vim的三种模式
- 命令模式(Command mode)
- 输入模式(Insert mode)
- 底线命令模式(Last line mode)
3.1在命令模式下
移动光标
w(e) 移动光标到下一个单词
b 移动到光标上一个单词
数字0 移动到本行开头
$ 移动光标到本行结尾
H 移动光标到屏幕首行
M 移动到光标到屏幕的中间一行
L 移动光标到屏幕的尾行
gg 移动光标到文档的首行
G 移动光标到文档尾行(重要指数*****)
o 当前光标下一行,并进入编辑状态
O 当前光标上一行,并进入编辑状态
i 当前光标下处于编辑模式
A 当前行结尾处于编辑模式
ctrl + f 下一页
ctrl + b 上一页
`. 移动光标到上一次的修改行
查找
/ ? 搜索(按n向下查找,按N向上查找)
/tiger 在整篇文档中搜索tiger字符串,向下查找(重要指数*****)
?tiger 在整篇文档中搜索tiger字符串,向上查找(重要指数*****)
* 查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处
# 查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处
gd 找到光标所在单词匹配的单词,并停留在非注释的第一个匹配上
% 找到括号的另一半!!
复制,删除,粘贴
yy 拷贝光标所在行(重要指数*****)
dd 删除光标所在行(重要指数*****)
D 删除当前光标到行尾的内容
dG 删除当前行到文档尾部的内容
p 粘贴yy所复制的内容(重要指数*****)
x 删除光标所在的字符
u 撤销上一步的操作(重要指数*****)
Ctrl + r 反撤销
数字与命令
3yy 拷贝光标所在的3行(重要指数*****)
5dd 删除光标所在5行(重要指数*****)
3.2在底线命令模式下
:q! 强制退出
:wq! 强制写入退出
:set nu 显示行号
:数字 调到数字那行
:! command 暂时离开vim指令模式,执行command的结果
例如 :!ip a 临时看一下ip信息,然后可以回到vim
:%s/A/B/g 把A换成B 批量替换
:%s/dd/ff/g 把dd换成ff
:set nu 显示vim行号
:set nonu 取消行号
:set nohls 取消高亮显示
:set hls 高亮显示
随时按下esc可以退出底线命令模式
3.3vim按键(光标)移动
移动光标
移动光标的方法
h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符
向下移动5行 5j
向右移动10字符 10l
n(space) 按下数字n,例如10,然后按下空格,光标会向右移动10个字符
3.4 vim的修改配置
全局修改配置
/etc/vim/vimrc
针对当前用户
# 在当前家目录
# 这是一个隐藏文件,需要创建
vim ~/.vimrc
# 设置字符编码
set encoding=utf-8
" tab转换为空格
set expandtab
" tab 为4个空字符
set tabstop=4
" 搜索高亮显示
set hlsearch
" 取消搜索高亮显示
set nohlsearch
常规操作命令
1.修改命令提示符
重启会恢复原样
# 查看命令提示符格式
echo $PS1
# 修改命令提示符格式
PS1="[\u@\h \w \t]\$" # 显示完整工作目录,显示24小时制时间
其他的参数,参考以下
\d :#代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :#完整的主机名称
\h :#仅取主机的第一个名字
\t :#显示时间为24小时格式,如:HH:MM:SS
\T :#显示时间为12小时格式
\A :#显示时间为24小时格式:HH:MM
\u :#当前用户的账号名称
\v :#BASH的版本信息
\w :#完整的工作目录名称
\W :#利用basename取得工作目录名称,所以只会列出最后一个目录
\# :#下达的第几个命令
\$ :#提示字符,如果是root时,提示符为:# ,普通用户则为:$
2.修改主机名
hostnamectl set-hostname 主机名
3.查看历史命令
history
# 执行查看到的history命令(使用感叹号加上命令所在的行号)
!命令行号
例:
!182 # 表示执行182行的命令
4.查看服务器状态命令(top)
top命令
第一行 (uptime)
系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载
第二行:进程信息
进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数
第三行:cpu信息
1.5 us:用户空间所占CPU百分比
0.9 sy:内核空间占用CPU百分比
0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
97.5 id:空闲CPU百分比
0.2 wa:等待输入输出的CPU时间百分比
0.0 hi:硬件CPU中断占用百分比
0.0 si:软中断占用百分比
0.0 st:虚拟机占用百分比
第四行:内存信息(与第五行的信息类似与free命令)
8053444 total:物理内存总量
7779224 used:已使用的内存总量
274220 free:空闲的内存总量(free+used=total)
359212 buffers:用作内核缓存的内存量
第五行:swap信息
8265724 total:交换分区总量
33840 used:已使用的交换分区总量
8231884 free:空闲交换区总量
4358088 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
5.查看ip和端口信息
netstat命令
ss -tunlp
netstat -tunlp
相关参数:
netstat [选项]
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-l或--listening:显示监控中的服务器的Socket;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-a或--all:显示所有连线中的Socket;
6.kill停止进程
ps -ef | grep vim # 查看进程之后可以结束
kill -9 进程ID # 强制结束进程
pkill 使用关键字进行匹配并结束进程
pkill vim # 表示结束vim关键字相关的进程
killall nginx
7.查看文件大小
df
df -h # 查看主要磁盘文件大小
du
用法
du 【参数】【文件或目录】
-s 显示总计
-h 以k,M,G为单位显示,可读性强
# 查看单个目录和文件的大小
du -sh VMware.exe
du -sh oldboy
du -sh /home
du -sh /etc
du -sh /etc/passwd
du -sh /etc/shadow
8.网络防火墙问题
如果遇到了防火墙的问题
1 关闭防火墙
默认已经使用firewall作为防火墙了
iptables -L 查看防火墙规则
iptables -F 清空防火墙规则
systemctl status firewalld # 查看防火墙的运行状态
systemctl stop firewalld # 停止防火墙
systemctl start firewalld # 停止防火墙
systemctl disable firewalld # 永久关闭防火墙
systemctl is-enabled firewalld.service#检查防火墙是否启动
2 美国网络安全局的防火墙
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,这个功能管理员又爱又恨,大多数生产环境也是关闭的做法,安全手段使用其他方法。
getenforce # 查看状态
setenforce 0/1 # 0代表禁用1为启用
永久关闭selinux
(1)打开配置文件
1.修改配置文件,永久生效关闭selinux
cp /etc/selinux/config /etc/selinux/config.bak #修改前备份
2.修改方式可以vim编辑,找到
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
3.用sed替换
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
4.检查状态
grep "SELINUX=disabled" /etc/selinux/config
#出现结果即表示修改成功
9.wget命令
# 下载单个文件
wget http://images.lxh1.com/python_spider/spider-1.png
# 递归下载路飞所有资源,保存到www.luffycity.com文件中
wget -r -p http://www.luffycity.com
10.开关机命令
reboot 或 init 6命令用于重启机器
poweroff 或 init 0用于关闭系统
shutdown -h now # 立即关机
shutdown -r now # 立即重启
halt # 关机
exit # 退出
logout # 注销
runlevel # 查看当前运行级别
init一共分为7个级别,这7个级别的所代表的含义如下
0:停机或者关机(千万不能将initdefault设置为0)
1:单用户模式,只root用户进行维护
2:多用户模式,不能使用NFS(Net File System)
3:完全多用户模式(标准的运行级别)
4:安全模式
5:图形化(即图形界面)
6:重启(千万不要把initdefault设置为6)
11.linux时间同步
1 查看时间
date
2 修改时间
参数:
-s # 修改时间
# 命令语法: date 月日时分年
date 073011482019
3 显示格式化时间
date +"%Y-%m-%d %T"
4 硬件时钟的查看
hwclock
5 同步系统时间和硬件时间,可以用hwclock命令
//以系统时间为基准,修改硬件时间
[root@oldboy_python ~ 10:29:07]#hwclock -w
//以硬件时间为基准,修改系统时间
[root@oldboy_python ~ 10:29:21]#hwclock -s
6 根据时间服务器同步时间
ntpdate -u ntp.aliyun.com
7 显示系统负载
uptime 查看系统负载
12.DNS解析
DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。
DNS的解析原理:
如果我想要访问www.lxh1.com
1 浏览器会在自己的DNS缓存里面去找IP地址与域名的对应关系
2 如果没有,就会去本地hosts文件中去找
3 如果本地hosts文件没有,就会去计算机中指定的DNS服务器的数据库中去找
常见的DNS服务器有哪些
谷歌的DNS服务器: 8.8.8.8
114: 114.114.114.114
腾讯的DNS服务器:119.29.29.29
阿里的: 223.5.5.5/223.6.6.6
电信的DNS: 202.96.134.133/202.96.128.86/202.96.128.166
其他: 1.1.1.1/1.2.4.8
本地强制dns解析文件/etc/hosts
# windows下
c:\Windows\system32\drivers\etc\hosts
# linux下
/etc/hosts
(5) nslookup域名解析工具
nslookup
nslookup www.lxh1.com
13.计划定时任务(crond)
(1) 查看服务是否运行
systemctl status cron
(2) crontab定时任务配置
格式(分时日月周)
# 五个星分别代表分时日月周
* * * * *
分 时 日 月 周
/n n数字 */10 * * * * 每隔/10分钟 /隔
- 从哪里来到哪里去,连贯,连续时间
, 分割,不连贯,没连续的用逗号
例: 设置一个每分钟执行一次的定时任务
crontab -e # 打开定时任务配置文件
# 写入定时任务代码
* * * * * echo "这是日记记录呀" >> /tmp/log.log
实时查看
tail -f /tmp/log.log
计划任务相关练习:
所有命令一定要用绝对路径来写!
#每分钟执行一次命令
* * * * * systemctl restart network
#每小时的3,15分钟执行命令
3,15 * * * * systemctl restart nginx
#在上午8-11点的第3和第15分钟执行
3,15 8-11 * * * 执行命令
#每晚21:30执行命令
30 21 * * * 执行命令
#每周六、日的1:30执行命令
30 1 * * 6,0 执行命令
#每周一到周五的凌晨1点,清空/tmp目录的所有文件
0 1 * * 1-5 rm -rf /tmp/*
#每晚的21:30重启nginx
30 21 * * * /opt/nginx112/sbin/nginx -s reload
#每月的1,10,22日的下午4:45重启nginx
45 16 1,10,22 * * systecmctl restart nginx
#每个星期一的上午8点到11点的第3和15分钟执行命令
3,15 8-11 * * 1 执行命令
14.yum工具使用
yum repolist all # 列出所有仓库
yum list all # 列出仓库所有软件包(重要指数*****)
yum info 软件包名 # 查看软件包信息
yum install 软件包名 # 安装软件包(重要指数*****)
yum reinstall 软件包名 # 重新安装软件包
yum update 软件包名 # 升级软件包(重要指数*****)
yum remove 软件包名 # 移除软件包(重要指数*****)
yum clean all # 清除所有仓库缓存(重要指数*****)
yum makecache # 创建新的缓存(重要指数*****)
yum check-update # 检查可以更新的软件包
yum grouplist # 查看系统中已安装的软件包
yum groupinstall 软件包组 # 安装软件包组
yum search 软件包名 # 查找包
14.1.rpm工具
rpm -qa # 查询软件是否安装 ,query查询的意思,a就是all
rpm -ql # 显示软件包的内容list列表
rpm -ivh
rpm -e # 删除软件包
rpm -qf 绝对路径 # 显示命令或软件属于哪个软件包
15.安装Lrzsz(ftp)
#安装此软件,即可拖拽上传下载linux代码到windows
yum install lrzsz
# 只能文件,不能文件夹
# 发送到 本地
sz 文件名
# 上传文件
rz
16.系统服务管理命令
在RHEL7系统:
systemctl restart nginx # 重启nginx服务
systemctl start nginx # 启动nginx服务
systemctl stop nginx # 停止nginx服务
systemctl status nginx # 查看nginx服务状态
在RHEL6系统:
service nginx status # 查看nginx服务状态
'''
17.常用配置文件
# 查看网卡信息
ifconfig | ip add
# 查看子网掩码
route -n
# 重启网络
systemctl restart network
#网卡配置文件 (重要指数*****)
/etc/sysconfig/network-script/ifcfg-eth0
#修改机器名以及网卡,网管等配置 (重要指数*****)
/etc/sysconfig/network
#linux的dns客户端配置文件,实现域名和ip的互相解析 (重要指数*****)
/etc/resolv.conf
#本地dns解析文件,设定ip和域名的对应解析,开发测试最常用的临时域名解析 (重要指数*****)
/etc/hosts/
#系统全局环境变量永久生效的配置文件,如PATH等 (重要指数*****)
/etc/profile
#用户的环境变量 (重要指数*****)
~/.bash_profile
~/.bashrc
#存放可执行程序的目录,大多是系统管理命令
/usr/sbin
#存放用户自编译安装软件的目录 > 等同于C:\Program files (windows)
/usr/local
#关于处理器的信息,还可以top指令查看
/proc/cpuinfo
#查看内存信息,还可以free -m
/proc/meminfo
文件相关操作命令
0.查看和切换命令
除了查看显示的文件名,还可以查看文件的状态大小
ls # 列出目录内容
ls 参数:
-l 以长格式列出目录内容(*)
-a 列除目录中所有内容(*)
-h 以单位可读方式列出(*)
-d 列出目录 -i 显示文件索引号 -p 在文件夹后面加/表示目录
--color=auto 对列出内容增加颜色
--time-style=long-iso 改变详细信息中的时间格式
-F 在列出的文件末尾加字符说明文件类型
cd # 切换目录
cd 参数:
~ 用户家目录
. 当前目录
.. 上一级目录
- 上一次所在目录
pwd # 查看当前绝对路径
# 可以配置快捷方式
vim .bashrc
# 或者直接 alias修改
alias ll="ls -la"
1.创建目录和文件与删除
mkdir 和touch命令
# 递归创建目录
mkdir -p /opt/oldboy/qishifour/zhangnan/gaohui
# 创建多个目录(注意: 大括号里面不能加空格)
mkdir /opt/{a,b,c,d}
mkdir 80{0..3} # 创建800,801,--803目录
# 创建多个文件
touch {a,b,c,d}
rm #删除
rm 参数:
-r 递归删除文件
-f 强制删除不提示
rm -rf /* # 终极命令,此命令乃大招,用者保重
2.查看文件内容
cat命令
参数:
-n 显示行号
-A 显示文件属性
# 查看文件,显示行号
cat -n xxx.py
# 只查看文件
cat xxx.py
# 在每一行的结尾加上$符
cat -E 1.txt
注意: cat命令有一个缺点, 不能查看大文件
# 在passwd文件内输入内容
cat >> /opt/passwd << EOF
这是一段文字
这是一段文字
EOF
more和less命令
more /etc/passwd
按下空格space是翻页
按下b键是上一页
回车键向下读取内容
less /etc/passwd
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
3.查看文本首末尾内容
head、tail
参数:
-n 查看n行
-f 动态显示
head -10 /etc/passwd # 查看前10行内容
tail -10 /etc/passwd # 查看后10行内容
# 查看10-20行内容
head -20 /etc/passwd | tail -10
#持续刷新显示
tail -F xx.log
4.复制和移动(cp|mv)
cp和mv命令
cp 原文件 目录文件
复制 > copy > cp
# 移动xxx.py到/tmp目录下
cp xxx.py /tmp/
# 移动xxx.py顺便改名为tiger.py
cp xxx.py /tmp/tiger.py
Linux下面很多命令,一般没有办法直接处理文件夹,因此需要加上(参数)
cp -r 递归,复制目录以及目录的子孙后代
cp -p 复制文件,同时保持文件属性不变
cp -f 覆盖已经存在的目标文件而不给出提示。
cp -a 相当于-pdr, 类似与Windows系统的复制快捷方式
# 递归复制test文件夹,为test2
cp -r test test2
cp是个好命令,操作文件前,先备份
cp main.py main.py.bak
# 移动文件,也可以文件重命名
mv 同cp 差不多
5.查找命令(find)
find 在哪里(目录) 什么类型(文件类型) 叫什么名字(文件名)
参数
-name 按照文件名查找文件
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
s - socket文件
find /tmp/ -type f -name "oldboy.py"
# 找出/tmp所有以 .txt 结尾的文件
find /tmp/ -type f -name "*.txt"
# 找到/etc下所有名字以host开头的文件
find /etc -name 'host*'
# 找到/opt上一个名为settings.py(查找django项目里面的settings配置文件)
find /opt -name 'settings.py'
查找文件位置
which命令
# 查找文件位置
which 命令
whereis命令
# 也是查找文件位置
whereis 命令
locate
# 通过名字查找文件
locate 命令
6.管道命令(|)
管道符前面的命令输出结果,成为后面命令的输入(二次过滤)
# 找到关键字为vim的进程
ps -ef | grep vim
# 查找mysql/nginx/django相关的进程
ps -ef | grep mysql
ps -ef | grep nginx
ps -ef | grep manage.py
# 检查python程序是否启动
ps -ef|grep "python"
# 将ps -ef的结果输出到文件中
ps -ef > /opt/ps.txt
# 找到/tmp目录下所有txt文件
ls /tmp|grep '.txt'
# 检查nginx的端口是否存活
netstat -tunlp |grep nginxs
7.过滤命令(grep)
三剑客之一(grep,sed,awk)
文本过滤工具,将过滤的内容整行输出
grep命令用于查找文档里面关键字相关的信息
语法:
grep [参数] [--color=auto] [字符串] filename
参数详解:
-i : 忽略大小写
-n : 输出行号
-v : 反向选择,把不想要的排除
--color = auto : 给关键词部分添加颜色
-o : 只输出匹配的内容
-w : 按照单词过滤
-E : 过滤多个字符
-A : 匹配过滤内容之后的N行
-B : 匹配过滤尼尔之前的N行
-C : 匹配过滤内容前后的N行
grep "zhang" /etc/passwd # 在/etc/passwd文件下查找关键字为zhang的内容
grep "liu" /etc/passwd # 在/etc/passwd文件下查找关键字为liu的内容
grep -n "liu" /etc/passwd # -n表示显示行号
grep -v "liu" /etc/passwd # -v 显示相关的内容
# 查询过滤settings.py中的#开头和空白行的内容,重新输入到settings1.py中
cat settings.py |grep -v ^# | grep -v ^$ > settings1.py
# 查询过滤掉file文件中以abc结尾的内容
cat file | grep -v abc$
8.字符流编辑器命令(sed)
流编辑器
三剑客之一(grep,sed,awk)
参数:
-n # 取消默认输出,常与sed内置命令p连用
-i # 直接修改文件内容,而不输出到终端,不用-i是输出修改,不修改文件
-e # 允许多此编辑
#替换oldboy.txt中所有的oldboy变为oldboy_python
#此时结果输出到屏幕,不会写入到文件
sed 's/oldboy/oldboy_python/' /tmp/oldboy.txt
#使用选项-i,匹配每一行第一个oldboy替换为oldboy_python,并写入文件
sed -i 's/oldboy/oldboy_python/' /tmp/oldboy.txt
#使用替换标记g,同样可以替换所有的匹配
sed -i 's/book/books/g' /tmp/oldboy.txt
#删除文件第二行
sed -i '2d' /tmp/oldboy.txt
# 删除第七行
sed -i '7d' /opt/passwd
# 删除1-6行
sed -i '1,6d' /opt/passwd
#删除空白行
sed -i '/^$/d' /tmop/oldboy.txt
#删除文件第二行,到末尾所有行
sed -i '2,$d' /tmp/oldboy.txt
9.输出输入命令(echo)
echo命令
参数:
-n 不换行输出
-e 激活转义字符
\n 换行
\t 相当于tab键
# 类似于python的打印效果
echo "骑士666"
# 还可以修改文件内容
# 修改并覆盖原文件
echo "骑士666" > /opt/passwd
# 追加到原文件
echo "骑士666" >> /opt/passwd
10.远程复制命令(scp)
scp命令
语法
scp 【可选参数】 本地源文件 远程文件标记
参数
-r :递归复制整个目录
-v:详细方式输出
-q:不显示传输进度条
-C:允许压缩
传输本地文件到远程地址
# 传输本地文件到远程地址
scp 本地文件 远程用户名@远程ip:远程文件夹/
scp 本地文件 远程用户名@远程ip:远程文件夹/远程文件名
# 传输本地文件到远程地址
scp 本地文件 远程用户名@远程ip:远程文件夹/
scp 本地文件 远程用户名@远程ip:远程文件夹/远程文件名
scp /tmp/tiger.py root@192.168.1.155:/home/
scp /tmp/tiger.py root@192.168.1.155:/home/tiger_python.py
# 输入本地文件夹到远程地址
scp -r 本地文件夹 远程用户名@远程ip:远程文件夹/
scp -r /tmp/oldboy root@192.168.1.155:/home/oldboy
# 复制远程文件到本地
scp root@192.168.1.155:/home/oldboy.txt /tmp/oldboy.txt
scp -r root@192.168.1.155:/home/oldboy /home/
11.锁定文件命令(chattr)
chattr命令和lsattr命令
给文件加锁,只能写入数据,无法删除文件
chattr +a test.py # 加锁
chattr -a test.py # 解锁
查看文件隐藏属性
lsattr test.py
12.编辑别名命令(alias)
alias命令(编辑操作命令)
配置文件在~/.bashrc
alias # 添加别名
unalias # 取消别名
# 使用alias命令查看系统别名状态
alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
# 修改别名
alias rm='echo "你这是在作死,以后千万别这么干,这是删库跑路的节奏"
13.Linux终端快捷键
1.tab键 # 用于自动补全命令/文件名/目录名
2.ctrl + l # 清理终端显示 || clear # 清理终端显示
3.ctrl + c # 终止当前操作
4.ctrl + a # 光标切换到命令行开头
5.ctrl + e # 光标切到命令行结尾
6.ctrl + u # 剪切光标前的内容
7.ctrl + k # 剪切光标后的内容
8.ctrl + y # 粘贴剪切的内容
9.ctrl + insert # 复制
10.shift + insert # 粘贴
11.ctrl + d # 删除光标后的内容,没内容为退出当前窗口
14.修改文件时间戳
#修改文件的更改时间,很多黑客就会在恶意修改文件之后再修改成之前的时间
ls -l
echo 'sb' >> xxx.py
# 月份天数时分
touch -t'07101530' 1.txt
15.查看目录结构(tree)
# 此命令需安装
yum install -y tree
tree # 树状结构显示目录
tree 参数:
-L 显示几层
-d 只显示目录
16.文件转化格式
dos2unix
将Windows下编辑的文件转换成liunx格式
17.硬链接与软连接(ln | ln -s)
ln # 创建硬连接,相当于复制加移动文件,源文件还保留,删除硬连接,相对应的的源文件也会被删除
ln -s # 创建软连接,相对于复制
# 例子: 从当前文件软连接到usr/bin/下
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
18.解压缩命令(tar)
tar格式: tar选项 包名 目录/文件名 (压缩)
选项参数:
-z 压缩(*)
-c 创建(*)
-v 输出过程信息(*)
-f 指定文件(*)
-j 以bzip格式打包(*)
-tf 查看包里面的内容
-h 打包软连接对应的文件
--exclude 排除文件 --exclude=被排除文件
-p 打包的时候保持属性,类似于(cp -p)
-X 把要排除的文件放到文件列表里,包名称后面直接跟要排除的文件名
tar解包格式:
-x 解压
tar -zxvf 文件名 | tar -Jxvf 文件名
用户操作和权限操作
1.用户相关
root用户: 最高权限
普通用户: 只拥有部分权限
系统管理员UID为0
系统用户UID为1~999 Linux安装的服务程序都会创建独有的用户负责运行。
普通用户UID从1000开始:由管理员创建
1.1.查看用户
id 用户
whoami # 查看当前用户
vim /etc/passwd # 存放着用户和用户组相关
vim /etc/shadow # 存放着用户的密码等
1.2.创建普通用户
#添加用户
useradd user
#设置密码
passwd 123
1.3切换用户
su - 用户名 # 切换工作环境
su 用户名 # 只切换用户
1.4删除用户
userdel 用户
# 将用户相关的所有文件全部删除
userdel -r 用户
1.5 用户组
groupadd # 添加用户组
groupdel 组名 #删除组
2.sudo命令
普通用户执行root的命令
在root用户下,输入以下命令visudo
visudo # 自带语法检测, 如果语法错误,就会提醒
增加普通用户执行root的命令
root ALL=(ALL) ALL # 在下面新增一条
#
user ALL=(ALL) ALL
保存退出之后,普通用户就可以使用sudo执行任何命令
sudo touch 123.py
3.文件与目录权限
Linux权限三种身份
Linux权限主要依据三种身份来决定:(三个角色)
- user/owner 文件使用者,文件属于哪个用户
- group 属组,文件属于哪个组
- others 既不是user,也不再group,就是other,其他人
权限(三个权限)
- 可读
- 可写
- 可执行
(1)对于目录来讲
- 可读就是读取目录文件列表
- 可写,可以在目录里面创建和删除文件
- 可执行, 可以进入目录
(2)对于文件来讲
- 可读, 表示可以cat查看文件内容
- 可写, 表示可以vim编辑和删除文件内容
- 可执行, 表示可以执行相关的文件(比如shell脚本)
Linux权限的观察
root@qishifour qishi4q]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 31 09:10 text
d rwx r-x r-x 2 root root 6 Jul 31 09:10 text
文件夹 主权限 组权限 其他权限 文件链接数 属主 属组 文件大小 日期时间 文件名
- 一般文件
d 文件夹
l 软连接(快捷方式)
b 块设备,存储媒体文件为主
c 代表键盘,鼠标等设备
(1) 普通配置权限方法
chmod
u = 用户属主 g = 用户属组 o = 其他人
r = 读权限 w = 写权限 x = 执行权限
chmod u+r 666.py # 用户属主添加读权限
chmod g+r 666.py # 用户属组添加读权限
chmod o+r 666.py # 其他人添加读权限
(2) 高阶配置权限方法
读——r——4
写——w——2
执行——x——1
chmod 755 666.py
# 7 = 属主(可读写执行)
# 5 = 属组(可读执行)
# 5 = 其他人(可读执行)
(3) 修改文件所属主和所属组
chown 和 chgrp
chown user:user 666.sh # 冒号分割
chown user.user 666.sh # 点分割
# 只修改用户
chown root 666.sh
# 只修改组
chgrp root 666.sh
通配符与特殊字符
通配符与特性字符
通配符:
* # 代表所有,标示所有
特殊字符:
; # 表示一个命令的结束,也是命令间的分隔符
# # 注释内容
| # 表示管道,管道符
&& # 在命令行中,前面执行成功才会执行后面的
重定向:
> # 标准输出重定向,把文件内容清空后,然后放入自己的内容
< # 标准输入重定向
>> # 追加重定向,不清空内容,在文件尾部追加内容
<< # 将输入结果输出重定向
浙公网安备 33010602011771号