linux命令

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地址和端口号

linux的三剑客

替换



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

 

清风徐来.水波不兴
原文地址:https://www.cnblogs.com/ghl666/p/11937916.html