linux---基础命令

1. 基础命令 

1.1 扫盲

# 1 linux历史:作者:内核 +GNU=发行版(readhat,centos,乌班图)
# 2 docker,在乌班图上开发完成,最新功能对它支持最好,乌班图内核比较新,centos上装docker,需要7版本以上(7.6)
# 3 GPL协议
# 4 Apache 服务器:
# 5 javase:基础 javaee:web开发(Struts)  javame:手机开发
jdk:java 开发环境
jre:java运行环境
jvm:java虚拟机
xx.jar,aa.war
	MVC:
    	-ssh :spring,Struts,hibernate(不需要写sql):国企还在用
        -ssm:spring,springmvc,mybatis(映射:直接写sql)
        -springboot:(sb像django),约定大于配置,简化配置,把tomcat打包到自己里面了
        -微服务:spring cloud  ---》处理了服务之间的调用,
        	-rpc框架:dubbo,grpc。。。。
            -注册中心:Consul vs Zookeeper vs Etcd vs Eureka

1.2 命令补全

# 一下或者两下tab建
# 一下的话会直接找到你要用的命令
# 两下,可能会用到的全列出来

# ifconfig 在7的版本没有,需要装软件
yum insatll net-tools -y
yum insatll net-tools

# yum install bash-completion -y   补齐选项
ls - 两下tab建,所有的选项都会提示出来

1.3 命令快捷键

Ctrl + a    #光标跳转至正在输入的命令行的首部
Ctrl + e    #光标跳转至正在输入的命令行的尾部
Ctrl + c    #终止前台运行的程序   ##################
Ctrl + d    #在shell中,ctrl-d表示推出当前shell。
Ctrl + z    #将任务暂停,挂至后台
Ctrl + l    #清屏,和clear命令等效。  ##############
Ctrl + k    #删除从光标到行末的所有字符
Ctrl + u    #删除从光标到行首的所有字符
Ctrl + r    #搜索历史命令, 利用关键字,Tab建选中,只能找到最近的一条
Ctrl + w    #按单词或空格进行向前删除
Ctrl + 左右建 #按单词或空格进行向前向后跳

#在命令行前加面加 "#" 则该命令不会被执行

1.4 history

# history查看历史命令
# !数字   快速执行数字那一行
# !yum    快速执行最近一条yum命令


# history -d 70  把历史记录的第70行删除
# history -c   清空所有记录(连到人家服务器,操作完了,执行一下)
# history -w   可以把 历史记录写到用户家路径的.bash_history文件中

1.5 ls

# 查看目录内容
ls
# 查看全部得文件
ls -a

1.6 cd  

  • 在Linux中更换位置

1.7 替换快捷键

sed "s/老的数据/新的数据/g"  # 返回一个替换预览
sed "s/老的数据/新的数据/g"  redis-6379.conf > redis-6380.conf   
# 把数据输出到 redis-6380.conf

2.命令别名

 1 设置别名
 alias www='ls /'  只在当前bashshell中生效
 2 永久生效(全局,局部),
	echo "alias wk='ifconfig'" >> /etc/bashrc

 5 内置的别名:在环境变量的配置文件中放着
	alias ls
 6 /bin/ls -al /root   # ls 内置了别名


 8 man 全部命令查找

3. linux目录介绍

3.1 Linux目录结构介绍

  • Linux目录结构的组织形式和Windows有很大的不同。
  • 首先Linux没有“盘(C盘、D盘、E盘)”的概念,linux 是单根 / 根路径,windows是多根
  • 目录树的起始点是根目录(/,root),是目录与文件的源头,然后一个个的分支下来,如同树枝状,因此称为这种目录配置为:目录树
  • 每一个目录不止能使用本地的文件系统,也可以使用网络上的文件系统,可以利用NFS服务器挂载特定目录。
  • 每一个文件在此目录树中的文件名,包含完整路径都是独一无二的。

linux---基础命令_第1张图片

 linux---基础命令_第2张图片

3.1 目录介绍

/bin

bin是Binary的缩写, 这个目录存放着最经常使用的命令。普通用户的命令

/boot:

这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :

dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,
在Linux中访问设备的方式和访问文件的方式是相同的。

/dev,存放设备文件,比如硬盘,硬盘分区,光驱,等等
/dev/sd 硬盘设备
/dev/null,黑洞设备,只进不出。类似于垃圾回收站
/dev/random,生成随机数的设备
/dev/zero,能远远不断的产生数据,类似于取款机,随时随地取钱

/etc:

这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/etc:极其重要,后续所有服务的配置都在这个目录中
/etc/sysconfig/network-script/ifcfg-:网络配置文件
/etc/hostname:系统主机名配置文件,主机名很重要,有些特殊服务要依赖主机名,没有主机名会报错起不来;修改了要重启:reboot
/etc/resolv.conf:dns客户端配置文件,域名解析服务器,一般我们不配置,因为网卡的配置好了,会覆盖掉它,网卡的优先级高
/etc/hosts:本地域名解析配置文件,域名解析,先找自己的hosts,再去域名解析

/home

用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
一般默认登录就在home路径下(~代表家目录)

/lib

这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
几乎所有的应用程序都需要用到这些共享库。

/lost+found

这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media

linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

/mnt

系统提供该目录是为了让用户临时挂载别的文件系统的,
我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt

这是给主机额外安装软件所摆放的目录。第三方软件安装存放的位置
比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc

这个目录是一个虚拟的目录,它是系统内存的映射,
我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,
比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

/root

该目录为系统管理员,也称作超级权限者的用户主目录。

sbin

s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/selinux

这个目录是Redhat/CentOS所特有的目录,
Selinux是一个安全机制,类似于windows的防火墙,
但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv

该目录存放一些服务启动之后需要提取的数据。

/sys

这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、
针对设备的devfs文件系统以及针对伪终端的devpts文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp

这个目录是用来存放一些临时文件的。

/usr

这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,
类似于windows下的program files目录。

/usr/bin:

普通用户的命令存放地方
一般做软链接都是连到这里

/usr/sbin:

普通用户的命令存放地方
超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:

内核源代码默认的放置目录。

/var

这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。
包括各种日志文件。

dev

1 cat /var/log/secure #查看用户登陆时间

/dev,存放设备文件,比如硬盘,硬盘分区,光驱,等等
/dev/sd 硬盘设备
/dev/null,黑洞设备,只进不出。类似于垃圾回收站
/dev/random,生成随机数的设备
/dev/zero,能远远不断的产生数据,类似于取款机,随时随地取钱

 在linux系统中,有几个目录是比较重要的

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

4. Linux终端提示符

[root@dbj~]#

  • root:代表当前用户
  • @:代表分隔符
  • dbj:主机名称
  • ~:当前位置,默认家目录
  • #:代表超级用户,$:代表普通用户 

5. 文件夹/文件操作

5.1 mkdir

# 选项:-v 显示详细信息  -p 递归创建目录

#递归创建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

5.2 touch

# touch file                    #无则创建,有则修改时间
# touch file2 file3
# touch /home/od/file4 file5
# touch file{a,b,c}             #{}集合,等价 touch a b c
# touch file{1..10}
# touch file{a..z}

5.3 rm

#选项:-r: 递归 -f: 强制删除 -v: 详细过程

rm  file.txt      # 删除文件, 默认rm存在alias别名,rm -i所以会提醒是否删除文件
rm -f file.txt    # 删除文件, 不提醒
rm -r dir/        # 递归删除目录,会提示
rm -rf dir/       # 强制删除目录,不提醒(慎用)
rm -rf file*      # 强制递归删除以file开头的文件夹及文件
rm -rf *.txt      # 强制递归删除以txt结尾的文件夹及文件     

5.4 mv




# mv file file1             #原地移动算改名
# mv file1 /tmp/            #移动文件至tmp目录:不一样mv file1 tmp 
# mv /tmp/file1 ./          #移动tmp目录的文件至当前目录
# mv dir/ /tmp/             #移动目录至/tmp目录下

# touch file{1..3}
# mv file1 file2 file3 /opt/    #移动多个文件或至同一个目录

# mkdir dir{1..3}
# mv dir1/ dir2/ dir3/ /opt     #移动多个目录至同一个目录

6. cp


#选项: -v:详细显示命令执行的操作 -r: 递归处理目录与子目录 -p: 保留源文件或目录的属性
# cp file /tmp/file_copy
# cp name /tmp/name1         #修改名称
# cp file /tmp/             #不修改名称
# cp -p file /tmp/file_p    #-p保持原文件或目录的属性
# cp -r  /etc/ /tmp/        #复制目录需要使用-r参数, 递归复制
# cp -rv /etc/hosts /etc/hostname /tmp  #拷贝多个文件至一个目录
# cp -rv /etc/{hosts,hosts.bak}
# cp -rv /etc/hosts{,-org}

7. 其他基本命令

pwd

# 打印当前位置
pwd 

 cat

# 查看文件,显示行号
cat -n xxx.py

# 查看文件
cat a.py

# 追加文字到文件
cat >>a.txt << EOF
hello word
EOF

 more

more命令用于查看内容较多的文本,例如要看一个很长的配置文件,
cat查看内容屏幕会快速翻滚到结尾。

more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容

more /etc/passwd
按下空格space是翻页
按下b键是上一页
回车键向下读取内容

 echo打印

echo命令用于在终端输出字符串或变量提取后的值,格式是  echo 字符串|$变量

# 默认把内容显示到终端上    
echo "超哥666"

#超哥平时比较低调,不想让别人知道他666,怎么办?要么把“超哥666”写入到文件里!
echo "超哥666" > /tmp/chaoge.txt

# 取出打印PATH的值
echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

Linux特殊符号

输入/输出 重定向符号
1.>>    追加重定向,把文字追加到文件的结尾
2.>     重定向符号,清空原文件所有内容,然后把文字覆盖到文件末尾
3.<     输入重定向
4.<<    将输入结果输入重定向
echo "oldboy-python666" > /tmp/oldboy.txt
echo "chaoge666" >> /tmp/oldboy.txt
cat >>/tmp/oldboy.txt << EOF
------------------------------------
我想把命令执行的结果信息,写入到文件中
ip addr > /tmp/network.txt   #标准输出重定向 把命令执行结果信息,放入到文件中
3.通配符  
ls -l /etc/us*

find查找命令

# 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搜索命令

语法:
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

which查找命令

which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which pwd
which python

scp远程传输命令

  • Linux scp命令用于Linux之间复制文件和目录。
  • scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
3 语法
scp 【可选参数】 本地源文件 远程文件标记

参数
-r :递归复制整个目录
-v:详细方式输出
-q:不显示传输进度条
-C:允许压缩

# 实例
#传输本地文件到远程地址
scp 本地文件  远程用户名@远程ip:远程文件夹/
scp 本地文件  远程用户名@远程ip:远程文件夹/远程文件名
scp /tmp/chaoge.py [email protected]:/home/
scp /tmp/chaoge.py [email protected]:/home/chaoge_python.py
scp -r  本地文件夹  远程用户名@远程ip:远程文件夹/
scp -r /tmp/oldboy [email protected]:/home/oldboy
#复制远程文件到本地
scp [email protected]:/home/oldboy.txt /tmp/oldboy.txt
scp -r [email protected]:/home/oldboy /home/

du统计文件大小

  • Linux du命令用于显示目录或文件的大小。
  • du会显示指定的目录或文件所占用的磁盘空间。
用法
du 【参数】【文件或目录】
-s 显示总计
-h 以k,M,G为单位显示,可读性强

# 实例
显示目录或文件所占空间
#什么都不跟,代表显示当前目录所有文件大小
du   
#显示/home的总大小
du -sh /home

top系统负载查看

  • top 命令用于动态地监视进程活动与系统负载等信息

linux---基础命令_第3张图片

第一行 (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:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

8. 本文参考

更多请查看https://pythonav.com/wiki/detail/3/30/

你可能感兴趣的:(linux,大全,linux,运维,服务器)