linux
Linux快捷键
1.tab键 用于自动补全命令/文件名/目录名
2.ctrl + l 清理终端显示
3.clear/cls 清理终端显示
4.ctrl + c 终止当前操作
history 显示操作过的指令
ctrl + d 快退出会话
ctrl + shift + r快速登录
删除
ctrl + d 删除光标所在位置上的字符相当于VIM里x或者dl
ctrl + h 删除光标所在位置前的字符相当于VIM里hx或者dh
ctrl + k 删除光标后面所有字符相当于VIM里d shift+$
ctrl + u 删除光标前面所有字符相当于VIM里d shift+^
ctrl + w 删除光标前一个单词相当于VIM里db
ctrl + y 恢复ctrl+u上次执行时删除的字符
ctrl + ? 撤消前一次输入
alt + r 撤消前一次动作
alt + d 删除光标所在位置的后单词
移动
ctrl + a 将光标移动到命令行开头相当于VIM里shift+^
ctrl + e 将光标移动到命令行结尾处相当于VIM里shift+$
ctrl + f 光标向后移动一个字符相当于VIM里l
ctrl + b 光标向前移动一个字符相当于VIM里h
ctrl + 方向键左键 光标移动到前一个单词开头
ctrl + 方向键右键 光标移动到后一个单词结尾
ctrl + x 在上次光标所在字符和当前光标所在字符之间跳转
alt + f 跳到光标所在位置单词尾部
替换
ctrl + t 将光标当前字符与前面一个字符替换
alt + t 交换两个光标当前所处位置单词和光标前一个单词
alt + u 把光标当前位置单词变为大写
alt + l 把光标当前位置单词变为小写
alt + c 把光标当前位置单词头一个字母变为大写
^oldstr^newstr 替换前一次命令中字符串
历史命令编辑
ctrl + p 返回上一次输入命令字符
ctrl + r 输入单词搜索历史命令
alt + p 输入字符查找与字符相接近的历史命令
alt + > 返回上一次执行命令
其它
ctrl + s 锁住终端
ctrl + q 解锁终端
ctrl + l 清屏相当于命令clear
ctrl + c 另起一行
ctrl + i 类似TAB健补全功能
ctrl + o 重复执行命令
alt + 数字键 操作的次数
三个ip地址的区别
0.0.0.0 绑定所有的网卡地址
127.0.0.0 本机回环地址
192。168.16.50
linux之文档与目录结构
所有的文件与目录都是由根目录开始,是目录与文件的源头,然后一个个的分支下来,如同树枝状,被称为目录树。
Shell基本命令
mkdir 创建一个目录
cd /
mkdir oldboy
#递归创建a/b c/d
mkdir -p a/b c/d
#递归创建test/a,b,c,d四个目录
mkdir -p test/{a,b,c,d}
#递归创建文件夹a/b/c/d/e
mkdir -p a/b/c/d/e
参数
-Z:设置安全上下文,当使用SELinux时有效;
-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
--version 显示版本信息。
例子
在目录/usr/meng下建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问
mkdir -m 700 /usr/meng/test
在当前目录中建立bin和bin下的os_1目录,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问
mkdir -p-m 750 bin/os_1
查看目录 ls
查看目录
ls /oldboy
ls . 查看当前目录的内容,这个点可以省略
ls .. 查看上一级的内容
ls -a . 显示当前目录所有的内容和隐藏文件 -a参数是显示all的意思
ls ~ 显示家目录下的文件
ll 加文件名 可以查看文件的创建时间,
-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
-A:显示除影藏文件“.”和“..”以外的所有文件列表;
-C:多列显示输出结果。这是默认选项;
-l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;
-F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;
-b:将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;
-c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;
-d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;
-f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;
-i:显示文件索引节点号(inode)。一个索引节点代表一个文件;
--file-type:与“-F”选项的功能相同,但是不显示“*”;
-k:以KB(千字节)为单位显示文件大小;
-l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;
-m:用“,”号区隔每个文件和目录的名称;
-n:以用户识别码和群组识别码替代其名称;
-r:以文件名反序排列并输出目录内容列表;
-s:显示文件和目录的大小,以区块为单位;
-t:用文件和目录的更改时间排序;
-L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;
-R:递归处理,将指定目录下的所有文件及子目录一并处理;
--full-time:列出完整的日期与时间;
--color[=WHEN]:使用不同的颜色高亮显示不同类型的。
打印当前工作目录
pwd
echo
参数
-e 激活转义字符
使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
a 发出警告声;
删除前一个字符;
c 最后不加上换行符号;
f 换行但光标仍旧停留在原来的位置;
换行且光标移至行首;
光标移至行首,但不换行;
插入tab;
v 与f相同;
\ 插入字符;
nn 插入nnn(八进制)所代表的ASCII字符;
用echo命令打印带有色彩的文字:
文字色:
echo -e "e[1;31mThis is red texte[0m"
This is red text
-
e[1;31m
将颜色设置为红色 -
e[0m
将颜色重新置回
颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37
背景色:
echo -e "e[1;42mGreed Backgrounde[0m"
Greed Background
颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47
文字闪动:
echo -e " 33[37;31;5mMySQL Server Stop... 33[39;49;0m"
红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐
touch(创建文件)
参数
-a:或--time=atime或--time=access或--time=use 只更改存取时间;
-c:或--no-create 不建立任何文件;
-d:<时间日期> 使用指定的日期时间,而非现在的时间;
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify 只更该变动时间;
-r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:<日期时间> 使用指定的日期时间,而非现在的时间;
stat
stat命令用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。
参数
-L:支持符号连接;
-f:显示文件系统状态而非文件状态;
-t:以简洁方式输出信息;
格式化输出参数:
%a 八进制权限
%A 用可读性较好的方式输出权限
#实例1
[root@master tmp]# stat 1.txt
File: '1.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 17348002 Links: 1
(权限)Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
(最近访问)Access: 2018-07-10 15:30:00.000000000 +0800
(最近更改)Modify: 2018-07-10 15:30:00.000000000 +0800
(最近改动)Change: 2018-11-07 15:38:36.400989868 +0800
Birth: -
#实例2,显示文件权限
[root@master tmp]# stat -c %a 1.txt
644
[root@master tmp]# stat -c %A 1.txt
-rw-r--r--
符号链接和硬链接的差别
新创建的硬链接与文件本身其实没有什么区别,仅仅是为文件建立了另外一个目录条目,可以理解成一个文件具有两个名称。当用户删除其中一个名称,另外一个名称依然存在,用户仍然可以通过该名称访问文件,直到该文件的所有名称都被删除,文件才会被系统删除。
同时硬连接有两个局限性:
1.一个硬链接不能关联与链接本身不在一个磁盘分区上的文件;
2.硬链接不能关联目录。
符号链接是为了克服了硬链接的局限性而产生的。创建一个符号链接实际上就是创建了一个特殊类型的文件,而该文件指向关联文件或者目录,这类似于windows系统中的快捷方式。当向该链接文件写入或删除东西时,关联文件或目录会完成同样的操作;删除该链接文件,仅仅是链接被删除,关联文件和目录本身仍然存在;当关联文件与目录早于符号链接被删除,那么该链接会成为坏链接。
vim
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。
但是目前我们使用比较多的是 vim 编辑器。
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
#方法,命令
vi
vim
使用vi打开oldboy.py,默认是命令模式,需要输入a/i进入编辑模式,然后输入文本"Life is short,i use python"
按下esc键,回到命令模式
命令模式中
i 在光标前添加文本
o 在下一行添加文本
输入 :wq! 强制保存退出
w write 写入
q quit 退出
! 强制
或者 :x 保存退出
------
:q 不保存退出
:q! 不保存强制退出
在py文件中复制
如果想把文件内的第三行内容黏贴到第十五行:
1.进入你的文件,(处于命令模式,而不是编辑模式)
2.将你的光标移到你的第三行的开头(用方向键)
3,按下v,(你发现切换到可视模式了),按方向键,知道选中你想要的内容
4.按y,再将光标移到第十四行末尾。
5.按p。完成
cat
用于查看纯文本文件(常用于内容较少的)
选项
-n或-number:有1开始对所有输出的行数编号;
-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
-A:显示不可打印字符,行尾显示“$”;
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;
参数
文件列表:指定要连接的文件列表
设ml和m2是当前目录下的两个文件
cat m1 (在屏幕上显示文件ml的内容)
cat m1 m2 (同时显示文件ml和m2的内容)
cat m1 m2 > file (将文件ml和m2合并后放入文件file中)
more命令
1.more命令用于查看内容较多的文本,例如要看一个很长的配置文件,cat查看内容屏幕会快速翻滚到结尾。
2.more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容
按Space键:显示文本的下一屏内容。
按Enter键:只显示文本的下一行内容。
按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
按H键:显示帮助屏,该屏上有相关的帮助信息。
按B键:显示上一屏内容。
按Q键:退出rnore命令。
参数
文件:指定分页显示内容的文件
示例
显示文件file的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比。
more -dc file
显示文件file的内容,每10行显示一次,而且在显示之前先清屏。
more -c -10 file
linux的特殊符号
~ 当前登录用户的家目录
比如root用户目录就是root用户的家目录
- 返回上一次的工作目录
. 当前目录
.. 上一级目录
# 超级用户的身份提示符
$ 普通用户的身份提示符
>> 追加重定向,把文字追加到文件的结尾
> 重定向符号,清空原文件的所有内容,然后把文字覆盖到文件末尾
可以把命令执行的结果信息写入到文件中
ip addr > /tmp/network.txt
< 输入重定向
<< 将输入结果输入重定向
echo "oldboy-python666" > /tmp/oldboy.txt
echo "chaoge666" >> /tmp/oldboy.txt
cat >>/tmp/oldboy.txt << EOF #结尾符一般写EOF
复制命令
复制代码
复制 > copy > cp
#移动xxx.py到/tmp目录下
cp xxx.py /tmp/
#移动xxx.py顺便改名为chaoge.py
cp xxx.py /tmp/chaoge.py
Linux下面很多命令,一般没有办法直接处理文件夹,因此需要加上(参数)
cp -r 递归,复制目录以及目录的子孙后代
cp -p 复制文件,同时保持文件属性不变 可以用stat
cp -a 相当于-pdr
#递归复制test文件夹,为test2
cp -r test test2
cp是个好命令,操作文件前,先备份
cp main.py main.py.bak
移动命令
移动(搬家)命令 > move > mv
cd /home
#把老男孩从沙河这破地方,搬到朝阳去
mv /home/shahe/oldboy /tmp/chaoyang
文件/文件夹改名
mv x.log xx.log
删除命令
删除 > remove > rm
参数 -i 需要删除确认
-f 强制删除
-r 递归删除目录和内容
cd /tmp
rm oldboy.py
#默认有提示删除,需要输入y
rm -f oldboy.py #不需要提示,强制删除
#rm默认无法删除目录,需要跟上参数-rctrl
rm -rf /tmp/oldboy/
--------
友情提醒:初学者使用rm命令,随时快照虚拟机
查找命令
#Linux里如何找到需要的文件 例如 oldboy.py
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
find /opt -name 'settings.py'
管道命令
Linux提供的管道符“|”讲两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。
常见用法:
#检查python程序是否启动
ps -ef|grep "python"
#找到/tmp目录下所有txt文件
ls /tmp|grep '.txt'
#检查nginx的端口是否存活
netstat -tunlp |grep nginx
grep
(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
语法:
grep [参数] [--color=auto] [字符串] filename
参数详解:
-i : 忽略大小写
-n : 输出行号 要放在最后
-v : 反向选择
--color = auto : 给关键词部分添加颜色
grep "我要找什么" /tmp/oldboy.txt
#排除 -v,排除我要找的东西
grep -v "我要找什么 /tmp/oldboy.txt
例题,找出/etc/passwd下root用户所在行,以及行号,显示颜色
cat /etc/passwd |grep '^root' --color=auto -n
找出/etc/passwd所有不允许登录的用户
grep /sbin/nologin /etc/passwd
找到/etc/passwd的所有与mysql有关行,行号
cat /etc/passwd |grep 'mysql' -n
head、tail命令
head显示文件前几行,默认前10行
tail显示文件后几行,默认后10行
#查看前两行
head -2 /tmp/oldboy.txt
#查看后两行
tail -2 /tmp/oldboy.txt
#持续刷新显示
tail -f xx.log
#显示文件10-30行
head -30 /tmp/oldboy.txt |tail -21
实时检测文件内容
tail -f 文件名 就会夯住,双击复制终端,在另一个终端上向这个文件中写入内容,另一个终端就会实时监测
别名alias命令
Linux如何提示你,在使用这些命令时候,提醒你小心呢?
#查看系统别名
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'
别名作用是:
我们在linux中使用cp时候相当于执行了cp -i
-i:删除已有文件或目录之前先询问用户;
#别名用比较危险的操作,防止你犯错
#让系统显示 do not use rm
echo do not use rm
#设置rm别名
alias rm='echo do not use rm'
#设置别名永久生效,写入到/etc/profile(针对登录用户的合同,设置环境变量)
vim /etc/profile #编辑文件
G 快速到达最后一行
o 当前行下一行,创建一个新行,进入编辑模式
source /etc/profile #读取文件(合同生效)
---------------
#取消别名
unalias rm
which命令
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which pwd
which python
scp命令
Linux scp命令用于Linux之间复制文件和目录。
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
语法
scp 【可选参数】 本地源文件 远程文件标记
参数
-r :递归复制整个目录
-v:详细方式输出
-q:不显示传输进度条
-C:允许压缩
#传输本地文件到远程地址
scp 本地文件 远程用户名@远程ip:远程文件夹/
scp 本地文件 远程用户名@远程ip:远程文件夹/远程文件名
scp /tmp/chaoge.py root@192.168.1.155:/home/
scp /tmp/chaoge.py root@192.168.1.155:/home/chaoge_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/
linux和window互传文件的方式
rz 接受文件
sz 发送文件
在线获取资源的命令
wget 网址
linux文件压缩解压(tar)
tar 用于压缩解压
参数
-c 打包
-x 解包
-v 显示打包解包过程
-z 调用gzip压缩指令
-f 指定压缩文件的名字 (必须写在参数最后)
tar 参数 你的打包文件的名字 你要打包的内容
tar -cvf 打包文件名 #只打包不压缩
tar -zxcv 打包后的文件名 要打包的文件
一般打包的文件都会有.gz的后缀
du命令
Linux du命令用于显示目录或文件的大小。
du会显示指定的目录或文件所占用的磁盘空间。
用法
du 【参数】【文件或目录】
-s 显示总计
-h 以k,M,G为单位显示,可读性强
显示目录或文件所占空间
#什么都不跟,代表显示当前目录所有文件大小
du
#显示/home的总大小
du -sh /home
top命令
top 命令用于动态地监视进程活动与系统负载等信息
chattr命令
给文件加锁,只能写入数据,无法删除文件
chattr +a test.py
chattr -a test.py
lsattr命令
查看文件隐藏属性
lsattr test.py
linux时间同步
linux的date命令可以显示当前时间或者设置系统时间
格式化
-d --date=string 显示指定的时间,而不是当前时间
以年-月-日显示当前时间
date +"%Y-%m-%d"
以年-月-日 时分秒 显示当前时间
date +"%Y-%m-%d %T"
硬件始终的查看
hwclock
# 2018年08月27日 星期一 10时23分03秒 -0.528004 秒
同步系统时间和硬件时间,可以用hwclock命令
//以系统时间为基准,修改硬件时间
[root@oldboy_python ~ 10:29:07]#hwclock -w
//以硬件时间为基准,修改系统时间
[root@oldboy_python ~ 10:29:21]#hwclock -s
Ntp时间服务器
/bin/date 用于 Linux 时间 (软件时钟) 的修改与显示的指令;
/sbin/hwclock 用于 BIOS 时钟 (硬件时钟) 的修改与显示的指令。 这是一个 root 才能执行的指令,因为 Linux 系统上面 BIOS 时间与 Linux 系统时间是分开的,所以使用 date 这个指令调整了时间之后,还需要使用 hwclock 才能将修改过后的时间写入 BIOS 当中!
/usr/sbin/ntpd: 主要提供 NTP 服务的程序啰!配置文件为 /etc/ntp.conf
/usr/sbin/ntpdate: 用于客户端的时间校正,如果你没有要启用 NTP 而仅想要使用 NTP Client 功能的话,那么只会用到这个指令而已啦!
由于我们只需要用作客户端更新时间
ntpdate -u ntp.aliyun.com
日历命令 cal
[root@bogon /]# cal
六月 2019
日 一 二 三 四 五 六
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
wget命令
wget命令用于在终端下载网络文件
wget 参数 下载地址
wget -r -p http://www.luffycity.com#递归下载路飞所有资源,保存到www.luffycity.com文件中
开关机命令
reboot 重启机器
poweroff 用户关闭系统
编译安装python3,源代码编译安装
1.解决软件
先安装一些需要的包
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
2.在下载python3的安装包
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
3.再解压缩python的源代码包
tar -xzf Python-3.6.2.tgz
4,进入解压缩之后额源代码包目录
cd Python-3.6.2/
5.进入编译过程
1,指定python的安装路径,释放makefile编译文件
./configure --prefix=/opt/python36/
2,编译
直接执行make命令,会调用gcc编译工具,可以编译python的c语言代码
3,编译且安装,走到这步才真正生成 /opt/python36/这个文件夹,以及python的解释器
make install
linux环境变量知识补充
查看环境变量
echo $变量名
echo $PATH
输出如下:
linux的path分隔符是冒号 ,并且加载顺序是自上而下,从前往后
/usr/local/sbin:
/usr/local/bin:
/usr/sbin:
/usr/bin:
/root/bin
windows的path变量
windows以分号区分目录,也是自上而下加载顺序
D:python3;
d:Gitcmd;
D:python3Scripts;
D:mysqlmysql-5.6.43-winx64in;
6,添加python3的解释器目录,加入path,修改path变量的值
PATH="/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
将这个写入到 /etc/profile 文件中
这个文件时全局配置文件,每次开机都会生效
7,安装django
1.安装django模块,使用豆瓣源下载
pip3 install -i https://pypi.douban.com/simple django==1.11.9
2.创建django项目
django-admin startproject mycrm
创建django应用
django-admin startapp app01
3.注意修改django的settings.py文件
ALLOW_HOSTS=[] 改为 ALLOW_HOSTS=['*']
注册app,
4,运行django python manage.py runserver 0.0.0.0:8000
5,打开网页输入本机ip地址和端口号
替换
sed -i 's/root/ROOT/g/' 替换并存储
-i 表示 insert
g 全局替换