Linux常用命令汇总及示例

文章目录


欢迎各位关注我的个人微信公众号:赶令,将会定期更新大数据相关知识及个人心得

一、认识Linux系统及基础命令

Linux中一切皆文件

1 构成

内核 + 文件系统 + shell = Linux

  • 文件系统结构:文件进行读写
  • Linux是一个树形的文件系统结构
  • 第一层目录:/ 整个文件系统的访问入口

2 重要的二级目录

bin:放Linux上常用的命令
dev:放设备的目录
etc:Linux配置文件目录
home:普通用户会在该目录下创建属于自己的目录
root:管理员用户家目录
media:即插即用型的设备的挂载目录
光盘自动挂载到media目录下
mnt:挂载目录
将硬盘中的分区(C/D/E)与目录进行关联
/datas/cpan 《- C分区
/datas/Dpan 《- D分区
/datas/Epan 《- E分区
opt:可选目录
usr:放安装的应用程序
sbin:只有管理员才能执行的命令
var:Linux日志默认存储目录

3 基础命令

ls : list,用于列举一个目录或者文件
ls [-ald] file_path
a:所有的:列举包含隐藏文件

这里写图片描述

.开头的为隐藏文件
l:长格式查看详细信息
ls -l = ll

这里写图片描述

d:列举本身

这里写图片描述

.为本身
cd:change directory 改变目录
用于切换工作目录
cd target_path

这里写图片描述

这里写图片描述

这里写图片描述

./为本身或当期目录,…/文上一级目录
相对路径:相对当前路径,依次进行访问
more target_file:分页查看文件内容
more /shell/startserver.sh

这里写图片描述

绝对路径:当访问文件或者目录时,从/目录开始访问
cd /shell/
more startserver.sh

这里写图片描述

pwd:print work directory 打印当前工作目录

这里写图片描述

clear:用于清屏
快捷键:Ctrl+l
whereis:用于查看某个命令的位置
whereis more

这里写图片描述

history:用于查看自己运行过的命令

图片11:查看运行过的命令

回到顶部

二、文件管理命令:Linux中没有后缀之分

1 增:mkdir touch

创建文件夹 创建文件夹 创建文件夹
mkdir [-p] dir_path
mkdir /root/test01

图片12:创建文件夹

mkdir -p /root/test02/test
p :表示递归创建 p:表示递归创建 p:表示递归创建

图片13:递归创建文件夹

创建文件 创建文件 创建文件
touch file_path
touch test01/file1

图片14:创建文件

2 删、清空

r m − r f f i l e / d i r rm -rf file/dir rmrffile/dir
r :递归,用于删除目录 r:递归,用于删除目录 r:递归,用于删除目录
f :确认文件 f:确认文件 f:确认文件

图片15:删除文件或文件夹

3 改:vim

vi/vim:Linux中的文本编辑工具

3.1 命令模式:刚刚打开时进入命令模式

i :进入插入模式 i:进入插入模式 i:进入插入模式
y y :复制当前行 yy:复制当前行 yy:复制当前行
10 y y :复制从当前开始的十行 10yy:复制从当前开始的十行 10yy:复制从当前开始的十行
p :粘贴 p:粘贴 p:粘贴
d d :剪切当前行 dd:剪切当前行 dd:剪切当前行
10 d d :剪切从当前行开始的十行 10dd:剪切从当前行开始的十行 10dd:剪切从当前行开始的十行
G :跳到最后一行 G:跳到最后一行 G:跳到最后一行
g g :跳到第一行 gg:跳到第一行 gg:跳到第一行
10 g g :跳到第 10 行 10gg:跳到第10行 10gg:跳到第10
o :在下一行进行插入 o:在下一行进行插入 o:在下一行进行插入
O :在上一行进行插入 O:在上一行进行插入 O:在上一行进行插入
u :撤销上一步 u:撤销上一步 u:撤销上一步

3.2 插入模式:在命令模式中按i,进入插入模式

退出插入模式进入命令模式: e s c 退出插入模式进入命令模式:esc 退出插入模式进入命令模式:esc

3.3 最后行模式:在命令模式下,按shift+:,进入最后行模式

进入命令模式:按esc
q:退出
wq:保存退出
!:强制的
x:保存退出
X:加密
set nu:显示行号
1,$s/nologin/1234/g
1:从第一行开始
$:最后一行
s:替换
g:如果一行出现多个,全部替换

4 查:more、cat、less、head、tail

cat:一次性读取所有文件内容
cat /etc/passwd
cat -n /etc/passwd

显示行号
more:分页查看,一页一页的显示
只能向下翻页,最后自动退出
less:分页查看
按q退出,可以上下翻页
head:查看文件的前多少行
head [-n] file_path
head -10 /etc/passwd

图片16:查看文件内容

t a i l :查看文件的后多少行 tail:查看文件的后多少行 tail:查看文件的后多少行
t a i l [ − n ] f i l e tail [-n] file tail[n]file_ p a t h path path
t a i l − 10 / e t c / p a s s w d tail -10 /etc/passwd tail10/etc/passwd

图片17:查看文件后几行

− F :动态查看该文件的末尾 -F:动态查看该文件的末尾 F:动态查看该文件的末尾

图片18:动态查看该文件的末尾

$光标闪烁,等待更新 $

图片18

图片19

C t r l + c 退出 Ctrl+c退出 Ctrl+c退出

5 复制

cp [-r] source_path target_path
cp /etc/passwd /root/
cp /etc/passwd /root/passwd2

图片20:复制

$ -r表示递归,可以复制文件夹下的所有目录及文件,目标文件夹如果没有则递归创建$

图片21:复制文件

拷贝过程中可以直接重命名
移动剪切:也可以实现重命名
mv source_path target_path

6 常见错误:

No such file or directory
意思:没有对应的文件或者目录
原因:
1-真的没有该文件或者目录,路径写错了
2-没有权限
Permission denied
意思:没有权限
原因:没有权限
解决:修改权限
-bash:cdd : command not found
错误:命令没有找到
原因
1-命令错了
cdd /
2-语法不对
cd/
回到顶部

三、Linux中用户管理及权限管理

1 用户、组

 默认用户:root 管理员用户
   默认组:root
Linux默认自带的用户的id都在500以内,用户自己创建的用户id从500开始
用户配置文件:/etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码:用户id:组id:组名称:家目录:使用的shell类型

2 管理用户

2.1 创建用户

-o:or 或者条件
useradd fuyun

2.2 删除用户

-r:删除时是否同时删除家目录

设置密码

passwd fuyun

修改用户名

usermod -l NewUser -d /home/NewUser -m OldUser
-l 修改用户名
-d 修改登录后使用的路径
-m 修改登录名称的同时将目录名称一同修改

切换用户

su - root
记得退出:exit

3 管理组

3.1 创建组

groupadd

3.2删除组

groupdel

3.3 更改组

chgrp
groupmod -n newGroup oldGroup

4 权限管理

所属用户
|所有者 |同组用户 |其他人 | 所有人 |
|---- |----- |------ |---- |
| u | g | o | a |

权限
|读 |写 |执行 |没有权限 |
|---- |----- |------|---- |
|r |w |x | - |
drwxr-xr-x:表示一个文件的所有权限
|d |rwx |r-x |r-x |
|---- |---- |---- |---- |
|文件类型 |所有者 |同组用户 |其他人 |

4.1 更改权限

chmod:用于修改某个文件或者目录权限的
chmod o+w /passwd
chmod a+x /passwd
chmod u+x,g-x /passwd
|r |w |x |
|— |— |---- |
|4 |2 |1 |
rwxrwxrwx:777
chmod 755 /passwd
chown:用于修改某个文件或者目录的所有者的
chown -R username:groupname file_path
− R :表示递归,用于修改目录时,将目录下所有的文件一起更改 -R:表示递归,用于修改目录时,将目录下所有的文件一起更改 R:表示递归,用于修改目录时,将目录下所有的文件一起更改

回到顶部

四、虚拟机管理

1 关机 :管理员才能执行

shutdown -h now
halt
init 0

2 重启

reboot
init 6

3 快照:关机状态下拍摄

4 克隆:用于复制多个机器的

五、Linux中常用的工具命令

1 sudo:用于普通用户越级执行管理的命令

visudo:用于配置sudo,只有管理员能通过该命令分配权限给普通用户
root ALL = (ALL) ALL
用户名 从什么地方登陆 以什么身份 执行什么命令
需求:配置rdedu用户拥有启动防火墙的权限
rdedu ALL=(root) /sbin/service iptables start
测试:
sudo service iptables start
rdedu ALL=(root) NOPASSWD:ALL

图片23:sudo命令使用

2 grep:用于数据过滤

grep 'root' /etc/passwd

图片24:grep命令的使用

3 常用工具符号

.:表示当前目录
…:表示上一级目录
~:代表家目录
|:管道符,用于数据流的转接
stdin
stdout
cat /etc/passwd | grep 'root'

图片25:管道符

>:输出重定向,覆盖
grep 'root' /etc/passwd > /grep_root.txt

图片26:重定向,覆盖

>>:输出重定向,追加

grep 'root' /etc/passwd >> /grep_root.txt
图片27:重定向,追加

<:输入重定向
基本上在shell脚本里使用
command1 < infile > outfile:同时替换输入和输出,执行command1,从文件infile读取内容,然后将输出写入到outfile中
&:表示后台运行
command &
\:换行符
`:执行符号
用执行符号包裹命令,将命令先执行后返回

回到顶部

4 man:用于查看某个命令的帮助文档

man top

man top

man yum

man yum

按q退出查看

5 find:用于查找文件的

格式:find 路径 条件
find /etc -name init*
条件:
-name
*:匹配多个字符
?:匹配单个字符

图片28:find命令

ls /etc/init*
ls /etc/init??

图片29:

-size:
find /etc -size +50(b,k,M,G)
+:大于
-:小于

图片30:查看文件大小

并列条件和或者条件
-a:and 并列条件
-o:or 或者条件
find /etc -size +500k -a -size -1000k

图片31:

-atime n:查询文件最后访问时间
n表示n*24小时之前

图片32:

-ctime n:查询文件状态最后改变时间

图片33:

-mtime n:查询文件数据最后修改的时间

图片34:

-type f/d:查询文件或文件夹的类型
-user:查询文件的所有者
-group:查询文件的组
stat:查看文件信息

图片35:

7 du:统计目录中的大小

du [-sh] dir_path
s:表示总的

图片36:

h: 人性化显示单位

图片37:

图片38:

8 wc:做文本统计

wc [-lwc] file_path
l:行
wc -l /grep.txt

图片39:

w:单词
wc -w /grep.txt

图片40:

c:字节
wc -c /grep.txt

图片41:

m:字符

图片42:

可以统计多件文件
wc /grep.txt /root/install.log

图片43:

回到顶部

六、磁盘管理

1 df -h:查看每个分区的信息

查看每个分区的磁盘利用率
挂载信息

图片44:

2 fdisk:用于管理Linux中所有的硬盘设备

插入硬盘
查看硬盘信息
fdisk -l

图片45:

对硬盘进行分区

  • 分区:
    • 主分区
      
    • 扩展分区(建立逻辑分区)
      
		```fdisk /dev/sdb```

格式化
mkfs.ext4 /dev/sdb1
挂载

  • 临时挂载
    mount /dev/sdb1 /primary_part
  • 永久挂载
    vim /etc/fstab
    /dev/sdb1 /primary_part ext4 defaults 0 0
回到顶部

七、系统管理

1 网络管理

ifconfig:用于查看和配置网络信息
/etc/sysconfig/network-scritps/ifcfg-eth0
route -n:查看路由

![图片46:

2 端口

每个应用程序启动以后会开放相应的端口
netstat -atunlp | grep 22

图片47:

3 服务管理

service:用于管理Linux中所有系统安装的服务
service service_name start|stop|status|restart
linux中通过service管理的服务程序地址:/etc/init.d/
常见服务:
iptables:防火墙
network:网络
service network restart
NetworkManager:图形化界面的网络管理服务

图片48:

sshd:安装登录访问服务
chkconfig:设置开机启动
chkconfig service_name on|off|--list
chkconfig iptables --list

图片49:

chkconfig iptables off:关闭防火墙
chkconfig service_name on

4 进程管理

top:Linux中的任务管理器

图片50:

free:用于查看内存
free -m

图片51:

ps:process 用于查看当前所有的进程
ps -ef
kill :用于对服务发送信号的
关闭进程:
kill -9 pid
kill -9 1680
jps:java process
专门用于查看java进程的

5 udp与tcp的区别

tcp更安全,发送第一个信息后等待对方确认收到后再发送后面的信息,发送时间缓慢
udp更快速,将所有信息发送给对方,不管对方收到没有,所以会导致信息丢失,不安全
回到顶部

八、Linux中的压缩

windows:rar/zip
Linux:gzip、bzip2、zip
	.tar.gz/tgz/.tar.bz2
	压缩类型:snappy、lzo、lz4
	
gzip:压缩为gzip格式
	后缀:.gz
	压缩:gzip file_path
		gzip passwd
	解压:gunzip file.gz
		gunzip passwd.gz 
	特点:
		1-压缩完源文件不存在了
		2-不支持压缩文件夹
bzip2:压缩格式为bz2
	后缀:.bz2
	压缩:bzip2 file_path
		bzip2 passwd
	解压:bunzip2 file.gz
		bunzip2 passwd.bz2 
	特点:
		1-压缩完源文件不存在了
		2-不支持压缩文件夹

1 tar:用于打包,将多个文件或者文件目录合并为一个文件

1.1 打包:将文件夹打包为压缩包 可以直接更改打包后的名称

tar -cvf test02.tar test02

图片52:

1.2 解包:

tar命令是调用了gunzip命令的,对只有一个压缩内容的文件来解压的时候才用tar, 而如果压缩包里有多个文件被压缩了
tar -xf /root/test02.tar -C /

1.3 打包并压缩为gzip格式

tar -zcvf /test02.tar.gz test02

1.4 查看压缩文件内容

tar -tvf /test02.tar.gz

1.5 解压gzip格式的压缩文件

tar -zxvf /test02.tar.gz -C /tmp

将上面的命令中的z改为j,即为bzip2格式的压缩和解压

1.6 格式

压缩:tar -zcvf 压缩后的文件的路径 压缩谁
解压:tar -zxvf 解压谁 -C 解压到哪
查看:tar -tvf 压缩文件路径

1.7 参数

z:gzip格式
j:bzip2格式
c:打包
x:解包
v:显示过程
f:档名,文件名,f后面必须直接跟文件名
t:text,查看
C:指定解压的路径
c/x/t:一条命令中不能同时存在

1.8 unzip解压

如果压缩包里有多个文件被压缩了,可以采用unzip命令去解压
解压到当前文件:unzip a.zip
解压到指定文件:unzip a.zip -d a

回到顶部

九、Linux中的软件管理

  • window类型
    exe、jar、msi、zip(免安装)
  • Linux
    rpm:Redhat系列的软件包管理工具
    dpkg:Debian系列的软件包管理工具
    压缩:免安装,直接配置即可
  • 源码:
    先要安装编译需要的依赖
  • c/c++:
    执行configured脚本文件:预编译
    make:编译
    make install :安装
  • java:
  • maven
    编译:mvn complie
    打包:mvn package
    安装:mvn intall
    清除:mvn clean

1 rpm : rpm包的管理命令

rpm包:每个软件厂商都会提供对应的软件的rpm包的版本
xxxxx.rpm
yum-presto-0.6.2-1.el6.noarch.rpm
yum-utils-1.1.30-30.el6.noarch.rpm
zd1211-firmware-1.4-4.el6.noarch.rpm
zenity-2.28.0-1.el6.x86_64.rpm
zip-3.0-1.el6.x86_64.rpm
zlib-1.2.3-29.el6.i686.rpm
zlib-1.2.3-29.el6.x86_64.rpm
zlib-devel-1.2.3-29.el6.i686.rpm
zlib-devel-1.2.3-29.el6.x86_64.rpm
zsh-4.3.10-7.el6.x86_64.rpm

rpm文件名称格式
zlib-1.2.3-29.el6.x86_64.rpm
rpm的名称-版本.操作系统.操作系统位数.rpm

1.1 查看

rpm -qa | grep zlib

图片53:

1.2 安装

rpm -ivh file_path(完整的rpm文件名称)
rpm -ivh /media/CentOS_6.6_Final/Packages/zlib-devel-1.2.3-29.el6.x86_64.rpm
i:install安装
v:显示详细过程
h:标记

图片54:

zlib-lib.rpm
zlib-util.rpm
zlib-deve.rpm
zlib.rpm

1.3 卸载

rpm -e zlib-devel-1.2.3-29.el6.x86_64

e:卸载
− − n o d e p s :不考虑依赖 --nodeps:不考虑依赖 nodeps:不考虑依赖
rpm -e --nodeps tzdata-java-2014g-1.el6.noarch java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64 java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64

1.4 更新

rpm -U package

1.5 查询一个程序安装了哪些文件

rpm -ql package_name
rpm -ql zlib-1.2.3-29.el6.x86_64

查询某个命令来自于哪个安装包
rpm -qf /bin/ls

2 yum:基于rpm的软件仓库式的管理工具

####2.1 软件仓库:yum源

2.2 查看:yum list

列举的当前yum中所有可安装或者已安装的程序
只想查看已安装的程序
yum list installed

2.3 安装:yum install -y package_name

y:表示全部yes
yum install -y gcc
yum install -y lrzsz

2.4 卸载:yum remove -y package_name

yum remove lrzsz

回到顶部

十、Linux中的变量及表达式

1 自定义变量

1.1 定义:key=value

定义变量时等号两边不能有空格
语义可读
系统变量大写
没有数据类型

1.2 引用:

${a}
$a

2 环境变量:整个系统中的变量

2.1 全局环境变量:对所有用户生效

/etc/profile
系统环境变量:PATH= P A T H : PATH: PATH:JAVA_HOME\bin

2.2 用户环境变量:每个用户拥有自己的环境变量,只对自己生效

每个用户在自己的家目录下有一个配置文件:
~/.bash_profile

3 位置变量:脚本中$1-$9,表示第一个到第九个参数

4 预定义变量:

$0:执行的文件名称
$#:参数的个数
$*:所有的参数
$?:上一条命令执行的结果
0:上一条命令正确执行了

5 常见的通配符与正则

5.1 通配符

*:匹配多个字符
?:匹配单个
大部分用于这些命令:ls find cp rm

5.2 正则
		[]:某个范围的单个字符
			[0-9]:表示0-9之间的任意一个字符
			[a-z]
			[A-Z]
		.:单个字符
		*:匹配多个
			.*:匹配多个字符
		^:以什么开头:^root.*bash$
			中括号中表示非

图片55:

[^ ]*
$:以什么结尾

图片56:

grep
grep 'r..t' passwd
图片57:

grep '^root' passwd
grep '[0-9]:[0-9]' passwd
sed:专门用于对Linux中文本行的处理
sed -i '1d' passwd

图片58:

sed 's/nologin/8888/g' passwd

得到ip地址:
ifconfig | grep 'inet addr' | grep -v '127.0.0.1' | sed 's/inet addr://g' | sed 's/Bcast.*//g' | sed 's/ //g'

awk:专门用于对Linux中文件列的处理
awk -F ':' '{print $3}' passwd

6 通用表达式

6.1 逻辑连接符
		&&:与连接,第一个成功了,第二个才执行
		||:或连接,第一个失败了,第二个才执行
		;:无连接关系
6.2 内置判断测试
6.2.1 字符串
			[ $a = $b ]
			[ $a = $b ];echo $?
			[ $a \> $b ];echo $? 
			[ $a \&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt; $b ];echo $? 
			[ $a != $b ];echo $? 
			
			-z:判断变量是否为空,空返回true,非空返回false
			-n:判断变量是否不为空,不为空返回true
6.2.2 数值
			[]:
				-eq:等于
				-ne:不等于
				-gt:大于
				-ge:大于等于
				-lt:小于
				-le:小于等于
				[ $a -eq $b ];echo $?
			(()):高级语言
				(($a==$b))
				!=  >= <= < >s
6.2.3 文件
			-f:判断是否是一个文件
				[ -f /etc ];echo $?
			-d:判断是否是一个目录
			-e:判断是否存在
			-w:判断是否有可写	权限
			-r:
			-x:
6.2.4 运算
		$((a+b))/$(($a+$b))
		$[ $a + $b ]
6.2.5 时间命令

获取当前系统时间
date
获取当前格式化时间
date +"%Y-%m-%d %X"
修改时间(必须为管理员账号才能修改,普通用可以用sudo)
date -s "2018-09-12 18:22:45"
获取前一天时间
date -d '-1 day' +"%Y-%m-%d"
获取前两天时间
date -d '2 days ago' +"%Y-%m-%d"
获取前两年时间
date -d '2 year ago' +"%Y-%m-%d"

7 重点:脚本

7.1 脚本编写规范
		1-必须声明头部,指定shell的类型
			#!/bin/bash
		2-运行脚本,必须有可执行的权限
			chmod u+x location_var.sh
回到顶部

十一、shell脚本基础语法

1 循环

	for:第一种
		for 变量 in 集合
		do
			执行的命令
		done
		
		第二种
		for((i=1;i<10;i++))
		do
			执行的命令
		done
	while:
		while [表达式]
		do
		done

2 判断

	if [条件表达式]
	then
		执行的命令
	fi

	if [条件表达式]
	then
		执行的命令
	else
		执行的命令
	fi
	
	if [条件表达式]
	then
		执行的命令
	elif [条件表达式]
	then
		执行的命令
	……
	else
		执行的命令
	fi
	
	并列条件
		if [条件1] && [条件2]  if [条件1] || [条件2] 
		if [ 条件1 -a 条件2]  	if [ 条件1 -o 条件2]


	case :类似于java中的switch case
	case 变量 in
	value1)
		怎么样?
		;;
	value2)
		怎么样?
		;;
	*)
		怎么样?
		;;
	esac
	
	执行脚本的方式:
		1-直接执行文件
		2-使用sh命令执行
			sh -x  script.sh

十二、crontab定时任务

service crond status
at:简单的定时任务,不好用

crontab:可以实现分钟级别的精准任务调度
	crontab -e  : 编辑定时任务
	*		  *		     *		*		*		command
	分钟		小时		  日		月		周		
	00-59	00-23	    1-31	1-12	0-7		sh /tmp/test.sh
	
	每天凌晨3点执行脚本
		00	03	*	*	*	sh /tmp/test.sh	
	每周日中午12点30执行该程序
		30	12	*	*	7	sh /tmp/test.sh
	每两个小时执行一次
		00	*/2 *	*	*
	每天5点和7点执行一次
		00	5,7 *	*	*
	每天5点到7点
		00	5-7 *	*	*
	
	crontab -l  :列举当前所有的定时任务
	crontab -r  : 删除所有的定时任务
	crontab -u root  -f /tmp/test.txt:
		使用test.txt文件作为root用户的定时任务
回到顶部
  • 41
    点赞
  • 371
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值