Linux 常用命令(整理中)

目录

一、系统文件结构和内部命令、外部命令和

二、文件系统命令

1、如何识别文件类型

2、各种查看命令

3、文件文件夹的增、删、改、查、移动操作

三、查询筛选系列

1、正则表达式(grep)【重要】

2、管道的使用【重要】

四、echo定义变量

五、文本相关命令

1、文件查看 

 2、管道的使用(重要)

六、文本编辑器(vi)

1、进入文件编辑模式

2、编辑内容操作

3、退出编辑模式

4、末行模式 

七、bash shell进程简单管理

八、行编辑器(sed)

九、文本分析工具(awk)

练习一

练习二


一、系统文件结构和内部命令、外部命令和

1、系统文件结构

 

2、内部命令、外部命令

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

命令结构

根据空格切割字符串,第一个位置为命令,其他位置为命令参数

命令描述
type查看命令是 内部命令 还是 外部命令 (shell自带的命令为内部命令) 
help查看帮助文档命令(主要查内部命令)
man

查看帮助文档命令manual的简写(主要查外部命令)

注意:man命令如果不识别可以通过 yum install man 来安装man

whereis查看命令的可执行文件路径
file查看文件类型
cat查看可执行文件的内容
echo打印输出(相当于system.out.println)
clear清屏

su

su - 

Linux su(英文全拼:swith user)命令用于变更为其他使用者的身份

su - root :切换至管理员 root 权限(或使用 su root

 

su 和 su - 都可用作linux方面来切换用户,但它们的不同的之处,在于

su : 切换到目标用户,只是切换了身份,但环境变量没有切换过来
su - : 切换到目标用户,既切换了身份,又切换了环境变量

shutdown

关机指令

shutdown -h now :立即关机

shutdown -h +10(或10) :十分钟后关机

shutdown -h 20:02 :系统将在20:02关机

shutdown -r now :立即重启系统

shutdown -r +10 :十分钟后重启

reboot重启指令

 

二、文件系统命令

1、如何识别文件类型

首先,通过 ls -l 命令打印出详细信息如下

第1位是:类型标识

  • 【-】:普通文件(file)
  • 【d】:目录文件(文件夹),代表directory
  • 【b】:块设备文件(block)
  • 【c】:字符设备文件(character)
  • 【l】:符号链接文件(symbolic link file)
  • 【p】:命令管道文件(pipe)
  • 【s】:套接字文件(socket)

第2~10位是:文件权限;每三位一组,共三组(共9位)
分别代表:属主权限(owner) > 组权限(group) > 其他人的权限(other)

  • 【r】=read;
  • 【w】=write;
  • 【x】=execute

例如:drwxr-xr-x表示(d  rwx  r-x  r-x)

d:这是一个文件夹

rwx:第一组;属主权限(创建者)为读、写、执行

r-x:第二组;组权限为读、执行

r-x:第三组;其他人权限为读、执行

 

2、各种查看命令

命令描述
cd切换文件路径
df

显示磁盘使用情况(查看分区信息)

dfKB的形式显示

df -hGB的形式显示(推荐)

du

显示文件系统使用情况(查看文件、文件夹信息)

du不显示单位

du -h显示单位(推荐)

pwd打印出当前(工作目录)的路径
ls

LS命令展示路径下所有的文件和文件夹

ls -l:每行一个的列出目录清单(详细信息)

ls -a:可显示隐藏文件

ll是上面 ls -l 的简写
stat

查看文件、文件夹详细信息(类似于Windows右键属性里看到的信息

stat 文件名

 

3、文件文件夹的增、删、改、查、移动操作

命令描述
mkdir

创建目录文件夹(Make directory)

mkdir :创建目录(创建目录路径父文件夹必须存在,否则报错)

mkdir -p:级联创建目录,创建父文件夹若不存在一起创建(例如:a/worke/b

mkdir 文件名   文件名  :一次创建多个文件夹(例如:mkdir a/1dir a/2dir a/3dir

mkdir 文件前缀{内容1,内容2}文件后缀:一次创建多个文件夹(例如:mkdir a/{1,2,3}dir

touch

1、创建文件

touch 文件名:如果文件不存在,则创建的是空文件,文件大小为0(例如:touch test.txt

 

2、更改文件时间戳

touch 文件名:如果文件存在更新该文件的时间戳,不改变文件(例如:touch test.txt

touch -a 文件名:与上面相同,该文件的时间戳,不改变文件(例如:touch -a test.txt

 

cat

查看可执行文件的内容

Ctrl + z 退出 cat 命令

cp

拷贝(copy)

1、拷贝文件

cp 需要拷贝的目标文件路径  ./ :将目标文件拷贝到当前目录下 ./ 表示当前目录例如:cp /root/anaconda-ks.cfg  ./

cp 需要拷贝的目标文件路径  拷贝到目的地路径 :将目标文件拷贝到目的地路径下(例如:cp /etc/passwd   /root/test/1

 

2、拷贝文件夹(文件夹:-r)

cp -r 需要拷贝的目标文件夹 空格 拷贝到的目标路径/:(例如:cp -r 1dir demo/

cp -r 绝对路径/文件 拷贝到目的地路径:-r 递归子目录(cp -r 绝对路径/*.wav 目标路径

cp -r 文件夹名/* ./:copy 一个目录下的所有文件以及递归文件 到当前文件夹

mv

1、移动(move)

mv 当前文件名(或路径) 空格 移动到的目标路径/:(例如:mv anaconda-ks.cfg 1dir/

2、修改文件名

mv 当前文件名 空格 新文件名:(例如:mv anaconda-ks.cfg demo.bak

rm

删除(remove)

1、删除文件

rm 文件名:删除文件,有提示是否确认删除,需要yes(例如:rm hello

rm -f 文件名:删除文件不需要提示,直接删除(例如:rm -f hello

 

2、删除文件夹(文件夹:-r)

rm -r 文件名:删除文件夹,有提示是否确认删除,需要yes(例如:rm -r 1dir

rm -r -f 文件名:删除文件夹不需要提示,直接删除(例如:rm -r -f 1dir

  
ln 
chmod

改变文件模式位(修改文件权限)

chmod o+w 文件名:为文件 o(other)角色添加w(write)权限

  

 

三、查询筛选系列

1、正则表达式grep)【重要】

Linux的正则表达式和平常用法几乎是一样的

使用 grep 命令来执行正则表达式(可以搭配许多命令进行查询,如:结合管道查文件名

[root@centOS-1 ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog  profile  test
[root@centOS-1 ~]# ls | grep "l"
install.log
install.log.syslog
profile

 

1、匹配操作符

2、重复操作符

3、其他操作

 

4、正则练习

在下列内容中按规匹配

hello msb 
hello angelababy 
hello dilireba 
iiii250 wyf 
hello zhangxinyi
11 hel mhellosbjy lo 
h2341123i bj
ili521 fanbingbing
111 hello 222
wo ai bj tam

(1)查找包含hello的行

grep "hello" file2.txt 

[root@centOS-1 1]# grep "hello" file2.txt
hello msb 
hello angelababy 
hello dilireba 
hello zhangxinyi
11 hel mhellosbjy lo 
111 hello 222

(2)查找包含数字的行

grep "[1-9]" file2.txt

[root@centOS-1 1]# grep "[1-9]" file2.txt
iiii250 wyf 
11 hel mhellosbjy lo 
h2341123i bj
ili521 fanbingbing
111 hello 222

 (3)查找包含了 2 或者 5 的行

grep "[25]" file2.txt 

[root@centOS-1 1]# grep "[25]" file2.txt
iiii250 wyf 
h2341123i bj
ili521 fanbingbing
111 hello 222

(4)查找至少包含3位数的行( {} 是扩展正则表达式的字符,需要加 \ 或者使用 grep -E) 

grep -E "[0-9]{3}" file2.txt

grep "[0-9]\{3\}" file2.txt

[root@centOS-1 1]# grep -E "[0-9]{3}" file2.txt
iiii250 wyf 
h2341123i bj
ili521 fanbingbing
111 hello 222

[root@centOS-1 1]# grep "[0-9]\{3\}" file2.txt
iiii250 wyf 
h2341123i bj
ili521 fanbingbing
111 hello 222

 (5)包含hello这个单词的行找出来

grep "\<hello\>" file2.txt

[root@centOS-1 1]# grep "\<hello\>" file2.txt
hello msb 
hello angelababy 
hello dilireba 
hello zhangxinyi
111 hello 222

(6)包含小写L,出现2到3次的行

grep "l\{2,3\}" file2.txt

[root@centOS-1 1]# grep "l\{2,3\}" file2.txt
hello msb 
hello angelababy 
hello dilireba 
hello zhangxinyi
11 hel mhellosbjy lo 
111 hello 222

(7)在下面内容中筛选

hello msb?
hello angelababy?
hello dilireba?
iiii250 wyf?
hello zhangxinyi
11 hel mhellosbjy lo?
h2341123i bj
ili521 fanbingbing
111 hello 222
wo ai bj tam
hiahelloahiahello
helloahiahelloahi

[root@centOS-1 1]# grep "hi.*hello.*hi.*hello.*" file2.txt
hiahelloahiahello

[root@centOS-1 1]# grep "\(hi.*\)\(hello.*\).*\1.*\2" file2.txt
hiahelloahiahello

2、管道的使用【重要】

什么是管道:竖杠【|】就是管道

如下图:管道 左边 是 输出流 的形式将 内容给了右侧,管道 右侧 是以 输入流 的形式 接收 

 

 

四、echo定义变量

直接输出 

[root@centOS-1 /]# echo a
a

定义后输出定义对象值(读对象使用$)

[root@centOS-1 /]# a=haha
[root@centOS-1 /]# echo $a
haha

定义数组并读取值

[root@centOS-1 /]# arr=(marvin jerry sally)
[root@centOS-1 /]# echo ${arr[0]}
marvin
[root@centOS-1 /]# echo ${arr[1]}
jerry
[root@centOS-1 /]# echo ${arr[2]}
sally

 

五、文本相关命令

1、文件查看 

命令描述
cat查看可执行文件的所有内容,到内容结尾处
more查看可执行文件的所有内容,从内容开头处开始,空格键往后翻
less

查看可执行文件的所有内容,从内容开头处开始,b键往前翻,空格键往后翻

注意:文件会完整加载到内存中,从而实现来回翻页,但需要考虑文件不能超出内存大小

head

查看可执行文件的内容,从内容开头处开始,选择行数打印

head 文件名默认打印文件前10行(例如:head /etc/profile

head -5 文件名打印文件前5行(例如:head -5 /et/profile 

tail

查看可执行文件的内容,从内容末尾处,选择行数打印

tail 文件名:默认打印文件最后10行(例如:tail /etc/profile

tail -5 文件名:打印文件最后5行(例如:tail -5 /etc/profile 

tail -f 文件名:如果有一个进程,在向文件中写数据 tail -f 监控这个文件,有增量数据就立即打印

 2、管道的使用(重要)

什么是管道:竖杠【|】就是管道

如下图:管道 左边 是 输出流 的形式将 内容给了右侧,管道 右侧 是以 输入流 的形式 接收 

 

案例1:我们只取zfg中的第5条记录怎么么做?

解答:如下图,我们先获取前5条记录,传入管道右侧,然后右侧再取接收的最后一条数据

 

六、文本编辑器(vi)

1、进入文件编辑模式

通过【vi 文件名】 命令进入该文件的vi编辑模式

命令描述
vi 文件名进入该文件的vi编辑模式,光标处于文件内容首行
vi +10 文件名进入该文件的vi编辑模式,光标处于文件内容第10行
vi + 文件名进入该文件的vi编辑模式,光标处于文件内容尾行

2、编辑内容操作

使用 vi 进入编辑模式后,按【i】 进入文本输入模式,下面会出现 insert 标识

(1)复制、粘贴

命令描述
yw复制 光标所在位置的单词(一个单词)
yy复制 光标所在行(一行)
p粘贴 复制的内容(小写p:从光标位置下方粘贴)
P粘贴 复制的内容(大写p:从光标位置上方粘贴)

(2)删除

命令描述
dd删除当前行
ndd删除n行数据
dG删除当前后之后的全部行

(3)撤销、恢复 、重复上一步骤

命令描述
u撤销 上一步操作
ctrl + r恢复 上一步操作
.点【.重复 上一步操作

 

3、退出编辑模式

ESC键,表示退出文本输入模式进入编辑模式insert 标识消失)

命令描述
:q没修改内容,退出注意:如果修改了,不会直接退出,会告诉你文件被改变了
:q!不保存文件,强制退出vi命令
:wq保存文件,退出vi命令
:w保存文件,不退出vi命令
:w!强制保存

 

4、末行模式 

末行模式:就是处于编辑模式下最后一行的操作命令 

命令描述
:set number显示行号,文件内容的每一行设置编号(行号):set nu 是缩写格式
:set nonumber隐藏行号 :set nonu 是缩写格式
:set readonly设置文件为只读模式(注意:如果改变后,是不能保存的,会有提示)
:/  查找内容向下查找内容(文字)(例如: :/after 会找到文件中的 after)小写 n 是从上往下找,大写 N 是从下往上找
:?  查找内容向上查找内容(文字)
:s

查找替换命令

:s/查找的目标/替换的目标 :查找 光标所在的行第一个目标  替换(例如 ::s/after/befor

:s/查找的目标/替换的目标/g :查找 光标所在的行所有目标  替换(例如 ::s/after/befor/g

:s/查找的目标/替换的目标/gi :不区分大小写 查找 光标所在的行所有目标  替换(例如 ::s/after/befor/gi

:!  命令末行模式下,执行一些命令
:起始行,结束行d按行号范围删除行(例如: :3,5d  表示删除3至5行)
:起始行,结束行y按行号范围复制行(例如: :3,5y  表示复制3至5行)

下图的范围命令是重点 

 

 

七、bash shell进程简单管理

 

命令描述
echo $$打印当前bash shell的进程号
ps -ef打印linux系统下所启用进程信息进程号
kill -9 进程号关闭此进程(如:kill -9 1115)
[root@centOS-1 /]# echo $$
1115
[root@centOS-1 /]# kill -9 1115

 

八、行编辑器(sed)

以行为单位进行处理,可以将数据行进行、删除、新增、选取等特定工作

使用命令:

sed  [options] 'Command'  file ...

options

 command

 

九、文本分析工具(awk)

awk是一个强大的文本分析工具
相对于 grep 的查找,sed 的编辑,awk 在其对数据分析并生成报告是,显得尤为强大。
简单来说 awk 就是把文件逐行的读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理

练习一

下面是文件内容

[root@centOS-1 1]# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

1、只显示/etc/passwd的账户

-F :表示声明自定义分隔符,以什么为分隔条件( -F ':'

print $1: 表示打印分隔后的第一个分隔段($n:第n个分隔断)

passwd:操作文件名

[root@centOS-1 1]# awk -F ':' '{print $1}' passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
uucp
operator
games
gopher
ftp
nobody
vcsa
saslauth
postfix
sshd

2、只显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且每行以(name:参数,shell:参数)的形式显示,在起始行添加“start”最后一行添加“end”

[root@centOS-1 1]# awk -F ':' 'BEGIN{print "start"}{print "name:" $1 " ,shell:" $7 }END{print "end"}' passwd
start
name:root ,shell:/bin/bash
name:bin ,shell:/sbin/nologin
name:daemon ,shell:/sbin/nologin
name:adm ,shell:/sbin/nologin
name:lp ,shell:/sbin/nologin
name:sync ,shell:/bin/sync
name:shutdown ,shell:/sbin/shutdown
name:halt ,shell:/sbin/halt
name:mail ,shell:/sbin/nologin
name:uucp ,shell:/sbin/nologin
name:operator ,shell:/sbin/nologin
name:games ,shell:/sbin/nologin
name:gopher ,shell:/sbin/nologin
name:ftp ,shell:/sbin/nologin
name:nobody ,shell:/sbin/nologin
name:vcsa ,shell:/sbin/nologin
name:saslauth ,shell:/sbin/nologin
name:postfix ,shell:/sbin/nologin
name:sshd ,shell:/sbin/nologin
end

3、搜索/etc/passwd有root关键字的所有行

$0:打印整行 

[root@centOS-1 1]# awk '/root/ {print $0}' passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

4、统计/etc/passwod文件中,每行的行号,每行的列数,对应的完整行内容

[root@centOS-1 1]# awk -F ':' '{print NR "\t" NF "\t" $0}' passwd
1	7	root:x:0:0:root:/root:/bin/bash
2	7	bin:x:1:1:bin:/bin:/sbin/nologin
3	7	daemon:x:2:2:daemon:/sbin:/sbin/nologin
4	7	adm:x:3:4:adm:/var/adm:/sbin/nologin
5	7	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6	7	sync:x:5:0:sync:/sbin:/bin/sync
7	7	shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8	7	halt:x:7:0:halt:/sbin:/sbin/halt
9	7	mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10	7	uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
11	7	operator:x:11:0:operator:/root:/sbin/nologin
12	7	games:x:12:100:games:/usr/games:/sbin/nologin
13	7	gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
14	7	ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
15	7	nobody:x:99:99:Nobody:/:/sbin/nologin
16	7	vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
17	7	saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
18	7	postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19	7	sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

练习二

题目:统计报表,合计每人1月工资

0:manager

1:worker

[root@centOS-1 1]# cat staff
Tom	0	2012-12-11	car	3000
John	1	2013-01-13	bike	1000
vivi	1	2013-01-18	car	2800
Tom	0	2013-01-20	car	2500
John	1	2013-01-28	bike	3500

答案:

[root@centOS-1 1]# awk '{split($3,date,"-");if(date[2]=="01"){names[$1]+=$5}} END{for(i in names) print i "\t" names[i]}' staff
vivi	2800
Tom	2500
John	4500
[root@centOS-1 1]# awk '{split($3,date,"-");if(date[2]=="01"){names[$1]+=$5};if($2=="0"){roles[$1]="Manager"}else{roles[$1]="Worker"}} END{for(i in names) print i "\t" roles[i]  "\t" names[i]}' staff
vivi	Worker	2800
Tom	Manager	2500
John	Worker	4500

 

命令太长很麻烦,可以使用vim 脚本文件,将命令写入脚本中直接执行

如果vim不识别,请安装

安装命令:默认情况下 centos正常安装后yum已经配好,有等同于vim的vi。

因此使用vim的时候会报出 -bash : vim: command not found 的错误

在这里插入图片描述

 安装命令:

rpm -qa | grep vim // 查看vim命令在什么软件包

出现 vim-minimal-7.4.160-4.el7.x86_64

yum install -y vim* //安装vim相关的软件包

 rpm -qa | grep vim

结果如下 

创建一个 脚本文件(我这里叫script) 

[root@centOS-1 1]# vim script

{
        split($3,date,"-");
        if(date[2]=="01"){
                names[$1]+=$5
        };
        if($2=="0"){
                roles[$1]="Manager"
        }else{
                roles[$1]="Worker"
        }
}
END{
        for(i in names)
                print i "\t" roles[i]  "\t" names[i]
}

命令:awk -f 脚本文件名 需要执行的文件名

-f :program-file(程序文件)

[root@centOS-1 1]# awk -f script staff
vivi	Worker	2800
Tom	Manager	2500
John	Worker	4500

 

Re: 《文件过滤及内容编辑处理命令》 ================================================== 本人在教学和实战过程发现,即便是有一定运维经验的人,可能已经能够搭建一定复杂度的Linux架构,但是在来来回回的具体操作,还是体现出CLI(命令界面)功底不够扎实,甚至操作的非常‘拙’、处处露‘怯’。 对一个士兵来说,枪就是他的武器,对于一个程序员来说,各种library(工具库)就是他的武器;而对于Linux运维人员来说,无疑命令行工具CLI(命令界面)就是他们的武器;高手和小白之间的差距往往就体现在对于这些“武器”的掌握和熟练程度上。有时候一个参数就能够解决的事情,小白们可能要写一个复杂的Shell脚本才能搞定,这就是对CLI(命令界面)没有理解参悟透彻导致。 研磨每一个命令就是擦拭手的作战武器,平时不保养不理解,等到作战的时候,一定不能够将手的武器发挥到极致,所以我们要平心、静气和专注,甘坐冷板凳一段时间,才能练就一身非凡的内功! 本教程从实战出发,结合当下流行或最新的Linux(v6/7/8 版本)同时演示,将命令行结合到解决企业实战问题来,体现出教学注重实战的务实精神,希望从事或未来从事运维的同学,能够认真仔细的学完Linux核心命令的整套课程。 本课程系列将逐步推出,看看我教学的进度和您学习的步伐,孰占鳌头! 注:关于教学环境搭建,可以参考本人其它课程系列,本教学就不再赘述! 《参透 VMware 桌面级虚拟化》 《在虚拟机安装模版机(包括应用软件等)》 《SecureCRT 连接 GNS3/Linux 的安全精密工具》---------------------------------    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值