Linux常用命令

Linux

网络连接三种方式:

虚拟机网络方式选项:
在这里插入图片描述

方式一:桥接方式

在这里插入图片描述

方式二:NAT方式

在这里插入图片描述

方式三:主机模式

不和外部的网络发生联系。

一、Linux目录结构

目录名称英文释义说明
/binbinaries二进制文件的缩写,存放这最经常使用的命令
/boot计算机启动存放启动Linux时使用的一些核心文件,包括一些连接文件和镜像文件
/devdevice存放的是Linux的外部设备,在Linux中访问设备和访问文件的方式是相同的
/etcetcetera这个目录存放所有系统管理需要的配置文件和子目录
/home用户而主目录,每一个人都有一个自己的目录,是由用户名命名的
/liblibrary存放这系统最基本的动态链接共享库
/lost+found系统非法关机时会存放一些文件
/media系统会自动识别一些设备,当识别到之后会把识别的设备挂载到此目录下
/mnt为了临时挂载别的文件系统使用的
/optoptional可选的,给主机额外安装软件所放的目录
/procprocesses进程的缩写,是一种虚拟的文件系统,存储的是当前内核运行态的一系列特殊文件,这个目录是一个虚拟的目录,是系统内的映射。我们可以通过访问这个目录来获取系统信息。内容实际上是存放在内存里
/root系统管理员的目录
/sbinsuperUser Binaries是超级用户二进制文件的缩写,存放系统管理员使用的系统管理程序
/selinuxsecurity linuxselinux是一个安全机制,类似于windows的防火墙,这个目录是存放相关文件的
/srvserve存放一些服务启动后需要提取的数据
/syssystem安装了新的文件系统sysfs集成了3种文件系统的信息。针对进程信息的、针对设备的、针对伪终端的
/tmptemporary是用来存放一些临时文件的
/usrunix shared resourcesunix共享资源的缩写,用户的很多应用程序和文件都放在这个目录下
/usr/binbinaries系统用户使用的应用程序
/usr/sbinsuperUser binaries超级用户使用的高级管理程序和系统守护程序
/usr/srcsource code内核源代码存放的目录
/varvariable经常被修改的目录放在这个文件夹下,包括各种日志文件
/run存放系统启动以来的信息

二、Vi和Vim编辑器

在这里插入图片描述

常用快捷键使用练习:

  1. 拷贝当前行yy,拷贝当前行下的5行 5yy,并粘贴(输入p)。
  2. 删除当前行 dd ,删除行前行向下的5行 5dd
  3. 在文件中查找某个单词[命令行下==/关键字,回车== 查找,输入 n就是查找下一个]
  4. 设置文件的行号,取消文件的行号。[命令行下==:set nu== 和 :set nonu]
  5. 编辑/etc/prifile 文件,在一般模式下,使用快捷键到该文档的最末行[G]和最首行[gg]
  6. 在一个文件中输入"hello",在一般模式下,然后又撤回这个动作 u
  7. 编辑/etc/profile文件,在一般模式下,并将光标移动到20行shift+g
  8. 更多看整理文档
  9. 快捷键的键盘对应图:
    在这里插入图片描述

三、系统管理命令

关机&重启命令:

shutdown -h now #立马关机
shutdown -h 1 #1分钟后关机
shutdown -r now #立马重启
shutdown -r 1 #1分钟后重启
halt #关机,和上面作用一样。
reboot #重启
sync #把内存数据同步到磁盘
#注意:重启和关机前建议先进行sync,将数据同步到磁盘!

用户登录和注销

#一般使用普通用户,然后将普通用户切换为管理员用户:(su - 后面有个空格!!!)
su - root/su root    

#退出:
logout/exit   //logout 注销指令在图形运行级别无效,在 运行级别 3下有效。(Xshell下有效,直接在linux命令行使用logout是无效的)

服务管理命令:systemctl

systemctl start|stop|restart|status 服务名

#例如关闭防火墙服务
systemctl stop firewalld

四、文件目录相关命令

在Linux中,目录结构为树状结构,最顶级的目录为根目录 / 。对于文件目录分为绝对路径和相对路径

  • 绝对路径有根目录写起 /
  • 相对目录不是从根目录写起,./表示当前目录, ../表示上一级目录。

文件目录类相关命令我们把他分为四种,分别是:

  • 浏览目录命令:ls pwd
  • 操作目录命令:cd mkdir rmdir
  • 浏览文件命令:cat more less head tail
  • 操作文件命令:cp rm mv tar

1、浏览目录命令

1)ls

意为list,显示目录文件。

ls [-ald] [files | directories]
  • -a 显示所有文件包括隐藏文件

  • -l 详细信息展示

  • -d 查看目录的属性

2)pwd

which means print working directory,显示当前所在的文件目录。该命令没有附加选项。

2、操作目录命令

1)cd

change directory

cd [directory]
2)mkdir

make directory

mkdir [new_directory]
3)rmdir

remove directory

rmdir [directory]

3、浏览文件命令

1)cat

concatenate and display files to standard output device,连接文件并打印到标准的输出设备上

cat [-En] [file1 | file2 | file3 | etc...]
  • -E 在每一行末尾显示$
  • -n 为显示行添加行号
2)more

用于分页显示文件内容

more [fileName]
>>space | f    显示下一页
>>enter        显示下一行
>>q | Q        退出
3)less

与more命令类似,用来浏览超过一页的文件,该命令可以利用上下键卷动文件

4)head

显示文件前几行的内容

head [-n] [fileName]
  • -n 显示前n行,不指定该参数默认显示前10行
5)tail

显示文件后几行的内容。

  • -n 显示后n行,不指定默认显示后10行
  • +n 从第n行显示到文件尾
  • -F 用于跟踪显示不断增长的文件结尾

4、操作文件命令

1)cp

文件复制

cp [-piru] [source_file_path] [destination_file_path]
  • -p 连同文件的属性一起复制,而不是使用默认的方式
  • -i 若目标文件已经存在,覆盖之前会先询问
  • -r 递归的持续复制,用于目录的复制
  • -u 目标文件和源文件有差异时才会复制
2)mv

文件剪切

mv [-fiu] source destination
mv [-fiu] source1 source2 ... directory
  • -f 源文件与要覆盖的文件重名,会直接覆盖旧文件而不会询问
  • -i 源文件与要覆盖的文件重名,会先询问再覆盖
  • -u 当源文件比要覆盖的文件新或者目标文件不存在时,才回执行移动操作
3)rm

文件删除

rm [-fir] [file_path]
  • -f force 忽略不存在的的文件,不会出现警告信息
  • -i interactive 交互式的,删除前会询问用户是否操作
  • -r recursive 递归的删除,用于目录的删除
4)tar

打包文件,压缩解压缩文件。

#压缩多个文件和目录
#将 houge.txt、bailongma.txt 两个文件和 xiyou/ 目录 打包压缩到houma.tar.gz中。
tar -zcvf houma.tar.gz houge.txt bailongma.txt xiyou/
 
#解压到当前目录
tar -zxvf houma.tar.gz
#解压到指定目录 /opt
tar -zxvf houma.tar.gz -C /opt
  • -c 新建打包文件
  • -t 查看打包文件的内容
  • -x 解压缩 c t x 不能同时出现在一条命令中
  • -j bzip2 方式压缩和解压
  • -z gzip 方式压缩和解压
  • -v 显示处理的文件名
  • -f filename 要处理的文件
  • -C dir 指定压缩、解压缩文件到哪个目录

五、用户及权限管理类命令

1、用户管理命令

1)useradd
useradd [-degGsu] <username>

useradd zhangsan #添加用户
useradd -g mojiao lisi #添加用户并指定组
  • -d 指定用户登录时的主目录
  • -e 指定账号终止日期
  • -g 指定账户所属的用户组
  • -G 指定账户所属的附加组
  • -s 指定账户登录后使用的shell
  • -u 指定用户ID
2)userdel
userdel [-rf] <username>
  • -f 删除用户目录和他的目录内的所有文件
  • -r 不仅删除用户账号,而且删除用户目录、邮件
3)usermod

修改用户属性

usermod [-degGsul] <username>

usermod -g mojiao zhangsan #修改用户的组为mojiao 
  • -d 指定用户登录时的主目录
  • -e 指定账号终止日期
  • -g 指定用户所属用户组
  • -G 指定用户所属附加组
  • -s 指定账户登录时使用的shell
  • -u 指定用户ID
  • -l 修改用户名
4)passwd

设置或修改用户口令

passwd [-dlus] <username>

passwd zhangsan #修改用户密码
  • -d 删除用户口令
  • -l 暂时锁定指定用户账号
  • -u 解除指定用户账号锁定
  • -s 显示指定用户账号状态

2、用户组管理命令

1)groupadd

添加用户组

groupadd mojiao
2)groupdel

删除用户组

groupdel mojiao
3)groupmod

修改用户组

groupmod -n wudang mojiao #给mojiao组指定新的组名wudang
  • -n 指定用户组的新组名

3、文件权限管理命令

1)chmod

修改文件的权限

#方式一
chmod [{ugoa}{+-=}{rwx}] [文件或目录]
chmod u+x add.sh #给add.sh文件的所属用户添加可执行的权限

#方式二
chmod [mode=421] [文件或目录]
chmod 777 add.sh #给add.sh的所有用户都设为rwx权限
  • 对象:u (user)文件所有者 g (group)同组用户 o(others)其他用户
  • 操作符:+ 增加 - 删除 = 赋予
  • 权限:r 读 w 写 x 执行 s 设置用户ID
2)chown

改变文件所有者

chown [-R] [最终用户] [文件或目录]
chown zhangsan hello.txt #将hello.txt的文件所有者改为zhangsan
  • -R 递归操作
3)chgrp

改变文件所属组

chgrp [最终用户组] [文件或目录]
chgrp mojiao hello.txt #将hello.txt文件的所属组改为mojiao

4、文件搜索查找类命令

1)find

find file or directory

find [搜索路径] [选项]

find xiyou/ -name "*.txt" #根据名称查找/目录下的filename.txt文件
find xiyou/ -user atguigu #查找/opt目录下,用户名称为atguigu的文件
find /home -size +204800 #在/home目录下查找大于200m的文件(+n 大于 -n小于 n等于)
  • -name filename 加上name参数说明要找出文件名为filename的文件
  • -size [±]SIZE 加上size参数说明要找比SIZE还要大或者小的文件
  • -type TYPE 加上type参数说明要找指定类型的文件,TYPE的值主要有:一般文件、设备文件、目录、连接文件、socket、管道文件
  • -perm number 加上permission参数说明查找文件权限刚好等于某一特定值的文件
2)grep

grep 过滤查找,“|” 管道符:将前一个命令的处理结果输出传递给后面的命令处理

ls | grep -n test #查找某文件在第几行
  • -n 显示匹配行及行号

六、进程管理类命令

  • 查看系统中的进程的命令:ps ptree top netstat
  • 控制系统中的进程的命令:kill killall nice renice

1、查看进程命令

1)ps
ps aux | grep xxx (功能描述:查看系统中所有进程)
ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)

显示系统当前的进程信息,可以在后面附带参数。常用参数如下:

  • a 列出带有终端的所有用户的进程
  • x 列出当前用户的所有进程,包括没有终端的进程
  • u 面向用户友好的显示风格
  • -e 列出所有进程
  • -u 列出某个用户关联的所有进程
  • -f 显示完整格式的进程列表
2) pstree

查看进程树

pstree [选项]
ps -p
ps -u
  • -p 显示进程的 PID
  • -u 显示进程的所属用户
3)top

动态监视系统任务,可以在后面附带参数。常用参数略

4) netstat

显示网络 状态和 端口占用

netstat -anp | grep 进程号 (功能描述:查看该进程网络信息)
netstat -anp | grep sshd

netstat –nlp | grep 端口号 (功能描述:查看网络端口号占用情况)
netstat -nltp | grep 22

2、控制进程命令

1)kill
kill [选项] 进程号 #(功能描述:通过进程号杀死进程)
kill -9 5102 #杀死浏览器进程
  • -9 表示强迫进程立即停止
2)killall

使用进程名称结束进程,可以结束一组同名的进程

killall 进程名称 #(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
killall firefox #通过进程名称杀死进程
3)nice
4)renice

七、yum命令

用于仓库配置,类似于java开发中的Maven工具

yum [选项] [参数]

yum -y install firefox #安装firefox
  • install 安装 rpm软件包
  • update 更新 rpm软件包
  • remove 删除指定的 rpm 软件包
  • check-update 检查是否有可用的更新 rpm软件包
  • list 显示软件包信息
  • clean 清理 yum 过期的缓存deplist 显示 yum 软件包的所有依赖关系
  • -y 所有提问都回答yes

八、Shell

shell概述:

​ Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。Shell还是一个功能强大的编程语言,易编写,易调试,灵活性强。Centos默认的解析器是bash。

1、创建一个Shell脚本

1)脚本以#!/bin/bash 开头(指定解析器)

2)创建一个helloworld脚本

touch helloworld.sh

3)脚本的执行方式

第一种:采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限)

sh ./helloworld.sh #sh+相对路径
sh /home/atguigu/shells/helloworld.sh #sh+绝对路径
bash ./helloworld.sh #bash+相对路径
bash /home/atguigu/shells/helloworld.sh #bash+绝对路径

==第二种:==采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)

chmod +x helloworld.sh #赋予x执行权限
./helloworld.sh #相对路径执行
/home/atguigu/shells/helloworld.sh #绝对路径执行

2、变量

变量分类:系统变量和自定义变量 /全局变量和局部变量、特殊变量

系统变量

H O M E 、 HOME、 HOMEPWD、 S H E L L 、 SHELL、 SHELLUSER 等

echo $HOME #查看系统变量值
set #显示当前Shell中所有变量
自定义变量

基本语法

(1)定义变量:变量名=变量值,注意,=号前后不能有空格

(2)撤销变量:unset 变量名

(3)声明静态变量:readonly 变量,注意:不能 unset

变量定义规则
(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
(2)等号两侧不能有空格
(3)在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
(4)变量的值如果有空格,需要使用双引号或单引号括起来。

A=5 #定义A变量
echo $A
A=8	#重新赋值A
echo $A 
unset A #撤销变量A
echo $A

readonly B=2 #定义静态变量B 不能重新赋值,也不能unset撤销!
echo $B

expoet $B #将B变量转化为全局变量
特殊变量
$n

n 为数字,$0 代表该脚本名称,$1- 9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如 9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如 9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如{10}

[atguigu@hadoop101 shells]$ touch parameter.sh
[atguigu@hadoop101 shells]$ vim parameter.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
[atguigu@hadoop101 shells]$ chmod 777 parameter.sh
[atguigu@hadoop101 shells]$ ./parameter.sh cls xz
==========$n==========
./parameter.sh
cls
xz
$#

获取所有输入参数个数

[atguigu@hadoop101 shells]$ vim parameter.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
echo '==========$#=========='
echo $#
[atguigu@hadoop101 shells]$ chmod 777 parameter.sh
[atguigu@hadoop101 shells]$ ./parameter.sh cls xz
==========$n==========
./parameter.sh
cls
xz
==========$#==========
2
∗ 和 * 和 @

∗ 这个变量代表命令行中所有的参数, * 这个变量代表命令行中所有的参数, 这个变量代表命令行中所有的参数,*把所有的参数看成一个整体
@ 这个变量也代表命令行中所有的参数,不过 @ 这个变量也代表命令行中所有的参数,不过 @这个变量也代表命令行中所有的参数,不过@把每个参数区分对待

[atguigu@hadoop101 shells]$ vim parameter.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
echo '==========$#=========='
echo $#
echo '==========$*=========='
echo $*
echo '==========$@=========='
echo $@
[atguigu@hadoop101 shells]$ ./parameter.sh a b c d e f g
==========$n==========
./parameter.sh
a
b
==========$#==========
7
==========$*==========
a b c d e f g
==========$@==========
a b c d e f g
$?

最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行,否则执行失败

[atguigu@hadoop101 shells]$ ./helloworld.sh
hello world
[atguigu@hadoop101 shells]$ echo $?
0

3、流程控制

if else 语法格式
if condition
then 
	command
elif condition2
then 
	command2
else
	command3
fi

#示例:
[atguigu@hadoop101 shells]$ touch if.sh
[atguigu@hadoop101 shells]$ vim if.sh
#!/bin/bash
if [ $1 -eq 1 ]
then
echo "banzhang zhen shuai"
elif [ $1 -eq 2 ]
then
echo "cls zhen mei"
fi
[atguigu@hadoop101 shells]$ chmod 777 if.sh
[atguigu@hadoop101 shells]$ ./if.sh 1
banzhang zhen shuai
case 语法格式
case $变量名 in
"值 1")
如果变量的值等于值 1,则执行程序 1
;;
"值 2")
如果变量的值等于值 2,则执行程序 2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

#示例:
[atguigu@hadoop101 shells]$ touch case.sh
[atguigu@hadoop101 shells]$ vim case.sh
!/bin/bash
case $1 in
"1")
echo "banzhang"
;;
"2")
echo "cls"
;;
*)
echo "renyao"
;;
esac
[atguigu@hadoop101 shells]$ chmod 777 case.sh
[atguigu@hadoop101 shells]$ ./case.sh 1
1
for 循环语法格式
#方式一:
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done

#方式二:
for var in item1 item2 ..
do
	command
done

#示例1 1..100求和
[atguigu@hadoop101 shells]$ touch for1.sh
[atguigu@hadoop101 shells]$ vim for1.sh
#!/bin/bash
sum=0
for((i=0;i<=100;i++))
do
sum=$[$sum+$i]
done
echo $sum
[atguigu@hadoop101 shells]$ chmod 777 for1.sh
[atguigu@hadoop101 shells]$ ./for1.sh
5050

#示例2
[atguigu@hadoop101 shells]$ touch for2.sh
[atguigu@hadoop101 shells]$ vim for2.sh
#!/bin/bash
#打印数字
for i in cls mly wls
do
echo "ban zhang love $i"
done
[atguigu@hadoop101 shells]$ chmod 777 for2.sh
[atguigu@hadoop101 shells]$ ./for2.sh
ban zhang love cls
ban zhang love mly
while 语法格式
while condition
do 
	condition
done

#示例 1..100求和
[atguigu@hadoop101 shells]$ touch while.sh
[atguigu@hadoop101 shells]$ vim while.sh
#!/bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo $sum
[atguigu@hadoop101 shells]$ chmod 777 while.sh
[atguigu@hadoop101 shells]$ ./while.sh
5050
until 循环——直到条件为真位置
until condition
do
	command
done

4、输入输出

echo

echo命令用于字符串的输出,默认无转义字符,使用 -e 能开启转义。使用双引号或单引号能显示字符串,而使用反引号显示命令执行的结果。

read
[atguigu@hadoop101 shells]$ touch read.sh
[atguigu@hadoop101 shells]$ vim read.sh
#!/bin/bash
read -t 7 -p "Enter your name in 7 seconds :" NN
echo $NN
  • -p:指定读取值时的提示符;
  • -t:指定读取值时等待的时间(秒)如果-t 不加表示一直等待

5、文本处理工具

cut
  • -f 列号,提取第几列
  • -d 分隔符,按照指定分隔符分割列,默认是制表符“\t”
  • -c 按字符进行切割 后加加 n 表示取第几列 比如 -c 1
#数据准备
[atguigu@hadoop101 shells]$ touch cut.txt
[atguigu@hadoop101 shells]$ vim cut.txt
dong shen
guan zhen
wo wo
lai lai
le le

#切割 cut.txt 第一列
[atguigu@hadoop101 shells]$ cut -d " " -f 1 cut.txt
dong
guan
wo
lai
le

#切割 cut.txt 第二、三列
[atguigu@hadoop101 shells]$ cut -d " " -f 2,3 cut.txt
shen
zhen
wo
lai
le

# cut.txt 文件中切割出 guan
[atguigu@hadoop101 shells]$ cat cut.txt |grep guan | cut -d " " -f 1
guan

#选取系统 PATH 变量值,第 2 个“:”开始后的所有路径:
[atguigu@hadoop101 shells]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atguigu/.local/bin:/home/atguigu/bin
[atguigu@hadoop101 shells]$ echo $PATH | cut -d ":" -f 3-
/usr/local/sbin:/usr/sbin:/home/atguigu/.local/bin:/home/atguigu/bin

#切割 ifconfig 后打印的 IP 地址
[atguigu@hadoop101 shells]$ ifconfig ens33 | grep netmask | cut -d " " -f 10
192.168.111.101
awk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值