一、Linux系统配置

1.修改主机名 [/etc/hostname]

vi /etc/hostname

在其中将旧名字修改为新主机名,保存,重启生效。

2.本地DNS映射 [/etc/hosts]

vi /etc/hosts

添加ip-name对:

192.168.1.121 centos-clone1

保存即可。

3.查看命令信息 [type][file]

type ifconfig

得到信息:

ifconfig is /usr/sbin/ifconfig

说明ifconfig位于/usr/sbin目录下。

继续查看该命令的类型:

file /usr/sbin/ifconfig

得到以下内容:

/usr/sbin/ifconfig: ELF -bit LSB shared object, x86-, version  (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6., BuildID[sha1]=22d5b3be8d3ce3c71cad5b982581ede262397b56, stripped

注意ELF,表示这是一个二进制文件的编码格式,说明是一个可执行的二进制文件。

我们再看看yum的类型:

file /usr/bin/yum
/usr/bin/yum: Python script, ASCII text executable

说明yum是一个python脚本。

再看看cd的类型:

type cd
cd is a shell builtin

cd是一个shell的内建程序。

4.环境变量PATH

打印环境变量:

echo $PATH

在PATH环境变量中,我们需要将软件的可执行程序目录(一般是bin)添加进去。例如:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

这是系统默认添加在PATH环境变量中的目录,假设我们安装了JDK,则需要将JDK下的bin目录也添加进去,这样我们就可以直接使用java、javac等命令。

5.补全mini系统中的帮助工具man

在Mini版的系统中,可能确实man工具或man不完整,通过yum安装完整版的man:

yum install man man-pages -y

6.命令的学习帮助 [help][man]

命令分为内部命令和外部命令

内部命令就是shell的内建命令,例如cd、type等。内部命令通过help来学习:

help cd

外部命令就是我们安装的命令,例如ifconfig等。外部命令通过man来学习:

man ifconfig

二、Linux基本操作

1.查看磁盘信息 [df]

[root@centos-clone1 etc]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs % /dev
tmpfs % /dev/shm
tmpfs % /run
tmpfs % /sys/fs/cgroup
/dev/mapper/centos-root % /
/dev/sda1 % /boot
tmpfs % /run/user/

转换为人类可读:

[root@centos-clone1 etc]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs .9G .9G % /dev
tmpfs .9G .9G % /dev/shm
tmpfs .9G 12M .9G % /run
tmpfs .9G .9G % /sys/fs/cgroup
/dev/mapper/centos-root 18G .5G 17G % /
/dev/sda1 497M 165M 333M % /boot
tmpfs 378M 378M % /run/user/

在这里我们可以看到,磁盘使用了LVM,根目录存在于卷组centos(VG)上得逻辑卷root(LV)上,大小为18G。

但是根下面的boot目录是独立存放在sda1物理卷上的。

2.文件系统目录

/bin  #一般存放系统命令
/sbin #一般存放系统命令
/boot #引导文件
/dev #I/O设备抽象成文件
/etc #配置
/home #非root用户家目录
/root #root用户家目录
/lib #库文件
/lib64 #库文件
/mnt #挂载点
/usr #软件的受管控安装目录
/var #软件的生成文件
/opt #非受系统管控软件,约定俗成的安装位置

3.统计各个文件夹大小 [df]

du -s ./   #统计当前目录大小
du -s ./* #统计子目录各自大小

-s 表示sum即求和。如果使用./则是统计该目录的总大小,如果使用./*则是对该目录下所有子文件夹各自进行统计。

du -sh

使用 -h 表示human,以人类可读的方式显示大小:

[root@centos-clone1 usr]# du -sh ./
.1G ./
[root@centos-clone1 usr]# du -sh ./*
58M ./bin
0 ./etc
0 ./games
36K ./include
656M ./lib
116M ./lib64
12M ./libexec
8.0K ./local
43M ./sbin
231M ./share
0 ./src
0 ./tmp

注:使用该命令可以检查哪个文件夹占用空间最大,找到磁盘耗尽的祸源。

4.文件权限

[root@centos-clone1 boot]# ls -l
total
-rw-r--r-- root root Sep : config-3.10.-1062.1..el7.x86_64
-rw-r--r--. root root Nov config-3.10.-.el7.x86_64
drwxr-xr-x root root Oct : efi
drwxr-xr-x. root root Oct : grub
drwx------. root root Oct : grub2
-rw-r--r--. root root Oct : initramfs--rescue-62ae9a150bf641ba955e242814e7d88a.img
-rw------- root root Oct : initramfs-3.10.-1062.1..el7.x86_64.img

使用ls -l查看详细文件列表后,我们可以看到一下内容(从前往后):

文件类型:第一位表示文件类型,d表示文件夹,-表示文件,l表示软连接,b表示字节流设备文件,c表示字符流设备文件等等。

文件权限:后面的9位每3位为一组,分别表示该用户、用户组、其他用户对该文件的读、写、执行权限。

Selinux和ACL标志:在权限的后面有一个"."或者"+",这两个符号用来表示有没有Selinux和ACL上下文,与安全有关。

硬链接数:权限部分后面的数字,表示该文件有多少个硬链接。如果是目录,则表示目录中包含的所有文件的硬链接总和。

文件所属:中间的root root表示文件所属用户,以及用户组。

文件大小:如果是文件,则直接显示文件大小,如果是文件夹,则需要通过du来统计大小。

修改时间:文件最后修改时间。

文件名称:文件或文件夹名称。

5.创建目录 [mkdir]

普通创建:

mkdir ./abc

递归创建:

mkdir -p ./a/b/c

横向创建:

mkdir {x,y,z}dir
[root@centos-clone1 ~]# ls
abc anaconda-ks.cfg xdir ydir zdir

6.删除 [rm]

删除单文件和空文件夹:

rm -f filename

-f 指force即强制删除,无需用户确认。

删除多层文件夹:

rm -rf dir

-r 指递归的删除。

不要删除根目录:

rm -rf /

这样回导致所有根目录下的文件及文件夹被删除,导致系统崩溃,删除后只剩下最初的引导程序grub。

7.拷贝 [cp]

拷贝一个文件:

cp filename /dstdir/newname

拷贝一个文件夹:

cp -r dirname newdirname

8.硬链接和软连接 [ln]

硬链接:

ln filename othername

filename指被硬链接的文件,othername表示创建的硬链接的名字。

文件被硬链接时,所有的名字都指向同一个文件,类似于java中的引用。

当删除一个硬链接时,如果还存在该文件的其他硬链接,该文件本身不会被删除,但是硬链接数量减一。

软链接:

ln -s filename othername

-s 表示软链接 soft link。

软链接实际上就类似于windows中的快捷方式。

windows下当我们删除原文件时,快捷方式是不被删除的,但是运行该快捷方式会表示找不到原文件。在Linux下同理,我们删除原文件后,该软链接会显红提示原文件找不到。

当我们删除软链接时,仅仅删除的是快捷方式,是不影响原文件的。

9.元数据 [stat]

查看一个文件的元数据(属性):

[root@centos-clone1 ~]# stat anaconda-ks.cfg 
File: anaconda-ks.cfg
Size: Blocks: IO Block: regular file
Device: fd00h/64768d Inode: Links:
Access: (/-rw-------) Uid: ( / root) Gid: ( / root)
Access: -- ::21.958249864 +
Modify: -- ::21.959249872 +
Change: -- ::21.959249872 +
Birth: -

注意看其中有3个时间,Access、Modify和Change。

Access:表示最近一次访问该文件的时间。

Modify:表示最近一次修改该文件内容的时间。

Change:表示文件元数据最近一次变化的时间。(纯粹的访问该文件不会引起该时间变化,Access时间变化不影响。但是编辑文件则会导致该时间变化,估计是因为Modify时间变化了。)

10.管道 [|]

利用管道可以衔接2个命令,将第一命令的输出做为第二个命令的输入。

head - filename | tail -

先用head读取file中的前4行,再将这4行交给tail,获取最后一行。相当于获取了file中的第4行。

echo "/" | ls -l   # 错误

上面这个命令不能得到根目录的文件列表。因为路径"/"对于ls -l来说是参数,而不是输入。可以改为如下:

echo "/" | xargs ls -l

这个命令相当于把"/"这个输出交给xargs命令,而xargs命令会将得到的输入"/"作为ls -l的参数,并运行ls命令。

11.过滤 [grep]

从文件中过滤出含有word的行:

grep word filename

用-v过滤出不含word的行(反选):

grep -v word filename

三、VI编辑器

1.打开文件

打开文件,光标定位到第5行:

vi + filename

打开文件,光标定位到最后一行:

vi + filename

或者打开文件后shift + G,光标也是切换到最后一行。

2.保存&退出

保存退出:

:wq
shift ZZ
:x

不保存退出:

:q!

3.vi三种模式

编辑模式:刚打开文件时的模式,即所有的键盘操作都是快捷键,例如i插入,d删除等。

插入模式:按i、a、o等可以进入插入模式,即键盘从编辑模式恢复正常内容输入功能。

末行模式:按ESC再按":",可以进入末行模式,此时可以保存退出,或者使用"/"查找,"set nu"(不是set num)显示行号等。

编辑模式--->插入模式:

- i :在当前光标的前面转为输入模式,也就是输入的内容插入在光标的前面。

- a:在当前光标的后面转为输入模式,在输入内容时,光标自动会先往后面移动一格,然后再插入在光标之前,可以减少肢体运动,特别是想在一行的最后插入内容。

- I:在当前行的行首转换为输入模式。

- A:当前行的行末转换为输入模式。

- o:在当前行的下面新建一行,并转入输入模式。

- O:在当前行的上面新建一行,并转入输入模式。

插入模式--->编辑模式:

ESC

编辑模式--->末行模式:

按 :

末行模式--->编辑模式:

ESC

4.编辑模式下的基本操作

编辑模式下的光标移动:
在编辑模式下,我们无需使用方向键来移动光标,可以使用以下几个键来进行字符级光标移动:

- h:左移
- l:右移
- j:下移
- k:上移

单词间的跳跃:

- w : 移动至下一个单词词首,即逐单词跳跃
- e : 移动至当前单词或下一个单词的词尾
- b :移动至上一个单词的词首

行内的光标移动:

数字0: 移动到当前行行首
^: 移动到行首的非空白字符
$: 移动到绝对行尾

行间光标移动(几个哥哥):

shift + G: 大写G,光标移动到最后一行的行首
gg: 两个小写g,光标移动到最前面一行的行首
数字+gg: 光标移动到数字行的行首,例如12gg,移动到第12行行首

翻页:

ctrl + f : 向后翻页
ctrl + b: 向前翻页

删除&替换单个字符:

- x: 删除光标处的字符
- 3x: 删除光标开始3个字符
- r: 替换光标处的字符

删除行、单词:

- d: 删除命令
- dd: 删除一行
- 2dd: 删除两行
- dw: 删除一个单词
- 2dw: 删除两个单词

复制&粘贴&剪切:

- y : 复制命令
- yy : 复制一行
- 2yy : 复制两行
- yw : 复制一个单词
- 2yw : 复制两个单词 - p : 粘贴在下方
- P : 粘贴在上方

如果是删除配合粘贴,则就是windows中的剪切。在执行dd的时候,删除的内容会放入缓存区,此时可以用p来粘贴。

撤销&重做:

- u : 撤销上次的操作
ctrl+r : 撤销上次的撤销
- . : 重复上次的操作

查找内容:

两种方式:

末行模式:
:/word
编辑模式:
/word
- n : 下一个目标
- N : 上一个目标

5.末行模式下的基本操作

显示行号:

:set nu

取消显示行号:

:set nonu

末行模式查找单词word,光标会定位到第一个word所在行的行首:

:/word

另一种方式则是在编辑模式下,直接使用"/word"来查找,这种方式光标会停在第一个word单词的w上。

范围操作:

删除指定范围的行(1,$-1):

:,$-1d

意思是从第1行删除到倒数第2行,$表示最后一行,$-1则是倒数第二行,d表示删除命令。

删除全部行:

:,$d

1,$表示全文,也可以使用%代替1,$

:%d

用"."代表当前行:

:,.y  #意思是复制从第一行到当前行。
:.,.+3d  #从当前行开始删除,一共删除4行

替换内容:

:,$s/word1/word2/

从第一行到最后一行(即全部行),使用s命令将word1全部替换为word2。之间的"/"是分隔符,如果word1和word2中出现了"/",则不能再使用"/"作为分隔符,我们可以使用其他特殊字符,例如"#"。

:,$s#word1#word/#

注意:以上命令在替换时,如果一行中有2个word1时,只会替换第一个word1。如果想要全部替换,则在最后加上g,表示global。

:,$s#word1#word/#g

四、正则

通配符:

ls -l | grep a*
ls -l | grep a??

"*"和"?"都为通配符,"*"代表0-n个任意字符,"?"表示1个任意字符。

正则里的匹配操作符:

\ : 转义字符
. : 匹配任意单个字符,类似通配符中的?
[125ak] : 匹配方括号中任意一个字符
[^] : 匹配不是1、2的任意一个字符
[a-k] : 匹配属于a-k范围任意一个字符
^ : 行首
$ : 行尾
\< : 单词开头,例如\<abc,以abc开头的单词
\> : 单词结尾,xyz\>,以xyz结尾的单词

正则中的重复操作符:

? : 匹配0到1次
* : 匹配0到n次
+ : 匹配1到多次
{n} : 匹配n次
{n,} : 匹配n到多次
{n,m} : 匹配n到m次

选择:

grep "\(oo\)\(xx\).*\2\1" filename

将oo和xx分组,".*"表示匹配任意个任意字符,然后最后oo、xx换位置,匹配到"ooxx128376xxoo"。

五、切割

cut命令:

# 以空格分隔,显示第一列
cut -d' ' -f1 content.txt
# 以空格分隔,显示第二列,发现没有第二列的行又出现了。
cut -d' ' -f2 content.txt
# -s 处理脏数据,即不含分隔符的行,只作为第一列。
cut -s -d' ' -f2 content.txt
# 显示第1和第3列
cut -s -d' ' -f1, content.txt
# 显示1-3列
cut -s -d' ' -f1- content.txt

六、排序

sort命令:

# 以空格为分隔符,按第2列排序,字典序
sort -t' ' -k2 sort.txt
# -n表示数字序
sort -t' ' -k2 -n sort.txt
# -r表示倒序
sort -t' ' -k2 -n -r sort.txt

七、统计

wc命令(word count):

# 统计行数
wc -l sort.txt
# 统计byte数
wc -c sort.txt
# 统计char数
wc -m sort.txt
# 统计单词数
wc -w sort.txt
# 统计最长行的长度
wc -L sort.txt

组合使用:

# 统计一个/etc文件夹有多少文件和目录
ls -l /etc | wc -l
# 只获取文件的行数(只获取数字)
cat sort.txt | wc -l

八、行编辑器 [sed]

# 在第一行后面添加hello world。注意,这里hello前面是反斜杠。
sed "1a\hello world" sort.txt

在以上命令中,添加后的内容实际是没有真正写到文件中的,如果要写到文件中去,则需要使用 -i 。

# 在第一行后面添加hello world,并真正写入文档。
sed -i "1a\hello world" sort.txt
# 删除第2行
sed "2d" sort.txt
# 删除所有有hello的行,注意这里的过滤条件两边是正斜杠。
sed "/hello/d" sort.txt
# 删除含数字的行
sed "/[0-9]/d" sort.txt
# 只打印带数字的行
sed -n "/[0-9]/p" sort.txt
#其中-n表示静默模式,即不再默认显示模式空间中的内容,如果不含-n,则会显示文本全部内容
# p表示print打印
# 相当于代替了grep "[0-9]" sort.txt
# 在最后一行后面插入内容。$表示最后一行,注意这里只能使用单引号。否则$后面的内容会被认为是命令
sed -i '$a\hello world' sort.txt

将inittab中的"id:3:initdefault:"替换为"id:5:initdefault:" (即将开机命令行模式修改为开机图形界面):

sed -i "s/id:[0-6]:initdefault:/id:5:initdefault:/" inittab

也可以加上分组来实现 (id:为第一组,:initdefault:为第二组):

sed -i "s/\(id:\)[0-6]\(:initdefault:\)/\15\2/" inittab

九、文本分析工具 [awk]

awk也是按行来处理的,会将操作分别作用于每一行。

# -F设置分隔符,print表示打印,$1表示第一列。注意{}外面只能用单引号。
awk -F':' '{print $1}' passwd
# 打印第一列和第七列,用逗号隔开
awk -F':' '{print $1,$7}' passwd

在第一行前面和最后面打印标签:

awk -F':' 'BEGIN{print "name\tnumber"} {print $1"\t"$7} END{print "this is end"}'

BEGIN、END是有名函数表示在第一行之前以及最后一行之后执行一次。print打印的字符串要用双引号,\t是制表符。

打印passwd文件中的行数,每行的列数,行的内容:

# 打印行数,每行列数,行的所有内容
[root@centos-clone1 etc]# awk -F':' '{print NR"\t"NF"\t"$0}' passwd
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync

其中NR(number row)表示行号,NF(number field)表示列数,$0表示该行的多有内容。

综合示例:

Tom            --      car
John -- bike
vivi -- car
Tom -- car
John -- bike

使用awk统计1月份每个人发的工资,其中Tom的工资分为12月和1月,我们只需要1月的。John有2份1月的工资,需要加起来。

awk '{split($3,date,"-");if(date[2]==''){name[$1]+=$5}} END{for(i in name){print i"\t"name[i]}}' test.txt

解释:

1.awk 默认分隔符为空格或制表符等空白符,所以这里不用指定-F。

2.使用split将$3 (2013-01-13)也就是日期分隔,使用"-"作为分隔符,将分隔后的数组放入date。

3.date[0]表示分隔前的整个时间 (2013-01-13),date[2]表示月份 (01),当date[2]为01月时,定义一个name hashmap,key为$1即文本的第一列人名,并对工资进行累加。

4.所有累加做完以后,在END中循环name hashmap,打印其中的名字和工资。

示例2:

上述文本中第2列的0表示Manager,1表示worker。我们需要在最后的报表结果中的内一行中将人的角色也打印出来。

awk '{split($3,date,"-");if(date[2]==''){name[$1]+=$5};if($2=="0"){role[$1]="Manager"}else{role[$1]="Worker"}} END{for(i in name){print i"\t"role[i]"\t"name[i]}}' test.txt

1.同name数据结构一样,我们再添加一个叫role的hashmap,用来保存每个人的角色。

2.在最后打印的时候,通过key名称来访问他的角色,并一起打印。

[Linux系统] (1)常用操作(CentOS 7.x)的更多相关文章

  1. Linux 系统巡检常用命令

    Linux系统巡检常用命令   # uname -a # 查看内核/操作系统# cat /etc/centos-release # 查看centos操作系统版本# cat /proc/cpuinfo ...

  2. Linux学习之五-Linux系统终端常用的快捷键

    Linux系统终端常用的快捷键 (使用快捷键能大大提高效率,部分用在远程登录的工具如Xshell下) 剪切板操作(终端不支持,因为终端是纯命令行) Ctrl+insert     复制 Shift+i ...

  3. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  4. linux系统的常用命令

    linux系统中常用的命令如下(以后经常补充): cd ..   返回上一级 cd use  进入use目录

  5. linux系统监控常用工具

    linux系统监控常用工具 一.系统核心工具包(coreutils) 1./bin/df 报告系统的磁盘空间用量 df -h  显示磁盘分区fdisk -l 2./bin/uname 显示系统信息 u ...

  6. Linux的date常用操作

    Linux的date常用操作 ## 在指定的日期上减1天 $ date -d "2012-04-10 -1 day " +%Y-%m-%d 2012-04-09 ## 在指定的日期 ...

  7. Linux运维-常用操作-培训用例

    一.服务器环境 Centos 7.9 二.常用连接工具(免费) 1.Finalshell 2.MobaXterm 3.Putty + WinSCP 三.Linux  系统目录结构 /bin :是 Bi ...

  8. linux系统学习(常用命令)

    今天调休,闲来无事,研究一下linux系统. Linux常用命令: 一:文件管理 ctrl+alt:在虚拟机与windows之间切换ctrl+g:进入linux输入模式 pwd:查看当前目录 ls:列 ...

  9. Linux系统中常用操作命令

    常用指令 ls        显示文件或目录     -l          列出文件详细信息l(list)     -a         列出当前目录下所有文件及目录,包括隐藏的a(all)mkdi ...

随机推荐

  1. PTA(Basic Level)1006.Sign In and Sign Out

    At the beginning of every day, the first person who signs in the computer room will unlock the door, ...

  2. python装饰器的原理

    装饰器的原理就是利用<闭包函数>来实现,闭包函数的原理就是包含内层函数的return和外层环境变量:

  3. 自然语言处理工具HanLP-N最短路径分词

    本篇给大家分享baiziyu 写的HanLP 中的N-最短路径分词.以为下分享的原文,部分地方有稍作修改,内容仅供大家学习交流! 首先说明在HanLP对外提供的接口中没有使用N-最短路径分词器的,作者 ...

  4. Sigma (化简)牛客多校第一场 -- Integration

    思路: 可以裂项化简,类似找规律,可以两项.三项代进去试试看. #define IOS ios_base::sync_with_stdio(0); cin.tie(0); #include <c ...

  5. 附录1:arrayanalysis的本地使用(质量控制)

    访问:https://github.com/BiGCAT-UM/affyQC_Module,点击“Download ZIP”,下载得到affyQC_Module-master.zip,解压得到一个af ...

  6. 使用xpath爬取猫眼电影排行榜

    最近在学习xpath,在网上找资料的时候,发现一个新手经常拿来练手的项目,爬取猫眼电影前一百名排行的信息,很多都是跟崔庆才的很雷同,基本照抄.这里就用xpath自己写了一个程序,同样也是爬取猫眼电影, ...

  7. Get MySQL这5个优化技巧

    一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇文章主要谈谈MySQL数据库在发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大 ...

  8. SpringCloudGateWay之限流

    一.引言在高并发系统中,经常需要限制系统中的电流化妆.一方面是防止大量的请求使服务器过载,导致服务不可用,另一方面是防止网络攻击.常用的限流方法,如hystrix.应用线程池隔离.超过线程池的负载和g ...

  9. hadopp 环境搭建

    前序: 首先准备三个虚拟机节点.  配置hosts文件:每个节点都 如下配置: vi /etc/hosts 1. 每个结点分别产生公私密钥 ssh-keygen -t dsa -P '' -f ~/. ...

  10. ThinkPHP5框架缺陷导致远程命令执行(POC整合帖)

    摘要 近日thinkphp团队发布了版本更新https://blog.thinkphp.cn/869075 ,其中修复了一处getshell漏洞. 影响范围 5.x < 5.1.31<= ...