linux命令

旧城冷巷雨未停 提交于 2019-12-05 17:42:32

 

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.py​Linux下面很多命令,一般没有办法直接处理文件夹,因此需要加上(参数) cp -r 递归,复制目录以及目录的子孙后代cp -p 复制文件,同时保持文件属性不变    可以用statcp -a 相当于-pdr#递归复制test文件夹,为test2cp -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 /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.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.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/bin​windows的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:8000​5,打开网页输入本机ip地址和端口号

linux的三剑客

替换

​​sed -i 's/root/ROOT/g/'   替换并存储  -i 表示 insertg  全局替换

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!