linux
Linux快捷键
1.tab键 用于自动补全命令/文件名/目录名2.ctrl + l 清理终端显示 3.clear/cls 清理终端显示4.ctrl + c 终止当前操作history 显示操作过的指令ctrl + d 快退出会话ctrl + shift + r快速登录
删除ctrl + d 删除光标所在位置上的字符相当于VIM里x或者dlctrl + h 删除光标所在位置前的字符相当于VIM里hx或者dhctrl + k 删除光标后面所有字符相当于VIM里d shift+$ctrl + u 删除光标前面所有字符相当于VIM里d shift+^ctrl + w 删除光标前一个单词相当于VIM里dbctrl + y 恢复ctrl+u上次执行时删除的字符ctrl + ? 撤消前一次输入alt + r 撤消前一次动作alt + d 删除光标所在位置的后单词移动ctrl + a 将光标移动到命令行开头相当于VIM里shift+^ctrl + e 将光标移动到命令行结尾处相当于VIM里shift+$ctrl + f 光标向后移动一个字符相当于VIM里lctrl + b 光标向前移动一个字符相当于VIM里hctrl + 方向键左键 光标移动到前一个单词开头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 清屏相当于命令clearctrl + 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/dmkdir -p a/b c/d#递归创建test/a,b,c,d四个目录mkdir -p test/{a,b,c,d}#递归创建文件夹a/b/c/d/emkdir -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 发出警告声;\b 删除前一个字符;\c 最后不加上换行符号;\f 换行但光标仍旧停留在原来的位置;\n 换行且光标移至行首;\r 光标移至行首,但不换行;\t 插入tab;\v 与\f相同;\\ 插入\字符;\nnn 插入nnn(八进制)所代表的ASCII字符;
用echo命令打印带有色彩的文字:
文字色:
echo -e "\e[1;31mThis is red text\e[0m"This is red text
-
\e[1;31m
将颜色设置为红色 -
\e[0m
将颜色重新置回
颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37
背景色:
echo -e "\e[1;42mGreed Background\e[0m"Greed Background
颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47
文字闪动:
echo -e "\033[37;31;5mMySQL Server Stop...\033[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 fileDevice: 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.txt644[root@master tmp]# stat -c %A 1.txt-rw-r--r--
符号链接和硬链接的差别
新创建的硬链接与文件本身其实没有什么区别,仅仅是为文件建立了另外一个目录条目,可以理解成一个文件具有两个名称。当用户删除其中一个名称,另外一个名称依然存在,用户仍然可以通过该名称访问文件,直到该文件的所有名称都被删除,文件才会被系统删除。 同时硬连接有两个局限性:1.一个硬链接不能关联与链接本身不在一个磁盘分区上的文件;2.硬链接不能关联目录。 符号链接是为了克服了硬链接的局限性而产生的。创建一个符号链接实际上就是创建了一个特殊类型的文件,而该文件指向关联文件或者目录,这类似于windows系统中的快捷方式。当向该链接文件写入或删除东西时,关联文件或目录会完成同样的操作;删除该链接文件,仅仅是链接被删除,关联文件和目录本身仍然存在;当关联文件与目录早于符号链接被删除,那么该链接会成为坏链接。
vim
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。
但是目前我们使用比较多的是 vim 编辑器。
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
#方法,命令vivim使用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.txtecho "chaoge666" >> /tmp/oldboy.txtcat >>/tmp/oldboy.txt << EOF #结尾符一般写EOF
复制命令
复制代码复制 > copy > cp#移动xxx.py到/tmp目录下cp xxx.py /tmp/#移动xxx.py顺便改名为chaoge.pycp xxx.py /tmp/chaoge.pyLinux下面很多命令,一般没有办法直接处理文件夹,因此需要加上(参数) cp -r 递归,复制目录以及目录的子孙后代cp -p 复制文件,同时保持文件属性不变 可以用statcp -a 相当于-pdr#递归复制test文件夹,为test2cp -r test test2cp是个好命令,操作文件前,先备份cp main.py main.py.bak
移动命令
移动(搬家)命令 > move > mvcd /home#把老男孩从沙河这破地方,搬到朝阳去mv /home/shahe/oldboy /tmp/chaoyang文件/文件夹改名mv x.log xx.log
删除命令
删除 > remove > rm参数 -i 需要删除确认 -f 强制删除 -r 递归删除目录和内容 cd /tmprm oldboy.py#默认有提示删除,需要输入yrm -f oldboy.py #不需要提示,强制删除#rm默认无法删除目录,需要跟上参数-rctrlrm -rf /tmp/oldboy/--------友情提醒:初学者使用rm命令,随时快照虚拟机
查找命令
#Linux里如何找到需要的文件 例如 oldboy.pyfind 在哪里(目录) 什么类型(文件类型) 叫什么名字(文件名)参数-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.pyfind /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 rmecho 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 pwdwhich 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.pyscp -r 本地文件夹 远程用户名@远程ip:远程文件夹/scp -r /tmp/oldboy root@192.168.1.155:/home/oldboy#复制远程文件到本地scp root@192.168.1.155:/home/oldboy.txt /tmp/oldboy.txtscp -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.pychattr -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 1516 17 18 19 20 21 2223 24 25 26 27 28 2930
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/binwindows的path变量windows以分号区分目录,也是自上而下加载顺序 D:\python3;d:\Git\cmd;D:\python3\Scripts;D:\mysql\mysql-5.6.43-winx64\bin;
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:80005,打开网页输入本机ip地址和端口号
替换
sed -i 's/root/ROOT/g/' 替换并存储 -i 表示 insertg 全局替换