linux 常用命令

linux 常用命令

写的是一些常用命令一些小结,详情的还是参考 “鸟哥Linux私房菜”

1 vi 模式下

vi 模式下
ctrl + f 向下移动一页
ctrl + b 向上移动一页
n<Enter> 光标向下移动 n 列
/word 向下找
?word 向上找
ndd 删除光标所在的那一整列
nyy 复制光标所在的向下 n 列
p, P 粘贴P上 p下
u 复原前一个动作
[Ctrl]+r 重做上一个动作
:set nu 显示行号
:set nonu 取消行号

2 BASH

2.1 变量

​ myname=VBird =号两边不能有空格,可以使用双引号或者单引号引用赋值变量

​ unset myname 取消变量

​ echo $myname 变量的取用: echo

​ $$ $? $?=0是正确的(上次执行回传值)

​ export 变量名称 提升变量为环境变量

​ read [-pt] variable 读取变量 ,-p后可接字符,-t后等待秒

​ declare / typeset 声明变量类型

2.2 变量小结 adu

2.2变量小结之变量内容的删除、取代、替换


变量设置方式说明
${变量#关键字} ${变量##关键字}从左开始删除最短关键字 ;从左开始删除最长的关键字
${变量%关键字} ${变量%%关键字}从右开始,原理同上
${变量/旧字串/新字串} ${变量//旧字串/新字串}替换 || 全局替换

2.3 数据流重导向
标准输入 stdin :代码为 0 使用 < 或 <<
标准输出 stdout : 代码为 1 使用 > 或 >> ,
标准错误输出 stderr 代码为 2 使用 2> 或 2>>
/dev/null 垃圾桶黑洞

“ll /home > ~/rootfile

1> :以覆盖的方法将“正确的数据”输出到指定的文件或设备上;

1>>:以累加的方法将“正确的数据”输出到指定的文件或设备上;

2> :以覆盖的方法将“错误的数据”输出到指定的文件或设备上;

2>>:以累加的方法将“错误的数据”输出到指定的文件或设备上;

命令执行的判断依据: (; , &&, ||

  • ; 前一个指令执行完,执行后一个指令,指令连续下达。

  • $? (指令回传值) 与 && 或 ||

  • && || 前一个指令成功是否和后一个指令相关 截图吧

在这里插入图片描述

​ $? (指令回传值) 与 &&(两个指令都需要执行成功) 或 || (只执行一个成功,另外一个就执行)

2.4 符号

正则也需要背呀=乘法口诀表

pre: 正则表达式与万用字符是完全不一样的东西!万用字符 (wildcard) 代表的是 bash 操 作接口的一个功能, 但正则表达式则是一种字串处理的表示方式! (参考11.5重点回顾)常见的支持正则表达式的工具软件有: grep , sed, vim 等等

万用字符

在这里插入图片描述

​ 特殊符号

在这里插入图片描述

在这里插入图片描述

 例如 vi, grep, awk ,sed 等等工具,因为她们有支持正则表达式, 所以,这些工具就可以使用正则表达式的特殊 字符来进行字串的处理。但例如 cp, ls 等指令并未支持正则表达式, 所以就只能使用 bash 自 己本身的万用字符而已。  p561
2.5 管道命令

cut, grep, sort, wc, uniq, tee, tr, col, join, paste, expand, split, xargs 等

​ cut -d’分隔字符’ -f fields 将一段讯息的某一段给他“切”出来,以行为单位,常用在同一行里面的数据进行分解,处理多个连续空格就吃力了,需要用awk工具

​ grep 可以解析一行文字,取得关键字,若该行有存在关键字,就会整行列出来

​ 管线命令用法

cut -d'分隔字符' -f fields 
grep [-acinv] [--color=auto] '搜寻字串' filename; (-n 输出行,-v反向选择)

​ 排序命令 手工试试

sort [-fbMnrtuk] [file or stdin]
uniq [-ic]
wc [-lwm]
tee [-a] file

​ tee : 双向重导向,tee 会同时将数据流分送到文件去与屏幕

​ 字符串转换命令

#字符转换命令: tr, col, join, paste, expand
tr [-ds] SET1 ...        #tr 可以用来删除或替换一段讯息当中的文字,--暂时没用
join 
paste [-d] file1 file2   #直接“将两行贴在一起,且中间以 [tab] 键隔开”而已
expand [-t] file	     #将[tab] 按键转成空白键
#分区命令
split [-bl] file PREFIX  #

#参数代换
xargs [-0epn] command    # 这个玩意儿就是在产生某个指令的参数的意思!,它能够捕获一个命令的输出,然后传递给另外一个命令。

#管用关于减号 - 的用途

----------------------闲谈----------------------------------
例子:
[roc@roclinux ~]$ echo china.txt | xargs cat
hello beijing

http://c.biancheng.net/linux/xargs.html   #解释先后顺序,解释的很好!
* 管道可以实现:将前面的标准输出作为后面的“标准输入”。
* 管道无法实现:将前面的标准输出作为后面的“命令参数”。



撷取命令cut, grep
排序命令sort, wc, uniq
字符转换命令tr, col, join, paste, expand
分区命令split
参数代换xargs
万用字符: *, ?, []
sed 工具 正取、增、删除、撷取
awk 工具 正好用的数据处理工具
格式化打印printf

​ sort 排序 uniq 去重 wc 统计-行数-字符数-字数

xargs 参数替换


3 正则&文件格式化处理

​ 3.0 简述:正则表达式就是处理字串的方法,他是以行为单位来进行字串的处理行为,

正则表达式通过一些特殊符号的辅助,可以让使用者轻易的达到**“搜寻/删除/取代**”某特定字串的处理程序!

3.1 grep的进阶选项

grep [-A] [-B] [--color=auto] '搜寻字串' filename
-A :后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出来;
-B :后面可加数字,为 befer 的意思,除了列出该行外,前面的 n 行也列出来;
--color=auto 可将正确的那个撷取数据列出颜色

例题二、利用中括号 [] 来搜寻集合字符
 grep -vn 'the' regular_express.txt
 grep -n 't[ae]st' regular_express.txt
 grep -n '[^g]oo' regular_express.txt
 
例题三、行首与行尾字符 ^ $
 grep -n '^the' regular_express.txt		#列出the开头的
 grep -n '^[a-z]' regular_express.txt   #列出小写字符开头
 grep -n '^[^a-zA-Z]' regular_express.txt
 '^' 在 [] 内代表“反 向选择”,在 [] 之外则代表定位在行首的意义
 grep -n '\.$' regular_express.txt		#找出行尾为小数点的一行
 grep -n '^$' regular_express.txt		#找出空白行,只有行首跟行尾 (^$)

例题四、任意一个字符 . 与重复字符 *
 (小数点):代表“一定有一个任意字符”的意思;
 (星星号):代表“重复前一个字符, 0 到无穷多次”的意思,为组合形态
grep -n 'g..d' regular_express.txt
grep -n 'ooo*' regular_express.txt
grep -n 'goo*g' regular_express.txt
grep -n 'g.*g' regular_express.txt
grep -n '[0-9][0-9]*' regular_express.txt

例题五、限定连续 RE 字符范围 {}
	pre:因为 { 与 } 的符号在shell是有特殊意义的,因此,我们必须要使用跳脱字符 \ 来让他失去特殊意义才行
grep -n 'o\{2\}' regular_express.txt

3.2 基础正则表达式字符汇整 (characters)

在这里插入图片描述

在这里插入图片描述

	在万用字符当中的 *代表的是“ 0 ~ 无限多个字符”的意思,但是在正则表达式当中, 则是“重复 0 到无穷多个的前一个 RE 字符”的意思~使用的意义并不相同,不要搞混了!

延伸正则表达式 —必须截图,p580

​ 但在正则表达式中,我们要找到 含有以 a 为开头的文件,则必须要这样:(需搭配支持正则表达式的工具) ls | grep -n '^a.*

3.3 sed awk 工具

​ sed 本身也是一个管线命令,可以分析 standard input 的啦! 而 且 sed 还可以将数据进行取代、删除、新增、撷取特定行等等的功能呢

	pre:在了解了一些正则表达式的基础应用之后,再来呢?呵呵~两个东西可以玩一玩的,那就是 sed 跟下面会介绍的 awk 了!
例子1 
[dmtsai@study ~]$ sed [-nefr] [动作]
选项与参数: 
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到屏幕上。 但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来。
 -e :直接在命令行界面上进行 sed 的动作编辑; 
 -f :直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的 sed 动作; 
 -r :sed 的动作支持的是延伸型正则表达式的语法。(默认是基础正则表达式语法) 
 -i :直接修改读取的文件内容,而不是由屏幕输出。 
 
 动作说明: [n1[,n2]]function 
 n1, n2 :不见得会存在,一般代表“选择进行动作的行数”,举例来说,如果我的动作 是需要在 10 到 20 行之间进行的,则“ 10,20[动作行为]function 有下面这些咚咚: 
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ 
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! 
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚; 
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); 
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~ 
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式! 例如 1,20s/old/new/g 就是啦!

注意:sed 后面接的动作,请务必以 '' 两个单引号括住喔!

​ 注意:同时 也要注意的是, sed 后面接的动作,请务必以 ‘’ 两个单引号括住喔!

* 以行为单位的新增/删除功能 
	nl /etc/passwd &#124; sed '2,5d'		#删除2-5行
	nl /etc/passwd &#124; sed '2a drink tea' #第二行后新增字段
* 以行为单位的取代与显示功能
	nl /etc/passwd &#124; sed '2,5c No 2-5 number' #将2-5行取代成No 2-5 number
	nl /etc/passwd &#124; sed -n '5,7p' 	#仅列出5-7 行
* 部分数据的搜寻并取代的功能 
	sed 's/要被取代的字串/新的字串/g'
	cat /etc/man_db.conf &#124 |	 grep 'MAN'| sed 's/#.*$//g'
* 直接修改文件内容(危险动作) 
	 sed -i 's/\.$/\!/g' regular_express.txt	#利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !
	 
	 
	 范例七:利用 sed 直接在 regular_express.txt 最后一行加入“# This is a test” [dmtsai@study ~]$ sed -i '$a # This is a test' regular_express.txt # 由于 $ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增啰!

3.4 正则表达式延伸

	grep 默认仅支持基础正则表达式,如果要使用延伸型正表达式,你可以使用 grep -E , 不过更建议直接使用 egrep !直接区分指令比较好记忆!其实 egrepgrep -E 是类似命令别名的关系啦!

在这里插入图片描述

grep -n '[!&gt;]' regular_express.txt 	#如果你想要查出来文件中含有 ! 与 > 的字行时,可以这样

3.5 文件的格式化与相关处理

printf '打印格式' 实际内容
选项与参数: 关于格式方面的几个特殊样式:
	\a 警告声音输出 
	\b 倒退键(backspace) 
	\f 清除屏幕 (form feed) 
	\n 输出新的一行 
	\r 亦即 Enter 按键 
	\t 水平的 [tab] 按键 
	\v 垂直的 [tab] 按键
	\xNN NN 为两位数的数字,可以转换数字成为字符。
关于 C 程序语言内,常见的变量格式 
	%ns 那个 n 是数字, s 代表 string ,亦即多少个字符; 
	%ni 那个 n 是数字, i 代表 integer ,亦即多少整数码数; 
	%N.nf 那个 n 与 N 都是数字, f 代表 floating (浮点),如果有小数码数, 假设我共要十个位数,但小数点有两位,即为 %10.2f 啰!

例子1 :将刚刚上头数据的文件 (printf.txt) 内容仅列出姓名与成绩:(用 [tab] 分隔)
	printf '%s\t %s\t %s\t %s\t %s\t \n' $(cat printf.txt) 	
范例二:将上述数据关于第二行以后,分别以字串、整数、小数点来显示:
[dmtsai@study ~]$ printf '%10s %5i %5i %5i %8.2f \n' $(cat printf.txt &#124; grep -v Name)

3.6 awk:好用的数据处理工具

awk 也是一个非常棒的数据处理工具!相较于 sed 常常作用于一整个行的处理, awk 则比较 倾向于一行当中分成数个“字段”来处理 ;默认的“字段的分隔符号为 “空白键” 或 "[tab]键

​ awk 是“以行为一次处理的单位”, 而“以字段为最小的处理单 位

变量名称代表意义
NF每一行 $0 拥有的字段数
NR目前 awk 所处理的是“第几行”数据
FS目前的分隔字符,默认是空白键
[dmtsai@study ~]$ awk '条件类型1{动作1} 条件类型2{动作2} ...' filename


例子1 若我想要取出帐号与登陆者的 IP ,且帐号与 IP 之间以 [tab] 隔开

last -n 5 | awk '{print $1 "\t" $3}'
	上表是 awk 最常使用的动作!通通过 print 的功能将字段数据列出来!字段的分隔则以空白键或 [tab] 按键来隔开。 因为不论哪一行我都要处理,因此,就不需要有 "条件类型" 的限制
	在 awk 的括号内,每一行的每个字段都是有变量名称 的,那就是 $1, $2... 等变量名称

	执行上面例子1的步骤
1. 读入第一行,并将第一行的数据填入 $0, $1, $2.... 等变量当中; 
2. 依据 "条件类型" 的限制,判断是否需要进行后面的 "动作"; 
3. 做完所有的动作与条件类型; 
4. 若还有后续的“行”的数据,则重复上面 1~3 的步骤,直到所有的数据都读完为止。
	总结 :awk 是“以行为一次处理的单位”, 而“以字段为最小的处理单 位”。

Tips 要注意喔,awk 后续的所有动作是以单引号“ ' ”括住的,由于单引号与双引号都必须是成 对的, 所以, awk 的格式内容如果想要以 print 打印时,记得非变量的文字部分,包含上一 小节 printf 提到的格式中,都需要使用双引号来定义出来喔!因为单引号已经是 awk 的指令 固定用法了!

例子2 接着1+使用awk内置变量
last -n 5 |awk '{print $1 "\t lines: " NR "\t columns: " NF}'
  • awk 的逻辑运算字符

在这里插入图片描述

  • awk 的内置变量
例子1
cat /etc/passwd awk '{FS=":"} $3<10{print    $1 "\t "$3 }'

例子2 可以预先设置 awk 的变量啊! 利用 BEGIN 这个关 键字喔!这样做:
cat /etc/passwd &#124; awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}
例子3  awk 的动作内 {} 也是支持 if (条件) 的喔! 举例来说,上面的指令可以修订成为这样

cat pay.txt | awk '{if(NR==1) print  $1}'

例子4 awk 还可以帮我们进行循环计算喔 

4 shell 脚本

shell脚本注意事项

在 shell

script 的撰写中还需要用到下面的注意事项:

  1. 指令的执行是从上而下、从左而右的分析与执行;

  2. 指令的下达就如同第四章内提到的:指令、选项与参数间的多个空白都会被忽略掉;

  3. 空白行也将被忽略掉,并且 [tab] 按键所推开的空白同样视为空白键;

  4. 如果读取到一个 Enter 符号 (CR) ,就尝试开始执行该行 (或该串) 命令;

  5. 至于如果一行的内容太多,则可以使用“ [Enter] ”来延伸至下一行;

  6. “ # ”可做为注解!任何加在 # 后面的数据将全部被视为注解文字而被忽略!

script 的执行方式差异 (source, sh script, ./script

12.2 利用 test 指令的测试功能

12.3.2 利用判断符号 [ ]

12.3.3 Shell script 的默认变量($0, $1…

​ shift代表拿掉最前面的几个参数的意思

​ netstat 的指令,这个 指令可以查询到目前主机有打开的网络服务端口 (service ports)

​ 若为 127.0.0.1 则是仅针对本机 开放,若是 0.0.0.0 或 ::: 则代表对整个 Internet 开放

12.6 shell script 的追踪与 debug

建议: 至于在 Shell scripts 的学习方 法上面,需要“多看、多模仿、并加以修改成自己的样式!” 是最快的学习手段了!

5 工作管理

& :直接将指令丢到背景中“执行”

jobs: 观察目前的背景工作状态

nohup : 可以让你在离线或登出系统后,还能够让工作继续进行;可以搭配&

​ ps : 静态观察程序的变化 aux

​ top :动态的观察程序的变化

​ pstree : 来查阅程序树之间的关系喔!,找程序之间的相关性

​ ps aux 以查阅所有系统运行的程序

​ ps -l 只能查阅自己 bash 程序

​ pidof :找出某支正在执行的程序的 PID

16.3.4 资源管理

free :观察内存使用情况

netstat :追踪网络或插槽档

6 备份

​ 备份使用的工具为何: 是利用 tar 、 cpio 、 dd 还是 dump 等等的备份工具

​ 完整备份常用的工具有 dd, cpio, xfsdump/xfsrestore 等等

​ 可以直接进行累积备份的就是 xfsdump 这个指令啰

7 find 命令

还能够让工作继续进行;可以搭配&

​ ps : 静态观察程序的变化 aux

​ top :动态的观察程序的变化

​ pstree : 来查阅程序树之间的关系喔!,找程序之间的相关性

​ ps aux 以查阅所有系统运行的程序

​ ps -l 只能查阅自己 bash 程序

​ pidof :找出某支正在执行的程序的 PID

16.3.4 资源管理

free :观察内存使用情况

netstat :追踪网络或插槽档

other

1.1etman大大给的建议:

  • 有系统地设计文件目录,不要随便到处保存盘案以至以后不知道放哪里了, 或找到文件 也不知道为何物。
  • 养成一个做记录的习惯。尤其是发现问题的时候, 把错误信息和引发状况以及解决方法 记录清楚,同时最后归类及定期整理。别以为您还年轻,等你再弄多几年计算机了, 您 将会非常庆幸您有此一习惯。
  • 如果看在网络上看到任何好文章,可以为自己留一份copy,同时定好题目,归类存盘。 (鸟哥需要注意知识产权!)
  • 学写 script 的确没设置 server 那么好玩,不过以我自己的感觉是:关键是会得“偷”, 偷了会得改,改了会得变,变则通矣。

1.2 主机规划和磁盘分配

1.3 linux文件与目录管理

  • whereis 只找系统中某些特定目录下 面的文件而已,

  • locate 则是利用数据库来搜寻文件名,这个数据库每天更新一次,可能有数据会未更新

  • 如果真的找不到了,才以 find 来搜寻呦,find直接搜索磁盘 (时间、使用者&群组、文件名称&文件权限),可以包含万能字符,

目标 
step1 、重点的管线命令、正则命令,工具还没有记住,会用
setp2 、 shell脚本常用的会写,常见的判断语句、循环语句,这的ok
setp3 、 文件备份、进程、内存、cpu、磁盘挂载
step4 、将上面整理成文档,目的便于经常的看


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值