自己整理的linux常用命令记录

文件处理命令
1.1 ls -> 列出目录中的信息
	-l 详细信息
	-d 当前目录本身, 而非目录里面的数据
	-a 隐藏文件
	-h 文件大小人性化展示
	-i i节点
		ls -hld /htx


1.2 mkdir -> 创建目录
	-p 递归创建
		mkdir -p /a/b/c
		mkdir -p /a/b/c /d/e/f

1.3 cp -> 复制文件或目录
	-r 复制目录
	-p 保留源文件属性

1.4 rm -> 删除文件或目录
	-r 删除目录
	-f 强制执行

1.5 touch -> 创建空文件
	touch [文件名]

1.6 cat -> 显示文件内容
	cat [文件名]
	-n 显示行号

1.7 tac -> 显示文件内容(反向展示)

1.8 more -> 分页展示文件内容
	more [文件名]
	空格 / f: 下一页
	回车键: 下一行
	q: 退出浏览

1.9 less -> 分页展示文件内容(可向上翻页)
		输入less命令后, 键入: "/关键字" -> 查找信息并高亮展示 -> n/enter 查找下一个匹配

1.10 head -> 显示文件前几行
	-n 指定行数

1.11 tail -> 显示文件后几行
	-n 指定行数
	-f 动态展示文件末尾内容
		tail -n 10 a.txt
		tail -n 10 -f a.txt
		tail -10f a.txt

1.12 ln -> 生成链接文件
	-s 创建软链接
	ln -s [源文件] [目标文件]
	ln -s a b -> 创建a文件软链接 b
	ln a b -> 创建a文件硬链接 b
		软链接: 类似于windows中快捷方式
			权限: lrwxrwxrwx, 真实权限为源文件权限
			文件大小不等于源文件大小, 只是符号链接
		硬链接: 相当于文件拷贝(cp -p) + 同步更新
			修改目标文件, 源文件同步更新
权限处理命令
linux权限
	rw-			r--			r--
	u 所有者		g 所属组		o 其他人
	r:读, w:写, x:执行
			r 								w 								x
	文件  	查看文件内容(cat,more..)			修改文件内容	(vim..)				执行文件
	目录		可以列出目录内容(ls)				可以在目录中创建删除文件(touch..)	可以进入目录(cd)

2.1 chmod -> 改变文件或目录权限
	-R 递归修改
	chmod 777 a.txt
		r: 4
		w: 2
		x: 1
	chmod o+x a.txt
	chmod u-x a.txt

2.2 chown -> 改变文件或目录所有者
	chmod [用户名] [文件或目录]

2.3 chgrp -> 改变文件或目录所属组
	chgrp [所属组] [文件或目录]


2.4 umask -> 显示设置文件的缺省权限
	-S 以rwx形式显示新建文件缺省权限

	umask -S -> u=rwx,g=rx,o=rx
		新建目录, mkdir d1	->	drwxr-xr-x
		新建文件, touch f1	-> 	-rw-r--r--		->	在linux中,默认新建的文件是不具有执行权限的.

	示例:
		umask -> 0022, 第一个0为特殊权限
				777		rwx		rwx		rwx
				022		---		-w-		-w-
				---------------------------		逻辑与
		目录:	755		rwx		r-x		r-x
		文件:			rw- 	rw- 	r--

	修改默认缺省:
		希望新建目录权限为 700
				777		rwx		rwx		rwx
			->	077		---		rwx		rwx
				---------------------------		逻辑与
		目录:	700		rwx		---		---
		文件:			rw- 	--- 	---
			-> 得到 umask 权限 077
			执行命令: umask 077
				默认创建目录权限 -> 700
文件搜索命令
3.1 find -> 文件搜索 (少用, 占用大量系统资源)
	find [搜索范围] [匹配条件]
		根据文件名搜索 -name, -iname(不区分大小写)
			find /dir -name file_name
			find /dir -name *abc* (* 代表任意字符)
			find /dir -name abc???(? 代表单个字符)
		根据文件大小搜索 -size  (+n代表大于, -n代表小于, n代表等于  n -> 0.5kb)
			find /dir -size +204800
		根据文件所有者搜索 -user, 根据文件所属组搜索 -group
			find /dir -user root
		根据文件时间属性查找 -amin(access): 访问时间, -cmin(change): 文件属性修改时间, -mmin(modify): 文件内容修改时间
			find /dir -amin -5  (五分钟之内访问过)
			find /dir -cmin +5	(属性修改时间超过五分钟)
			find /dir -mmin 5 (文件内容修改时间距离现在五分钟)
		-a: 多个条件同时满足
		-o: 多个条件满足一个
			find /dir -size +204800 -a -size -409600
		-type: 查找类型, f: 文件, d: 目录, l: 软链接文件
			find /dir -size +204800 -o -type d
		-inum: 根据i节点查找
			find /dir -inum 1851668
		-exec/-ok: 对搜索结果执行操作, 结尾 {} \; 为固定写法, 搜索结果放入{}中,  -ok相对于-exec,对每个查询结果进行操作时,需要确认
			find /dir -name file_name -exec ls -l {} \;  ->  查找指定名称文件, 并展示详细信息(ls -l)
			find /dir -name file_name -exec rm -rf {} \; -> 删除指定名称文件
			find /dir -name file_name -exec cp {} / \;   -> 复制指定文件到 / 目录

3.2 locate -> 在文件资料库中查找文件. 
	locate [文件名]
	新建的文件不会立即同步到资料库中, 使用locate命令可能检索不到.  可以使用 updatedb 命令更新资料库
		-i: 不区分大小写

3.3 which -> 搜索"命令"所在的目录
	which [命令名]
		which ls  ->   /bin/ls

3.4 whereis -> 搜索"命令"所在的目录及帮助文档路径
	whereis [命令名]
		whereis ls  ->  ls: /bin/ls /usr/share/man/man1/ls.1.gz

3.5 grep -> 文件内容搜索
	grep [筛选字符串] [文件]
		-i: 不区分大小写
		-v: 排除指定字符串
			grep hello file -> 检索file, 排除包含"hello"的一整行
		-A: 结果往后多打印
			grep -A 5 hello file -> hello后面多打印5行
		-B: 结果往前多打印
		-C: 结果前后多打印
		--color=auto: 筛选结果高亮
		-n: 显示行号
帮助命令
4.1 man -> 获得命令/配置文件帮助信息.
	man [命令/配置文件]
		man ls -> 查看ls命令文档
		man services -> 查看services配置文件的帮助
			示例: man passwd -> 由于linux中既有passwd命令, 又有passwd配置文件, 所以同时存在passwd命令的帮助信息和passwd配置文件的帮助信息.   默认查看passwd命令的帮助信息
				whereis passwd
					-> passwd: /usr/bin/passwd(命令) /etc/passwd(配置文件) /usr/share/man/man1/passwd.1.gz(命令帮助) /usr/share/man/man1/passwd.1ssl.gz /usr/share/man/man5/passwd.5.gz(配置文件帮助)
				指定查看配置文件帮助:
					man 5 passwd

4.2 whatis -> 查看命令/配置文件帮助信息简介
	whatis [命令/配置文件]
		whatis ls -> ls (1)               - list directory contents
		whatis services -> services (5)         - Internet network services list
		whatis passwd -> 	passwd (1ssl)        - compute password hashes
							passwd (1)           - change user password
							passwd (5)           - the password file

4.3 info -> 类似于man

4.4 help -> 获得shell内置命令的帮助信息
	help [命令]
		help umask -> 查看umask命令帮助信息(umask为shell内置命令, 通过which找不到路径)
		help if
		help where
用户管理命令
5.1 useradd -> 添加新用户
	useradd [新用户名]
		useradd username1

5.2 passwd -> 设置用户密码
	passwd [用户名]
		passswd username1 -> 提示输入密码和确认密码

5.3 who -> 查看登录用户信息
	who
		登录用户名		登录终端(tty->本地终端, pts->远程终端)		登录时间		登录主机ip

5.2 w -> 查看用户登录信息
	
压缩解压命令
6.1 gzip -> GNU zip 压缩文件, /bin/gzip, 压缩后文件格式为.gz;   gzip只能压缩文件,不能压缩目录;  压缩后不保留源文件
	gzip [文件]
		-d 解压文件
			gzip -d hello.gz
	
6.2 gunzip -> 解压文件, /bin/gunzip, 解压格式为.gz的压缩文件
	gunzip [压缩文件]

6.3 tar -> 可以打包目录为文件, 并且压缩文件. 压缩后的文件格式为.tar.gz
	tar 选项[-zcf] [压缩后文件名] [目录]
		-c: 打包
		-x: 解包
		-v: 显示详细信息
		-f: 指定文件名
		-z: 打包同时压缩
	eg1: 
		tar -cvf hello.tar hello
			将hello目录打包成hello.tar文件
		gzip hello.tar
			将hello.tar文件压缩, 生成 hello.tar.gz
	eg2:
		tar -cvzf hello.tar.gz hello
			将hello目录打包并压缩成hello.tar.gz
	eg3: 
		tar -xvzf hello.tar.gz
			解压hello.tar.gz

6.4 zip -> 压缩文件或目录
	zip 选项[-f] [压缩后文件名] [文件或目录]
	zip -r [压缩目录]
	eg1:
		zip hello.zip hello
	eg2:
		zip -r hellodir.zip hellodir

6.5 unzip -> 解压缩zip压缩文件
	unzip [压缩文件/目录]
	eg1:
		unzip hello.zip

6.6 bzip2 -> 压缩文件, 保留源文件, 压缩后文件格式为.bz2
	bzip2 选项[-k] [文件] 
		-k: 保留源文件
	eg1:
		bzip2 -k hello	
	eg2: 打包目录并压缩成bz2
		tar -cjf hellodir.tar.bz2 hellodir

6.7 bunzip2 -> 解压缩bzip2
	bunzip2 选项[-k] 压缩文件
		-k: 保留压缩文件
	eg1:
		bunzip2 -k hello.bz2
	eg2:
		tar -xjf hellodir.tar.bz2
网络命令
7.1 ping -> 测试网络连通性
	ping [选项] IP地址/域名
		-c: 指定发送次数

7.2 ifconfig -> 查看和设置网卡信息

7.3 last -> 列出用户登录系统记录

7.4 lastlog -> 列出所有用户最近登录记录

7.5 netstat -> 显示网络相关信息
	netstat [选项]
		-t: TCP协议
		-u: UDP协议
		-l: 监听
		-r: 路由
		-n: 显示ip地址和端口号
		-p: 显示pid
	eg1:
		netstat -tlun -> 查看本机监听的端口
	eg2:
		netstat -an -> 查看本机所有网络连接
	eg3:
		netstat -rn -> 查看本机路由表		
	eg4: 
		netstat -nat|grep -i "8066"|wc -l -> 查看8066端口连接数

7.6 mount -> 挂载命令
	mount [-t 文件系统] 设备文件名 挂载点
	umount -> 卸载命令
Vim 常见命令
vim 三种模式
	命令模式: 输入a/i/o进入插入模式, 输入:进入编辑模式
	插入模式: ESC退出插入模式进入命令模式
	编辑模式: 输入命令后ENTER回车结束编辑模式, 进入命令模式

1. 插入命令, 在命令模式输入 -> 进入插入模式
	a 			在光标所在字符后插入
	A 			在光标所在行尾插入
	i 			在光标所在字符前插入
	I 			在光标所在行首插入
	o 			光标下插入新行
	O 			光标上插入新行
2. 定位命令
	:set nu -> 设置行号
	:set nonu -> 取消设置行号
	gg -> 到第一行
	G -> 到最后一行
	nG -> 到第n行
	:n -> 到第n行
	$ -> 光标移动到行尾
	0 -> 贯标移动到行首
3. 删除命令
	x -> 删除光标所在字符
	nx -> 删除光标所在处后n个字符
	dd -> 删除所在行
	ndd -> 删除n行
	dG -> 删除光标所在行至文件末尾内容
	D -> 删除光标所在行至行尾内容
	:n1,n2d -> 删除指定范围行
3. 复制/剪切命令
	yy -> 复制当前行
	nyy -> 复制当前行以下n行
	dd -> 剪切当前行
	ndd -> 剪切当前行以下n行
	p/P -> 粘贴在当前行上面/下面
4. 替换, 取消命令
	r -> 取代光标所在处字符
	R -> 从光标所在处开始替换字符, 按ESC结束
	u -> 取消上一步操作
5. 搜索和搜索替换
	/string -> 搜索指定字符串
	:set ic -> 搜索忽略大小写
	:set noic -> 搜索区分大小写
	n -> 搜索结果查找下一个
	:%s/old/new/g -> 全文替换, old替换为new
	:n1,n2/old/new/g -> n1~n1行之间替换, old替换为new	
6. 保存和退出命令
	:w -> 保存修改
	:w new_filename -> 另存为filename
	:wq -> 保存并退出
	ZZ -> 保存退出快捷键, 同:wq
	:q! -> 不保存退出
	:wq! -> 保存并退出, 文件所有者和root用户可以使用(文件只读)
linux进程管理
1.1 查看系统所有进程
	ps aux
	ps -ef
1.2 查看系统健康
	top [选项]
		-d seconds: 每隔几秒更新
	? / h: 	帮助
	P: 按照cpu使用率排序(默认)
	M: 按照内存使用率排序
	N: 按照PID排序
	q: 退出top
1.3 查看进程树
	pstree [选项]
		-p: 显示进程的pid
		-u: 显示所属用户
1.4 杀死进程
	kill -l -> 显示可用的进程信号
		1	SIGHUP	重启
		9	SIGKILL	强制杀死进程
		15	SIGTERM	正常结束进程(默认)	
1.5 查看后台任务
	jobs [选项] 
		任务进入后台执行:
			1. 命令 & -> 后台会执行此任务
			2. ctrl + z -> 任务放在后台, 但是暂停执行	
		查看后台任务	
			jobs -l
		后台暂停任务恢复前台执行
			fg %任务号 -> %可以省略
		后台暂停任务恢复后台执行					
			bg %任务号 -> %可以省略

linux用户管理
1.1 相关配置文件
	/etc/passwd -> 用户信息文件
	/etc/shadow -> 影子文件
	/etc/group -> 组信息文件
	/etc/gshadow -> 组密码文件
1.2 用户管理相关文件
	用户home目录:
		root: /root, 默认权限为550: dr-xr-x---. 27 root root 4096 May 30 08:44 /root
		普通用户: /home/用户名/, 默认权限尾700: drwx------. 28 hetianxiang hetianxiang 4096 May 27 20:45 /home/hetianxiang/=
1.3 用户管理命令
	用户添加命令 -> useradd
	修改用户密码 -> passwd
	修改用户信息 -> usermod
	修改用户密码状态 -> chage
	删除用户 -> userdel
		-r: 删除用户的同时, 删除home目录
	用户切换 -> su
1.4 用户组管理命令
	添加用户组 -> groupadd [选项] 组明
		-g GID: 指定GID
	修改用户组 -> groupmod [选项] 组名		
		-g GID: 指定GID
		-n 新组名: 修改组名
	删除用户组 -> groupdel [组名]	
	组内添加/删除用户 -> gpasswd [选项] 组名
		-a 用户名: 组内添加用户
		-d 用户名: 组内删除用户

linux 定时任务
linux 定时任务
	用户的crontab设置 -> crontab [选项]
		-l: 查询crontab定时任务
		-e: 编辑crontab定时任务
		-r: 删除当前用户所有的crontab任务
其他命令
history -> 查看历史命令,  保存在home目录.bash_history中
	-c: 清空历史命令
alias -> 命令别名
	alias 别名 = '原命令' -> 起别名
	alias -> 查询所有别名命令
unalias -> 删除别名
	unalias [别名]
文件系统常用命令
1.1 df -> 文件系统查看命令
	df [选项] [挂载点]
	-a: 显示所有文件系统信息
	-h: 人性化显示容量
	-T: 显示文件系统类型
	-m: 以MB为容量单位显示
	-k: 以KB为容量单位显示(默认)
1.2 du -> 统计目录或文件大小
	du [选项] [目录或者文件名]
	-a: 显示每个子文件的磁盘占用量
	-h: 人性化显示容量
	-s: 统计总占用量, 不列出子目录和子文件的占用量
		du -sh /dir -> 统计/dir目录总占用容量
linux输入输出
linux输入输出
	标准输入输出:
		设备 	设备文件名 	 文件描述符	类型
		键盘		/dev/stdin	 0			标准输入
		显示器	/dev/stdout  1			标准输出
		显示器	/dev/stderr	 2			标准错误输出
	输出重定向	
		类型						符号						作用
		标准输出重定向			[命令] > 文件 			覆盖, 把[命令]的正确输出 -> 输出到指定文件中
								[命令] >> 文件 			追加, 把[命令]的正确输出 -> 输出到指定文件中
		标准错误输出重定向			[命令] 2>文件 			覆盖, 把[命令]的错误输出 -> 输出到指定文件中
								[命令] 2>>文件 			追加, 把[命令]的错误输出 -> 输出到指定文件中
		标准输出和错误输出同时保存	[命令] >文件 2>&1			覆盖, 正确输出和错误输出 -> 同时输出到文件中
								[命令] >>文件 2>&1		追加, 正确输出和错误输出 -> 同时输出到文件中
								[命令] &>文件 			覆盖, 正确输出和错误输出 -> 同时输出到文件中
								[命令] &>>文件 			追加, 正确输出和错误输出 -> 同时输出到文件中
								[命令]>>文件1 2>>文件2	追加, 正确输出 -> 文件1, 错误输出 -> 文件2
									[命令] &> /dev/null -> 正确输出,错误输出都输出到/dev/null, 即丢弃
	输入重定向
		wc [选项名] [文件名] 
			-c: 统计字节数
			-w: 统计单词数
			-l: 统计行数
linux 多命令顺序执行
linux 多命令顺序执行
	; -> 命令1;命令2 -> 多个命令顺序执行, 命令之间没有任何逻辑关系	
	&& -> 命令1&&命令2 -> 逻辑与, 命令1正确执行才执行命令2, 命令1错误执行不执行命令2
	|| -> 命令1||命令2 -> 逻辑或, 命令1正确执行则命令2不执行, 命令1错误执行则命令2执行
		[命令] && echo 'yes' || echo 'no' -> 命令执行成功, 输出yes; 命令执行失败, 输出no

linux 管道符 | -> 命令你1 | 命令2 -> 命令1的正确输出,作为命令2的操作对象
	eg1: ls -la | grep more -> 当前目录ls分页显示
	eg2: netstat -an | grep 'ESTABLISHED' -> 当前所有网络连接中的远程连接


其他特殊符号
	'' -> 单引号, 在单引号中的所有特殊符号都没有特殊含义, 即为字符串
	"" -> 双引号, 在双引号中的一般特殊符号没有特殊含义, 但是 $ ` \例外. $ -> 调用变量值, ` -> 引用命令, \ -> 转义符
	`` -> 反引号, 在``中的为系统命令, 在Bash中会首先执行此命令, 等同于 $()
	$() -> 等同于``, 里面为系统命令, Bash优先执行
	# -> 在shell中, 以#开头为注释
	$ -> 用于调用变量的值, 若要获得变量name的值, 使用$name即可
	\ -> 转义符, 跟在\后面的特殊符号失去特殊含义, 如\$代表$, 而不是当做变量引用
linux 变量
linux 变量
	自定义变量(本地变量) -> 只在当前shell中生效
		变量设置规则
			变量以字母,数字,下划线组成, 不能以数字开头
			变量默认的类型为字符串类型, 若要进行数值运算, 变量类型需指定为数值型
			变量赋值时, =左右不能有空格
			赋值时,如果值有空格,需要用""或'' -> name='hello world'
			变量的值,可以使用转义符\
			若需要增加变量的值,可以进行变量值的叠加. 变量需要 -> "$变量名" 或者 ${变量名}
		定义 -> 变量名=变量值
			name='hello world'
		变量叠加
			param=hello
			param="$param world"
			param="${param} world"
		查看所有变量 -> set
			set | grep param
		取消设置变量 -> unset
			unset param	

	环境变量 -> 对当前shell和所有子shell生效, 若把环境变量写入配置文件中, 则对所有shell生效
		定义环境变量
			export 变量名=变量值 -> 申明环境变量
			env -> 查询环境变量
			unset 环境变量 -> 删除环境变量
		配置文件 -> 定义了系统默认环境变量, 比如PATH, HISTSIZE, PS1, HOSTNAME等
			环境变量配置文件 -> /etc目录下的配置文件针对所有用户生效, home目录~下的环境变量针对指定用户生效
				/etc/profile
				/etc/profile.d/*.sh
				~/.bash_profile
				~/.bashrc
				/etc/bashrc

	位置参数变量 -> 向脚本传递参数或数据, 变量名不能自定义, 变量的作用是固定的
		位置参数变量类型
			$n: n为数字, $0为命令本身, $1-$9代表第1-第9个参数, 第10个参数开始需要用{}包含, 例如${10}
				./start.sh param1 param2 -> 在start.sh中, 通过$1获取param1, $2获取param2
			$*: 代表命令行中所有参数, 获得的是一个整体
			$@: 代表命令行中所有参数, $@对每个参数独立, 可以使用for循环获取
			$#: 代表命令行中参数个数


	预定义变量 -> Bash已经定义好的变量, 变量名不能自定义	
		预定义变量类型
			$?: 上一个执行命令的返回状态. 若$?为0, 则上一个命令正确执行 -> 可以用于判断上一个命令是否正确执行
				echo $?
			$$: 当前进程的进程号(pid)
			$!: 后台运行的最后一个进程的进程号(pid)

	接收键盘输入 -> read [选项] [变量名]
		-p: 提示信息, 在等待read输入时, 输出提示信息
		-t 秒数: read等待用户输入, 等待时间(超时时间)
		-n 字符数: read命令接受指定的字符数后自动执行
		-s: 隐藏输入的数据

declare 申明变量类型
	declare [+/-] [选项] [变量名]
		-: 给变量设定类型属性
		+: 取消变量的类型属性
		-i: 将变量类型置为整数型
		-x: 将变量置为环境变量
		-p: 显示指定变量被声明的类型
			declare -i sum=$param1+$param2 -> 能正确获得两个值的和, 而不是组装成的字符串
				等同于 sum=$(expr $param1 + $param2) -> +左右必须有空格
				等同于 sum=$(($param1+$param2))
				等同于 sum=$[$param1+$param2]
正则表达式, 通配符
正则表达式, 通配符
	正则表达式
		包含匹配, 在文件中匹配符合条件的字符串. grep, awk, sed等命令都支持正则表达式
	通配符
		完全匹配, 用来匹配符合条件的文件名. ls, cp, find等命令不支持正则表达式, 支持通配符
			? -> 匹配一个任意字符
			* -> 匹配一个或多个任意字符, 即匹配任意内容
			[] -> 匹配[]中的任意一个字符, [abc] -> a或者b或者c
			[-] -> [a-z] -> 匹配a-z中任意一个字符
			[^] -> 逻辑非, [^a-z] -> 匹配a-z中之外的字符
				eg1: rm -rf * -> 删除当前目录下所有文件
				eg2: ls -l [a-z]* -> 列出当前目录下所有a-z开头的文件		
字符截取命令
字符截取命令
	cut -> 文件每行切割
		cut [选项] 文件名
		-f列号: 提取第几列
		-d分隔符: 按照指定分隔符分割列, 不指定默认是制表符
			eg1: cut -f 1,3 file.txt -> file.txt中每一行按照制表符分割, 取第1列和第3列
			eg2: cut -f 1,3 -d ":" file.txt -> file.txt中每一行按:分割, 取第1列和第3列
			eg3: cat /etc/passwd | grep /bin/bash | grep -v root | cut -f 1,5 -d ":" -> /etc/passwd文件中, 筛选出包含/bin/bash的行, 不包含root, 然后按:分割, 取第1列和第5列


	awk -> 字符截取 awk '条件1{操作1} 条件2{操作2}...' 文件
		df -h | awk '{print $1, $3}' -> df -h 打印第一列和第三列
		df -h | grep vda1 | awk 'BEGIN{printf "/dev/vda1 磁盘使用率为: "} {printf $5} END{print " end"}' -> /dev/vda1 磁盘使用率为: 21%, BEGIN为初始执行, END在所有数据执行完之后执行
		awk 'BEGIN{FS=":"} {print $1,$3}' /etc/passwd -> /etc/passwd 按照:分割, 取第一列和第三列

	sed -> 支持对流数据进行编辑, sed [选项] '[操作]' 文件名
		选项
			-n: 只输出经过sed命令处理的结果
			-e: 允许对输入数据应用多条sed命令编辑
			-i: sed命令直接修改源数据
		操作
			a: 新增, c: 替换, i: 插入, d: 删除, p: 打印, s: 字串替换
		sed 2p file.txt -> 输出file.txt的第二行, 同时完整文件也会输出
		sed -n 2p file.txt -> 只输出file.txt的第二行	

字符处理命令
	sort -> 排序命令 sort [选项] 文件m
		-f: 忽略大小写
		-n: 按照数值型进行排序, 默认是按照字符串型进行排序
		-r: 反向排序
		-t: 指定分隔符, 默认分隔符是\t制表符
		-k n,m: 按照指定字段范围排序
			sort /etc/passswd -> 每一行按照首字母排序
			sort -t ":" -k 3,3 /etc/passwd -> 以:为分隔符, 取第三个字段排序
	wc -> 统计命令 wc [选项] 文件名
		-l: 只统计行数
		-w: 只统计单词数
		-m: 只统计字符数
			wc /etc/passwd -> 统计指定文件行数,单词数,字符数 -> 31   39 1608 /etc/passwd
条件判断
条件判断
	test 选项 文件
	[ 选项 文件 ] -> []前后有空格
		按照文件类型判断, 执行结果可以通过 echo $? 判断, 0为true		
			-d 文件: 文件存在且是目录文件 -> true
			-e 文件: 文件存在 -> true
			-f 文件: 文件存在且是普通文件 -> true
			-s 文件: 文件是否存在且非空 -> true
				test -e /etc/passwd
				[ -e /etc/passwd ]
				[ -e /etc/passwd ] && echo 'true' || echo 'false' -> 若/etc/passwd文件存在, 则输出true, 否则输出false
		按照文件权限判断, 执行结果可以通过 echo $? 判断, 0为true
			-r 文件: 文件存在且有读权限 -> true
			-w 文件: 文件存在且有写权限 -> true
			-x 文件: 文件存在且有执行权限 -> true
				test -x /etc/passwd -> 指定文件是否有执行权限
		文件之间判断
			文件1 -nt 文件2: 文件1修改时间比文件2更近 -> true
			文件1 -ot 文件2: 文件1修改时间比文件2更早 -> true
			文件1 -ef 文件2: 文件1和文件2lnode号一致(同一个文件) -> true	
		两个整数比较
			n1 -eq n2: 相等 -> true	
			n1 -ne n2: 不相等 -> true	
			n1 -gt n2: n1>n2 -> true
			n1 -lt n2: n1<n2 -> true
			n1 -ge n2: n1>=n1 -> true
			n2 -le n2: n1<=n2 -> true
				[ 22 -gt 21 ] && echo true || echo false
		两个字符串判断
			-z str: str为空 -> true
			-n str: str非空 -> true
			str1 == str2: 相等 -> true (==左右空格)
			str1 != str2: 不相等 -> true (!=左右空格)
				[ -z "$name" ] && echo true || echo false -> 若name为空, 输出true
		多重条件判断
			判断1 -a 判断2: 两个都为true -> true
			判断1 -o 判断2: 有一个为true -> true
			!判断: 判断为true, !判断为false
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值