基本命令操作
目录
3.3.6 shell使用混合输出符:& 可以将标出输出和错误输出一起重定向
10 其他命令 du which lscpu service echo命令
1 ls命令
1.1 含义
ls:list 打印清单(指定目录)
1.2 ls 常用选项
ls -l 列出的文件以长格式输出,一个文件显示一行
ls -a 显示以 “.”开头的文件,“.”开头的为隐藏文件,默认不显示
ls -d 显示目录本身而不显示目录下的文件
默认ls 后面的参数如果是目录,则会显示目录下的文件,如:ls /root
如果不想查看目录下的内容,只显示目录本身添加-d选项
如:ls -d /root或ls -dl /root
ls -lh 长格式输出的文件字节数转换为K,M,G的形式方便人来阅读
ls -t 列出的文件按照修改时间的晚和早排序(最近修改的先显示)
ls -tr 列出的文件按照修改时间的早和晚排序(最近修改的后显示)
ls -R 列出当前目录下的所有文件,如果有目录遍历所有目录及其子目录下的文件
1.3 ls -l 长格式输出字段说明
ls -l /root/install.log
-rw-r--r--. 1 root root 46478 8月13 2018 install.log
第一字段第一位:代表文件类型
-rw-r--r--. 1 root root 46478 8月13 2018 install.log
“-”:代表普通文件
“d”:代表目录
“l”:链接文件(符号链接;小写的L)或软连接
“c”:字符设备文件
“b”:块设备文件
“s”:套接字文件
“p”:命名管道文件
第一字段第后9位:代表相关用户、组、其他用户的权限
-rw-r--r--. 1 root root 46478 8月13 2018 install.log
第二字段:
-rw-r--r--. 1 root root 46478 8月 13 2018 install.log
如果文件是普通文件:硬链接的个数(访问该文件的路径数)
dr-xr-xr-x. 25 root root 4096 8月 13 2018 /
如果文件是目录:目录下的一级子目录的个数
第三字段:文件的属主(文件所属的用户名)
-rw-r--r--. 1 root root 46478 8月 13 2018 install.log
第四字段:文件的属组(文件所属的用户组名)
-rw-r--r--. 1 root root 46478 8月13 2018 install.log
第五字段:文件的字节数(大小)
-rw-r--r--. 1 root root 46478 8月 13 2018 install.log
第六字段:文件最近一次的修改日期
-rw-r--r--. 1 root root 46478 8月 13 2018 install.log
第七字段:文件名称
-rw-r--r--. 1 root root 46478 8月 13 2018 install.log
2 文件查找命令find
2.1 find
find命令字用来从系统层级目录中查找文件
2.2 根据文件名
-name
-iname (文件名忽略大小写)
2.3 根据属主属组查找
-user username 按照指定的属主查找
-group grpname 按照指定的属组查找
2.4 根据文件类型查找
-type 文件类型
f:普通文件
d:目录文件
l:符号链接文件
s:套接字文件
b:块设备文件
c:字符设备文件
p:管道文件
2.5 根据文件大小查找
-size (+大于,-小于)
sudo find ./ -size +2M -size -10M
2.6 根据时间戳来查找
(1)以天为单位
-atime 按照文件访问时间
-mtime 按照文件修改时间
例如:1天内 mtime -1;1天以前 mtime +1
-ctime 按照文件属性变更时间
(2)以分钟为单位
-amin 按照文件访问时间
-mmin 按照文件修改时间
-cmin 按照文件属性变更时间
find /home/yuan -mmin -50 -ls
2.7 查询条件逻辑运算选项
-a 而且
如果find命令有多个查找条件,默认条件之间的是逻辑与的关系
-o 或者
如果find命令有多个查找条件,在添加间使用-o选项可以实现逻辑或的关系
找出(60分钟之内修改的或者文件名是a的)而且 文件类型为普通文件的文件
sudo find ./ \( -mmin -60 -o -iname "a" \) -type f
2.8 查到后处理动作选项
查到后处理动作选项
打印 -print (默认打印到屏幕) -fls (结果输出到指定文件)
例如:find ./ \( -mmin -60 –o –iname “a” \) –type f –fls ./info.txt
2.9 查询属性信息(类似ls -l)
-ls
2.10 删除
-delete
2.11 后接命令
后接命令(交互) -ok COMMAND {} \;
后接命令(不交互)-exec COMMAND {} \;
2.12 让find命令支持管道
find命令本身是不支持管道的,但是可以使用xargs命令字使find可以使用管道
等价写法:
touch TEst test TESt
sudo find ./ -iname “test” -ls
sudo find ./ -iname “test” -exec ls -l {} \;
sudo find ./ -iname “test”|xargs ls -l
ls -l $(sudo find ./ -iname "test")
3 文件内容命令
3.1 查看
3.1.1cat
cat:一次性显示文件的内容
cat [option] file
-n: 查看并输出行号
-E:并输出结尾符号
3.1.2 more
more:分屏查看文本内容
more [option] file
空格往下翻屏、B键往上翻屏、回车往下翻行,q键退出
3.1.3 less
less:分屏查看,操作方法同上,但上下箭头翻行,”/”可以搜索相关内容
3.1.4 tail
tail [-#]:查看文本文件尾部信息,默认10行
3.1.5 head
head [-#]:查看文本文件头部信息,默认10行
3.2 编辑
3.2.1 gedit
文本编辑器:gedit(只能在图形使用,字符界面不可使用)
Nano:ctrl+o 回车 保存 ctrl+x 退出
3.2.2 vim
(1)简介
vi是Linux系统常用功能强大的文本编辑器
(2)用法
vi [options] /path/to/file
(3)三种常用模式
一般模式(normal mode )(默认)
插入模式(insert mode)
末行模式(last line mode)
(4)使用帮助
模式切换
一般模式 --> 插入模式
i:当前光标处输入内容
I: 在当前光标所在行的行首
a:在当前光标所在处的后面
A: 在当前光标所在行的行尾输入
o:在光标所在行的下方新增一行空白行
O:在光标所在行的上方新增一行空白行
插入模式 --> 一般模式
ESC键
一般模式 --> 末行模式
:键
末行模式-->一般模式
ESC键
一般模式操作
删除当前一行:dd
从当前行一直删除到行尾: :.,$d 回车
复制当前一行:yy
复制15到17行: :15,17y 回车
当前行下一行粘贴:p
当前行上一行粘贴:P
删除光标所在一个字符:x
跳转到第一行:gg
跳转到第末行:G
跳转到第100行:100gg
/或?关键字 查找关键字;n/N上下翻
可视化模式:v
进入可视化模式后可以,移动光标选择文本,键入y可以选择复制,键入d可以删除选择内容。再次键入v回到一般模式
撤销之前操作:u
末行模式操作
退出vi:
:q!强制退出,不保存并退出
:wq 保存修改并退出
:x 保存并退出
一般模式:ZZ,保存退
替换字符::s
注意事项:vi编辑器不能同时打开两次或以上,否则会出现交换文件。
3.3 重定向
3.3.1 用途
Linux默认输入设备:键盘
Linux默认输出设备:显示器
可以使用重定向操作符,根据需要改变默认的输入和输入设备
3.3.2 符号
输入重定向符 < 和 <<
输出重定向符 > 和 >>
EOF(意思为end of file)为自定义的起止标识符,可以写为其他文字。<<符号后紧跟着EOF,命令字wc开始接收一段文本,再次遇到EOF时将停止接收,wc将开始处理2个EOF之间的数据
3.3.3 输入重定向
例如:把默认输入或输出设备改为文件
输入重定向符 < 和 <<
< file
cat</bin/ls>x
<<
将键盘录入的一段文本(不在文件中保存)重新定向输入给一个命令字
必须自定义一个文本标记来标识录入内容的开始和结束
例如:
wc <<EOF
data.......
data.......
EOF
3.3.4 输出重定向
> file
输出的内容放到file中,file中原来的内容被覆盖
文件不存在,会自动创建
如果文件有内容,会把内容清空以后,重新写入
>> file
输出的内容追加到file的行尾,file中原来的内容不覆盖
文件不存在,会自动创建
如果文件有内容,不会把内容清空,会把新数据附加到文件末尾
示例:
date>/root/file.txt 将date命令字输出重定向到/root/file.txt中
cal>>/root/file.txt 将cal命令字输出重定向到/root/file.txt的尾部
3.3.5 使用文件描述符重定向
命令字执行时通常会涉及/dev目录下的三个设备文件,分别是:
/dev/stdin,标准输入,对应文件描述符0
/dev/stdout,标准输出,对应文件描述符1
/dev/stderr,错误输出,对应文件描述符2
输出重定向时,可以与标准输出文件描述符1,和错误输出文件描述符2结合使用
如果命令字正常运行,默认返回的结果发送给标准输出设备(默认是屏幕)
如果命令字运行遇到错误,默认返回的结果发送给错误输出设备(默认是屏幕)
3.3.6 shell使用混合输出符:& 可以将标出输出和错误输出一起重定向
此两种写法均可
&> filename
>filename 2>&1
3.3.7 黑洞
/dev/null是Linux系统的特殊设备,俗称黑洞
有时我们关心的是命令是否执行成功了,而不关注命令执行后输出的结果,此时可以把输出结果丢弃到黑洞设备里,这样屏幕和文件都不保留命令的输出结果
4 文本内容命令
4.1 grep文本内容查找
4.1.1 查找方式
grep命令对文本的内容按照指定的匹配模式基于行来进行筛选
4.1.2 语法格式
grep [选项] 模式 文件
常用选项:
--color:匹配的文本颜色高亮显示
-v:反向匹配,显示不能被模式匹配到的行
-o:仅显示被模式匹配到的字符串,而非所匹配的整行内容
-q:静默模式
-i:不区分大小写,ignore-case
-E:支持扩展(相当于egrep命令)( grep -E 等价于 egrep)
4.1.3 相关命令
grep egrep (文本过滤) fgrep (不支持正则)
4.2 wc文本内容处理
4.2.2 作用
wc用于统计文本文件中的行数、单词数和字节数word count,还可以统计用户键盘输入的数据
4.2.2 语法格式
wc [option] [file]...
默认输出
行数 单词数 字节数 (单词数对西文有效,西文按照空格区分单词)
常用选项
-l:仅统计行数
-c:仅统计字节数
-w:仅统计单词数
4.2.3 统计用户键盘输入的数据
wc回车 进行键盘录入 录入完成ctrl+d 提交查看统计结果
4.3 tr文本内容处理
4.3.1 作用
tr命令字用来转换或删除字符,必须与管道符连用
4.3.2 用法
(1)用法1:转换字符
命令字 | tr '字符1' '字符2'
会把管道符左侧命令输出内容中的'字符1'用'字符2'来替换
(2)用法2:删除字符,使用-d选项
命令字 | tr -d '字符1'
会把管道符左侧命令输出内容中的所有'字符1'删除
4.3.3 管道符用法
管道符“|”可以用来将任务单一的小程序组合起来使用
管道符的使用形式:
命令字1 | 命令字2 | 命令字3
“|” 左边命令字的输出作为 “|” 后边命令字的输入
Linux 中不是所有命令字都支持管道
不支持管道的命令:cd rm find .....
4.4 cut文本内容处理
4.4.1 作用
cut命令字根据指定的分隔符对字符串切片,并显示需要显示的片
4.4.2 语法
常用选项
-d字符:指定分隔符,不能为空格
-f (field) 数字:指定要显示的字段
单个数字:一个字段
多个离散字段:逗号分隔
多个连续字段:-分隔
4.4.3 作用
4.5 sort文本内容处理
4.5.1 作用
文本文件中的行排序
4.5.2 语法
sort [options] FILE
常用选项
-f:忽略大小写
-n:对数字进行排序
-t:指定分隔符
-k 数字:指定分隔后进行排序的列的列号
-u:重复的行,只显示一行
-r:倒序排列
5 系统管理类命令(不重要)
5.1 shutdown
shutdown [参数]...时间(详细请见详细命令解释文档)
-r 重启计算机
-h 关机
Shutdown -h now 立刻关机
Shutdown -h +10 10分钟关机
Shutdown -r 22:22 在22:22之后重启
5.2 reboot(重启) 和Poweroff
例如 reboot
5.3 Init 7个启动级别
0 系统停机模式,系统默认不可以是停机模式,否则不能正常启动,通常用init 0关机
1 单用户模式,root权限,禁止远程登录,类似windows安全模式
2 多用户模式,没有NFS和网络支持
3 完整的多用户文本模式,命令行模式
4 系统未使用,保留一般不用,比如笔记本电脑电池用尽,可以切到该模式下进行一些配置。
5 图形化模式
6 重新启动
6 shell的快捷操作
历史命令信息:history命令
Ctrl+c:取消正在执行的命令
Ctrl+l:清屏 相当于命令clear
Ctrl+a:跳至命令行首
Ctrl+e:跳至命令行尾
Ctrl+u:光标处删除至最左侧
Ctrl+k:光标删除至最右侧
Ctrl+z:将当前命令送至后台(fg调回命令)
!!执行上一次操作 !加命令开头关键字执行之前的那条命令(也可以接数字,例如!100)
TAB:命令和参数关键字补全 (有时候按两下)
前提条件,输入关键字要唯一
7 Linux帮助命令
7.1 对于内部命令
help 命令字,例如:help cd
help可以查看Bash内部命令的帮助信息
help本身就是内部命令,help可以列出所有内部命令
7.2 对于外部命令
使用命令字的“--help” 选项,例如:ls --help
适用于大多数外部命令,列出命令使用的简要帮助信息
7.3 man命令
使用man命令阅读命令手册页,例如:man ls
“b”键,后翻页,”f”前翻页键,”q”键退出阅读环境、按“/”键后跟关键字,可以查找关键字相关内容,不区分大小写
7.4 info命令
使用info命令阅读信息页(不常用),例如:info ls
Redhat官方文档
http://www.redhat.com/docs提供详细操作文档
8 bash通配符
8.1 介绍
* : 匹配任意长度的任意字符
? : 匹配任意单个字符
[] : 匹配指定字符范围内的任意单个字符,简化写法[a-z]不区分大小写
[[:upper:]] : 大写字母
[[:lower:]] : 小写字母
[[:alpha:]] : 大小写所有字母
[[:digit:]] :匹配数字,可以写成[0-9]
[[:alnum:]] : 字母+数字
[[:space:]] : 空格
[[:punct:]] : 标点符号 特殊字符
[^] : 匹配指定字符范围外的任意单个字符
8.2 示例
touch abc ABC xyz XYZ a123 b456 c789
列出a开头的所有文件
ls a*
列出a开头一共3个字母的文件
ls a??
列出三个大写字母文件名的文件
ls [[:upper:]][[:upper:]][[:upper:]]
列出一个字母后跟三个数字的文件
ls [a-z][0-9][0-9][0-9]
列出不以a字母开头后跟三个数字的文件
ls [^a][0-9][0-9][0-9]
9 正则表达式Regular Expressions
9.1 定义
用来查找、替换那些符合某种模式的文本
提供多种元字符来描述特定文本的特征
9.2 分类
9.2 POSIX正则表达式
9.2.1 分类
分为基本正则表达式(BRE)和扩展正则表达式(ERE)
9.2.2 元字符
类似于通配符,用于描述文本的特征,不表示字符本身的意义
元字符需要用双引号引起来
9.2.3 两种正则区别
基本正则表达式要求( )和{ }写成\(\), \{\}
扩展正则表达式不要求对( )和{ }用“\”来转义
9.2.4 常用元字符
. : 任意单个字符
[ ] : 指定[ ]范围内的任意单个字符
数字0到9:[0-9], , 匹配任意单个数字
数字0到9:[[:digit:]]
字母a到z:[a-z];[[:lower:]]
字母A到Z:[A-Z];[[:upper:]]
所有的字母:[[:alpha:]];[a-z][A-Z]
字母+数字:[[:alnum:]]
空格:[[:space:]](空格不等同于空行)
标点符号字符:[[:punct:]]
指定范围外的任意单个字符:[^]
次数匹配:用来指定匹配其前面的字符的次数,扩展正则表达式不用”\”
* :*前面的单个字符出现0次或者任意次(0次或n次)
.* :匹配任意长度的任意字符
\? :前面字符出现0次或者1次的任意字符
\+ :前面字符至少1次 (1次到n次)
\{m\} : 匹配m次
\{m,n\} : 至少m次,至多n次
\{m,\} : 至少m次
\{,n\} : 至少0次,至多n次
位置锚定:用于指定字符出现的位置
^ :锚定行首 ^char
$ : 锚定行尾 char$
^$ :空白行
\<char :锚定单词词首
char\> :锚定单词词尾
10 其他命令 du which lscpu service echo命令
(1)du [-sh]:查看文件所占的磁盘空间
(2)which:查询指令文件所在的目录
(3)lscpu:调用CPU的信息文本
(4)service(重要)
语法:service 服务名 start/stop/restart/reload/status
(5)echo可以将命令字后面的一个或多个参数打印到标准输出,默认输出后面跟有一个新行回车符
常用选项:
-n 不输出为新行
比较 echo hello world 和 echo -n hello world
-e 允许echo后面参数中的转义符输出时进行转义
常用的转义符
\n new line 换行且光标移至行首
\t horizontal tab 插入tab;
如果不用-e选项,\n \t等转义符将按照普通字符输出
如果使用-e选项,\n \t等转义符将体现其特殊的含义
比较 echo 'a\nb\nc' 和 echo -e 'a\nb\nc'