Linux基础 --一步一步图解linux常用命令 CentOS成功安装方式 Xshell报22号端口失败的解决方案 linux 重命名、移动、删除 linux删除文件的多种安全方法

CentOS安装和使用

CentOS 7提供了三种ISO镜像文件的下载:

DVD ISO 标准安装版,一般下载这个就可以了(推荐)

Everything ISO 对完整版安装盘的软件进行补充,集成所有软件。(包含centos7的一套完整的软件包,可以用来安装系统或者填充本地镜像)

Minimal ISO 精简版,自带的软件最少

以下针对各个版本的ISO镜像文件,进行一一说明:

CentOS-7.0-x86_64-DVD-1503-01.iso             标准安装版,一般下载这个就可以了(推荐)
 
CentOS-7.0-x86_64-NetInstall-1503-01.iso      网络安装镜像(从网络安装或者救援系统)
 
CentOS-7.0-x86_64-Everything-1503-01.iso      对完整版安装盘的软件进行补充,集成所有软件。(包含centos7的一套完整的软件包,可以用来安装系统或者填充本地镜像)

CentOS-7.0-x86_64-GnomeLive-1503-01.iso       GNOME桌面版

CentOS-7.0-x86_64-KdeLive-1503-01.iso         KDE桌面版

CentOS-7.0-x86_64-livecd-1503-01.iso          光盘上运行的系统,类拟于winpe 

CentOS-7.0-x86_64-minimal-1503-01.iso         精简版,自带的软件最少
  • CentOS安装
    (1)安装图解
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)虚拟机的网络连接三种形式
在这里插入图片描述
(3)终端输入密码
Centos 开机后,登录时无法输入密码怎么解决?

因为:centos输入密码是不显示的,正常输入点击回车即可(注意查看键盘numlock 是否打开)
正常进入的样子↓↓↓
在这里插入图片描述
(4)密码输错被锁定解决方法
解决方法
解决方法二

注意事项和相关问题解决

  • 终端
    图形终端
    虚拟终端(ctrl+alt+F1-F6开启) /dev/tty# 查看当前终端
    物理终端
    设备终端
    串行终端
    伪终端 /dev/pts/#

    查看当前终端命令【 tty 】

  • 远程连接工具
    有:xshell、putty、securecrt 等
    选取 Xmanger 中的 Xshell
    (1)安装好 Xmanger
    在这里插入图片描述
    (2)打开 Xshell 先到Linux系统找到 ip地址
    【查看ip地址命令】ifconfig 或者 ip addr 或者简写成 ip a
    【xshell连接到虚拟机】ssh 自己的ip地址 或者 ssh@用户名 自己ip地址
    在这里插入图片描述
    (3)查看系统支持的shell
    在这里插入图片描述
    在这里插入图片描述
    (3)xshell中的常用快捷键
    使用xshell中的复制粘贴快捷键
    复制:Ctrl+Insert
    粘贴:ShIft+Insert

或者:直接使用鼠标中键
粘贴:鼠标中键

Ctrl+D 快速退出

  • Xshell 报22端口失败解决方法
    (1)网上说 是什么 SSHD端口之类的问题,可以 输入 命令 setup 查看下,shhd有没有开启;还有window防火墙和虚拟机的防火墙可以设置关闭,但防火墙开不开启,其实影响不大,还有centos7默认是开启防火墙的;第一次装,如果按照上述步骤装机设置,一般都不会出错!下面来说下下最最最关键会出现报错的原因↓↓↓
    (2)检查下你安装完VMware后网络适配器有没有显示,虚拟机的网络适配器,如下图,如果刷新后,发现没有,先别急着去网上找答案,先解决这个问题
    在这里插入图片描述
    在这里插入图片描述
    (3)解决办法:win+R 输入appwiz.pl ,找到VMware软件,点击删除,引导式卸载,这样把软件卸载干净,然后把安装位置的文件也删了;win+R 输入 regedit 查找注册表中,删除 VM相关的注册表;这里建议安装下:CCleaner,扫描注册表,然后彻底删除和修复注册表;重启电脑,选择官方的VMware,自己搜码,再以管理员模式安装,刷新,再查看是否有虚拟机的网络适配器!

shell

用来在linux系统上的一个接口,用来将用户的输入发送给操作系统去执行,并把得到的结果输出出来

【查看系统支持的shell】 cat /etc/shells

【切换shell】 chsh -s shell

【查看当前运行的shell】 echo $SHELL

命令提示符

  • 提示符的含义
[root@localhost ~]# 
# 超级管理员
$ 普通用户
[用户@主机名 目录]命令提示符
永久生效的方法:echo 'PS1="\[\e[1;30;35m\][\u@\h \W]\\$\[\e[0m\]"' >> /etc/profile.d/ps.sh 
(其中最后ps 为自定义的名称,后缀sh必须一致)

在这里插入图片描述

执行命令

写完命令后直接回车就可以

  • 内部命令

    安装完系统以后自带的命令,就是内部命令

    通过help来获取内部命令的列表
    在这里插入图片描述

  • 外部命令

    第三方提供的,在某些地方可以直接找到执行文件

type 查看命令的类型
which 查找命令的路径

在这里插入图片描述

alias 别名

alias  【直接列出了系统里面所有的别名】
alias cdetc='cd /etc'  【设置别名】
unalias cdetc  【取消别名】
#让命令一致生效
#对当前用户
[root@localhost ~]#echo "alias cdetc='cd /etc'" >> .bashrc
#对所有的用户都生效
echo "alias cdetc='cd /etc'" >> /etc/bashrc
ls 相当于list

在这里插入图片描述

执行原来本身的命令

  • “ls”
  • \ls
  • ‘ls’

单双引号的区别

" " 可以打印变量的值

’ ’ 引号里面写什么就打印什么

在这里插入图片描述

date

[root@localhost ~]#date
Wed May 20 06:54:17 CST 2020
[root@localhost ~]#date +%F
2020-05-20
[root@localhost ~]#date +%H 【24小时制的时】
06
[root@localhost ~]#date +%I 【12小时制的时】
06
[root@localhost ~]#date +%y 【年】
20
[root@localhost ~]#date +%m 【月】
05
[root@localhost ~]#date +%d 【日】
20
[root@localhost ~]#date +%M 【分钟】
56
[root@localhost ~]#date +%S 【秒】
26
[root@localhost ~]#date +%a 【星期缩写】
Wed
[root@localhost ~]#date +%A 【星期全称】
Wednesday
[root@localhost ~]#date +%T 【完整时间】
06:58:22
[root@localhost ~]#date +%Y-%m-%d 
2020-05-20
[root@localhost ~]#date +%y-%m-%d
20-05-20
[root@localhost ~]#date +%s 【时间戳时间】
1589929209
[root@localhost ~]#date +%W 【一年中的第几周】
20
[root@localhost ~]#timedatectl 【查看时区】
      Local time: Wed 2020-05-20 07:06:55 CST
  Universal time: Tue 2020-05-19 23:06:55 UTC
        RTC time: Tue 2020-05-19 23:06:55
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

在这里插入图片描述
在这里插入图片描述

时区

[root@localhost ~]#timedatectl
[root@localhost ~]#timedatectl set-timezone  Asia/Shanghai

日历

cal 【展示当月的日历】
cal -y 【展示当年的日历】
cal -y  【显示#年的日历】

在这里插入图片描述

关机重启

shutdown 默认是一分钟之后关机
shutdown -c 取消
shutdown -r 重启

-r 后指定时间
	- now  立即
	hh:mm 【直接写 时间】
	+# 表示多长时间以后重启,一般是分钟
	
reboot 重启
       -p 切断电源
init 6 【重启】
init 0 【0】
poweroff 【关机】

在这里插入图片描述

命令的格式

command [options] [args...]
选项:启用或者禁用某些功能的
	短选项:-a
	长选项:--all
参数:命令的作用对象,一般情况是目录,用户等等
注意:
	多个选项及参数和命令之间需要用空格隔开
	命令后加ctrl+c 来取消命令的执行
	用 ;分号来隔开同时执行的多个命令
	使用\来将命令切换成多行

在这里插入图片描述

命令补全

tab键

内部命令:

外部命令:shell 会根据环境变量从左至右依次查找,找到第一个匹配的则返回

  • 如果说给定的字符串只能搜索到一个的话,则直接显示
  • 如果给定的字符串搜索到多个的话,则需要按两次tab键

目录补全

  • 把用户给定的字符串当做路径的开始部分,来搜索
    • 如果只搜索到一个,则直接显示,直接一个tab
    • 如果说搜索到多个的话,列出一个列表,让用户自行选择,需要按两次tab键来获取列表

echo 回显

输入什么就输出什么,并且加入了一个换行符

获取环境变量

[root@localhost ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

命令历史

  • 可以通过键盘上的箭头来查找之前执行过的命令

  • 通过history来获取之前执行过的命令记录

  • 执行刚才执行过的命令

    • 键盘上的向上箭头
    • !!
    • !-1
    • ctrl+p
  • 使用!:0来执行上一条命令(去掉参数)

  • !# 来执行history中的第多少条命令

    [root@localhost ~]#!123
    which cp
    alias cp='cp -i'
    	/usr/bin/cp
    
  • !要查找的字符 【从下往上直接查找最近的一条包含string的命令】

  • ctrl+r 【搜索之前执行过的命令】

  • ctrl+g 【退出待定的搜索】

  • 调用上一个命令的参数

    • esc . 【按一下esc然后按.】
  • history 的命令历史

    history #  【显示最后的 #条命令】
    history -c 清空命令记录
    
  • 当用户登录系统之后,会读取家目录下的.bash_history文件

[root@localhost etc]#cd ~
[root@localhost ~]#ls .bash_history
.bash_history
[root@localhost ~]#cat .bash_history 

  • 正常退出,会将之前执行过的命令写入到.bash_history文件中

快捷键

ctrl+l 清屏,相当于clear

ctrl+s 锁定屏幕,(挂起)

ctrl+q 解开锁定,(解挂)

ctrl+c 总之命令,(用于某些一直执行的命令,或者待输入后需要主动结束命令,如:top、tr )

ctrl+d 退出,(和ctrl+c 类似)

ctrl+a 移动到命令的行首 相当于home

ctrl+e 移动到行尾,相当于end

ctrl+xx 光标在命令行首和光标之间来回移动

ctrl +k 删除光标到结尾位置的字符

ctrl +u 删除光标到行首的字符

alt+r 删除正行

需要注意,alt会跟别的快捷键冲突

帮助信息

  • 内部命令
    • help 指定的命令
    • man bash
  • 外部命令
    • command --help
    • command -h
    • man command q退出
    • 官方文档
Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

# 含义:
  [] 代表可选,即可输也可不输
  ... 表示一个列表
  [-u|--utc|--universal] 任选其中一个
  -lh 代表-l -h
  date 052805271980 设置时间
ntpdate time.windows.com  自动与时间服务器同步时间

man

man 5 passwd 【需要指定 文档中有的 章节 和其内容】

箭头来控制输出

回车输出下一行

空格切换到下一屏

章节

1 用户的命令

2 系统的调用

3 c库的调用

4 设备文件或者特殊文件

5 配置文件

6 游戏

7 杂项

8 管理类的命令

9 linux内核API

目录结构

在这里插入图片描述

  • 目录结构是一个倒置的树
  • 目录从“/”开始
  • 目录严格区分大小写
  • 隐藏文件以.开头
  • 路径的分隔符是/

文件命名规范

  • 文件名最长为255个字符
  • 包括路径在内最长4095个字符
  • 除了/和NULL以外,其他的字符都生效
  • 名称大小写敏感

颜色的表示

  • 蓝色 表示目录
  • 绿色 表示可执行文件
  • 红色 表示压缩文件
  • 蓝绿色 链接文件
  • 白色 普通的文件
  • 灰色 其他文件
    在这里插入图片描述

文件系统结构

在这里插入图片描述

  • /boot 存放系统的引导文件,内核文件、引导的加载器放在该目录
  • /bin 所有的用户都可以使用的一些基本命令
  • /sbin 管理员可以使用的命令,管理类命令
  • /lib 基本的一些库文件(windows 是.dll linux是.so)
  • /lib64 专门用于64位操作系统的一些辅助库文件
  • /etc 配置文件目录
  • /home/Username 普通用户的家目录
  • /root 超级管理员的家目录
  • /media 便携式移动设备挂载点
  • /opt 第三方的安装程序
  • /srv 系统上允许的服务用到的数据
  • /tmp 存放临时文件的目录
  • /usr 存放安装程序
  • /var 存放经常变化的数据,比如日志
  • /proc 用来存放内核和进程相关的虚拟文件
  • /dev 用来存放设备的
  • /mnt 临时文件挂载
  • /run 服务或者系统启动以后生成的文件
  • /sys 存放的是硬件设备相关的虚拟文件

程序组成部分

  • 二进制文件存放位置
    • /bin
    • /sbin
    • /usr/bin
    • /usr/sbin
    • /usr/local/bin
    • /usr/local/sbin
  • 库文件
    • /lib
    • /lib64
    • /usr/lib
    • /usr/lin64
    • /user/local/lib
    • /usr/local/lib64
  • 配置文件
    • /etc
    • /etc/directory
    • /usr/local/etc
  • 帮助文件
    • /usr/share/man
    • /usr/share/doc
    • /usr/local/share/man
    • /usr/local/share/doc

相对路径 绝对路径

绝对路径:

  • 从根开始
  • 完整的路径

相对路径:

  • 相对于某个文件或者目录
  • 不是从 / 开始
  • … 代表是父级目录
  • . 代表当前路径

获取文件名和文件目录

[root@localhost network-scripts]#basename /etc/sysconfig/network-scripts/ifcfg-ens33
ifcfg-ens33
[root@localhost network-scripts]#dirname /etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts

cd

change directory

可以使用相对路径,也可以使用绝对路径

[root@localhost etc]#cd
[root@localhost ~]#
[root@localhost ~]#cd - 可以快速的回到上一次的目录
/etc/sysconfig/network-scripts
[root@localhost network-scripts]#cd -
/root

pwd

print working directory

[root@localhost etc]#pwd
/etc
[root@localhost etc]#cd sysconfig/network-scripts/
[root@localhost network-scripts]#pwd
/etc/sysconfig/network-scripts

ls

list 列出指定目录的文件或者文件夹

语法:ls [OPTION]… [FILE]…

ls -a  列出所有的文件(包括隐藏文件)
ls -l =ll 使用长格式来显示文件相关信息
ls -R 【递归显示】
ls -r 【r代表 reverse 倒序显示 】
ls -d 显示目录本身
ls -1(数字1) 竖着显示文件
ls -lS 根据文件的大小来排序(默认降序)
ls -lSr 根据文件的大小,升序排序
ls -d */ 显示当前目录下的目录,不能指定目录
ls -ltu 【按照atime时间排序】
ls -lh 以人类易读的方式显示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

touch 创建空文件修改文件的时间戳

touch 用来修改时间和创建文件
如果文件存在的话,则修改时间
如果不存在,则创建文件

命令的展开

a{1..10}   命令展开 【注意是大括号】
a{1..10..2} 指定步长
seq 1 10 
seq 1 2 10  【中间的 是 步长】

在这里插入图片描述

命令引用

`date`
$(date)

在这里插入图片描述

文件通配符

  • * 代表零个或者多个字符
  • ? 代表任意的一个字符
  • ~ 代表家目录
  • [0-9] 代表数字
  • [a-z] 字母,从a-z并且包括A-Y
  • [A-Z] 字母,从A-Z 并且包括b-z
  • [abcdef] 表示其中的任何一个
  • a[^abcdef] 取反
  • [:lower:] 小写字符
  • [:upper:] 大写字符
  • [:digit:] 数字
  • a-zA-Z 所有字母
  • [:alpha:] 所有字母
  • a-zA-Z0-9 任意字母或者数字
  • [:alnum:] 代表所有的字母和数字

在这里插入图片描述

stat 查看文件状态

[root@localhost studytest]#stat aa
  File: ‘aa’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 2451158     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-05-23 08:02:10.179131830 +0800
Modify: 2020-05-23 08:02:10.179131830 +0800
Change: 2020-05-23 08:02:10.179131830 +0800
 Birth: -

访问时间:access      读取文件内容  atime
修改时间:Modify      改变文件的内容 mtime
改变时间:change      改变文件的内容 ctime

复制文件和文件夹

Usage: cp [OPTION]... [-T] SOURCE(源文件) DEST(目标文件)
  or:  cp [OPTION]... SOURCE... DIRECTORY
  or:  cp [OPTION]... -t DIRECTORY SOURCE...

  • 如果source是一个文件的话
    • 如果目标不存在,新建一个目标文件,并将数据写入到目标文件里面
    • 如果目标文件存在
      • 如果目标文件是一个目录,直接在目标目标下面新建一个跟源文件同名的文件,并将数据目标文件写入到文件
      • 如果说目标文件是一个文件,直接就覆盖,为了安全起见,建议cp配合-i使用
  • 如果源文件是多个文件的话
    • 目标文件如果是文件的话,则直接报错
    • 如果目标文件是一个目录的话,则直接复制进目录
  • 如果源文件是目录的话
    • 如果目标不存在,则创建指定的目录,必须-r选项
    • 如果说目录存在
      • 如果目录是一个文件的话,则会报错
      • 如果目标是一个目录的话,则在目录下面创建一个新的同名目录,并把文件复制过去

常用参数

-i 覆盖之前提示
-n 不覆盖存在的文件
-r 递归复制,复制目录及目录下的所有文件
-rf 强制
-rv 显示复制过程
-b 在覆盖之前,对源文件做备份
cp  --backup=numbered 1.cfg 2.cfg 覆盖文件,备份文件添加上数字
-p 保留原来的属性

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

移动或者重命名

Usage: mv [OPTION]... [-T] SOURCE DEST
  or:  mv [OPTION]... SOURCE... DIRECTORY
  or:  mv [OPTION]... -t DIRECTORY SOURCE...
-i  交互式
-f  强制
-b  覆盖前做备份
-v 显示进度

删除

rm [OPTION]... FILE...
-i 交互式
-f 强制删除
-r 递归删除
-rf 递归强制删除,即不过问,直接删除文件夹或文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 删除多个文件的方法
【删除几个文件】  rm 文件1 文件2

【删除文件夹下面所有文件,一定要看清所在的文件目录,慎用】  rm -rf * 

【删除某些固定字母开头的文件】  rm  xxx* 

【删除一类文件】         rm   *.txt

删除文件的多种方法(安全方法)

  • 重定向
    通过重定向到 Null 来清空文件内容清空或者让一个文件成为空白的最简单方式,是像下面那样,通过 shell 重定向 null (不存在的事物)到该文件
# > access.log

在这里插入图片描述

  • 使用 : 符号
    使用 : 符号,它是 shell 的一个内置命令,等同于 true 命令,它可被用来作为一个 no-op(即不进行任何操作)。另一种清空文件的方法是将 : 或者 true 内置命令的输出重定向到文件中
# : > access.log 
# true > access.log

在这里插入图片描述

  • 使用 cat/cp/dd 实用工具及 /dev/null 设备来清空文件
    在 Linux 中, null 设备基本上被用来丢弃某个进程不再需要的输出流,或者作为某个输入流的空白文件,这些通常可以利用重定向机制来达到,所以 /dev/null 设备文件是一个特殊的文件,它将清空送到它这里来的所有输入,而它的输出则可被视为一个空文件。另外,你可以通过使用 cat命令 显示 /dev/null 的内容然后重定向输出到某个文件,以此来达到清空该文件的目的。
# cat /dev/null > access.log

使用 cp命令 复制 /dev/null 的内容到某个文件来达到清空该文件的目的

# cp /dev/null access.log

下面的命令中, if 代表输入文件,of 代表输出文件

# dd if=/dev/null of=access.log

在这里插入图片描述
在这里插入图片描述

  • 使用 echo 命令清空文件
    使用 echo命令 将空字符串的内容重定向到文件中
# echo "" > access.log

或者

 # echo > access.log

注意:应该记住空字符串并不等同于 null 。字符串表明它是一个具体的事物,只不过它的内容可能是空的,但 null 则意味着某个事物并不存在。基于这个原因,当你将 echo命令 的输出作为输入重定向到文件后,使用cat命令来查看该文件的内容时,你将看到一个空白行(即一个空字符串)。要将 null 做为输出输入到文件中,你应该使用 -n 选项,这个选项将告诉 echo 不再像上面的那个命令那样输出结尾的那个新行。

# echo -n "" > access.log
  • 使用 truncate 命令来清空文件内容
    truncate 可被用来将一个文件缩小或者扩展到某个给定的大小。你可以利用它和 -s 参数来特别指定文件的大小。要清空文件的内容,则在下面的命令中将文件的大小设定为 0
# truncate -s 0 access.log

在这里插入图片描述

  • 使用rsync命令
    假如要在linux下删除大量文件,比如100万、1000万,像/var/spool/clientmqueue/的mail邮件,/usr/local/nginx/proxy_temp的nginx缓存等;rsync 可以用来清空目录或文件!
1)先建立一个空目录

mkdir /data/blank

2)用rsync删除目标目录

rsync--delete-before -d /data/blank/ /var/spool/clientmqueue/

# 这样目标目录很快就被清空了

快速删除大文件:

1)创建空文件

touch /data/blank.txt

2)用rsync清空文件

rsync-a --delete-before --progress --stats /root/blank.txt /root/nohup.out

为什么rsync能够快速删除大文件?

1)rm命令大量调用了lstat64和unlink,可以推测删除每个文件前都从文件系统中做过一次lstat操作。过程:正式删除工作的第一阶段,需要通过getdirentries64调用,分批读取目录(每次大约为4K),在内存中建立rm的文件列表;第二阶段,lstat64确定所有文件的状态;第三阶段,通过unlink执行实际删除。这三个阶段都有比较多的系统调用和文件系统操作。

2)rsync所做的系统调用很少:没有针对单个文件做lstat和unlink操作。命令执行前期,rsync开启了一片共享内存,通过mmap方式加载目录信息。只做目录同步,不需要针对单个文件做unlink。

另外,在其他人的评测里,rm的上下文切换比较多,会造成System CPU占用较多——对于文件系统的操作,简单增加并发数并不总能提升操作速度。

总结:频繁做减法不如直接从头来过

把文件系统的目录与书籍的目录做类比,rm删除内容时,将目录的每一个条目逐个删除(unlink),需要循环重复操作很多次;rsync删除内容时,建立好新的空目录,替换掉老目录,基本没开销。

原文链接:https://blog.csdn.net/liuxiao723846/article/details/51626305
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值