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

通配符与特殊字符

通配符与特性字符

通配符:
    *   # 代表所有,标示所有
特殊字符:
    ;	# 表示一个命令的结束,也是命令间的分隔符
    #   # 注释内容
    |   # 表示管道,管道符
    &&  # 在命令行中,前面执行成功才会执行后面的
重定向:
	>   # 标准输出重定向,把文件内容清空后,然后放入自己的内容
	<   # 标准输入重定向
	>>  # 追加重定向,不清空内容,在文件尾部追加内容
	<<  # 将输入结果输出重定向
	

posted on 2019-07-31 21:44  new_wsh  阅读(128)  评论(0)    收藏  举报

导航