目录
1、export 命令(定义变量)
export 命令用于创建临时变量,创建的临时变量仅当前会话有效;
语法:
export a=10; #定义一个变量a值为10
2、echo 命令(打印)
使用 echo 命令可以打印变量的值;
语法:
echo $变量名
例如打印变量PATH;
echo $PATH
3、printenv 命令(环境变量)
printenv 命令可以打印环境变量
printenv
4、more 命令(查看大型文件)
more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),常用于查看较大文件,基本用法:
more [参数列表] 文件名
下图是使用 more 查看某个文件,在左下角会显示已看的进度;
按空格向下翻页,按 b 向上翻页;按回车展示下一行;
看完全部内容后会自动退出查看模式,也可以直接按 q 退出查看
常用参数列表:
- -num:一次显示 num 行
- +num:从第 num 行开始显示
- -p:不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
- -s:当遇到有连续两行以上的空白行,就代换为一行的空白行
- -u:不显示下横线
常用快捷操作:
Enter #逐行显示
b #向上翻页
空格 #向下翻页
= #输出当前行号
V #调用vi编辑器
q #退出more
5、less 命令(查看大型文件)
less 与 more 类似,但使用 less 可以随意浏览文件,more 会在查看前加载整个文件,而且 less 在查看之前不会加载整个文件。
基本用法:
less [参数列表] 文件名
查看历史命令,less显示
history | less
- -b <缓冲区大小> 设置缓冲区的大小
- -e 当文件显示结束后,自动离开
- -g 只标志最后搜索的关键词
- -i 忽略搜索时的大小写
- -m 显示类似more命令的百分比
- -N 显示每行的行号
- -o <文件名> 将less 输出的内容在指定文件中保存起来
- -s 显示连续空行为一行
- -S 行过长时间将超出部分舍弃
- -x 将"tab"键显示为规定的 n 个空格
- /字符串:向下搜索"字符串"的功能
- ?字符串:向上搜索"字符串"的功能
常用快捷操作:
Enter #逐行显示
b #向上翻页
PageUp #向上翻页
PageDown #向下翻页
空格 #向下翻页
= #输出当前页面行号范围
v #调用vi编辑器
q #退出less
n #切换到下一个文件
p #切换到上一个文件
g #快速定位到第一行
G #快速定位到最后一行
6、wc 命令(计数)
wc 命令用于计算文件的字数等
语法:
wc [参数列表] 文件
查看某个文件结果如下图所示,第一个表示文件的行数,第二个表示文件中的单词数,第三个表示文件中的字节数
参数列表:
- -c或–bytes或–chars 只显示Bytes数
- -l或–lines 只显示行数
- -w或–words 只显示单词数
- -L 计算最长行的长度
7、管道命令( | )
把管道符左侧程序的输出作为管道符右侧程序的输入
cat a.txt | head -2
8、grep 命令(查找)
grep 命令用于查找文件里符合条件的字符串;
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。
语法:
grep [参数列表] [文件或目录...]
常用参数列表:
- -a 或 --text : 不要忽略二进制的数据
- -b:在显示符合样式的那一行之前,标示出该行第一个字符的编号
- -c 或 --count : 计算符合样式的列数
- -i 忽略大小写
- -w 匹配整个单词
- -l 只列出文件名,不列出匹配的行
- -r 在当前目录及其所有子目录中查找
- -n 列出具有行号的匹配行
- -v 只打印没有匹配的,匹配的反而不打印
9、file 命令(识别文件类型)
file 命令用来识别文件类型
语法:
file 文件
10、I/O Stream(重定向)
stdin:标准输入,编号为0,用于程序从键盘等设备接收数据。输入流被EOF(文件结尾)终止
stdout:标准输出,编号1,用于程序向终端等设备写入数据
stderr:标准错误,编号2,用于向终端等设备显示错误消息
重定向 I/O Stream 到文件:
符号 | 说明 | 模式 |
---|---|---|
< | 重定向 stdin | ----- |
> | 重定向 stdout | 覆盖 |
>> | 重定向 stdout | 追加 |
2> | 重定向 stderr | 覆盖 |
2>> | 重定向 stderr | 追加 |
示例:
读取 a.txt 文件的第2行,并覆盖写入 m.txt ;若没有将报错信息写入 n.txt
head -2 a.txt | tail -1 > m.txt 2>> n.txt
执行结果如下图所示,将 a.txt 中的第2行写入 m.txt,n.txt中没有被写入
11、which 命令(命令查找)
用于查找命令的绝对路径
例如:
which yum
which bash
which file
which grep
注意该命令只能用于查找命令的路径,不能某个查找文件夹的路径
12、find 命令(查找)
find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法:
find 路径 [参数列表] [查找条件];
常用参数列表:
- -amin n : 在过去 n 分钟内被读取过
- -anewer file : 比文件 file 更晚被读取过的文件
- -atime n : 在过去n天内被读取过的文件
- -cmin n : 在过去 n 分钟内被修改过
- -ctime n : 在过去n天内被修改过的文件
- -empty : 查找空的文件
- -ipath p:路径名称符合 p 的文件,ipath 会忽略大小写
- -name name:文件名称符合 name 的文件。iname 会忽略大小写
- -size n:文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组
- -pid n : process id 是 n 的文件
- -type c : 文件类型是 c 的文件
文件类型:
d:目录
c:字型装置文件
b:区块装置文件
p:具名贮列
f:一般文件
l:符号连结
s:socket
实例
1、查找 shell 文件夹下的 .txt 文件
find /shell -name '*.txt'
2、将目前目录其其下子目录中所有一般文件列出
find ./ -type f
3、将目前目录及其子目录下所有最近 20 天内更新过的文件列出
find ./ -ctime -20
4、查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们
find /var/log -type f -mtime +7 -ok rm {} \;
5、查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
find ./ -type f -perm 644 -exec ls -l {} \;
6、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径
find / -type f -size 0 -exec ls -l {} \;
13、ln 命令(创建软连接)
在文件之间建立软连接;
语法:
ln -s /路径/[文件]
示例:
现有一个文件 mm.txt 在 /shell/A/B/B/C/ 下面;给其建立一个软连接可以更方便的使用到该文件
cat /shell/A/B/B/C/mm.txt #原来查看该文件方法
ln -s /cat /shell/A/B/B/C/mm.txt x #创建软连接
cat x #使用软连接查看mm.txt文件
使用效果如下所示
建立软连接可以节省大量路径的输入,一般在路径较长且经常使用的文件夹或文件创建软连接
14、date 命令(时间)
打印或设置系统时间等
语法:
date [+参数列表] [-参数列表]
参数列表:
时间方面:
+%Y-%m-%d #显示年月日
+%H:%M:%S #显示时分秒
+'%Y-%m-%d %H:%M:%S' #显示当前完整时间
% : 印出 %
%n : 下一行
%t : 跳格
%H 或者 %k : 小时(24小时制)
%I 或者 %l: 小时(12小时制)
%M : 分钟(00..59)
%S : 秒(00..61)
%s : 当前格林威治时间毫秒数
%p : 显示本地 AM 或 PM
%T : 直接显示时间 (24 小时制,时分秒)
%r 或者 %X : 直接显示时间 (12 小时制,时分秒 AM/PM)
%Z%z : 显示时区
上面部分参数演示如下:
日期方面:
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b 或者 %h : 月份 (Jan..Dec)
%B : 月份 (January..December)
%m : 月份 (01..12)
%c : 直接显示日期与时间(包括星期哦)
%d : 当前日 (今天多少号)
%D : 直接显示日期 (月/日/年(年份后两位))
%x : 直接显示日期 (月/日/年(完整年份))
%y : 年份的最后两位数字 (20)
%Y : 完整年份 (2020)
%j : 一年中的第几天 (001..366)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6/星期天为第0天)
上面参数演示如下:
其他操作:
-u : 显示当前格林威治时间
-s datestr : 将系统时间设为 datestr 中所设定的时间
注意:可以自由组合自己需要输出的日期形式,当有多个参数需要展示时,全都放在单引号里面,并以空格分隔
15、ping 命令
ping 命令用于显示与主机的连通性
语法:
ping 192.168.... `ip地址`
16、awk 命令
显示一个文件中的第几列
#不指定分隔符
awk '{print $2}' a.txt
#指定分隔符
awk -F' ' '{print $2}' a.txt
#添加表头
awk -F' ' 'BEGIN{print "name"} {print $2}' a.txt
#添加表尾
awk -F' ' 'BEGIN{print "name"} {print $2} END{print "--------------end--------------"}' a.txt
17、sed 命令
流式编辑器:不需要打开文件就可以对文件进行编辑
不会修改原文件,需要保存则使用>
重定向覆盖原文件内容
#替换文本中的字符串
sed 's/1002/1003/g' a.txt
#删除第几行的数据
sed '2d' a.txt
#删除第2到4行的数据
sed '2,4d' a.txt
18、:%s 命令
删除每行第一个字符
:%s
:%s/^.//g
使用该命令之后,会出现第一列(即所有行的第一个字符)高亮的情况,此时使用命令:nohl
即可删除高亮。