Linux基础语法
查看文件内容指令
touch
主要是修改文件时间,多用创建文件
-a #只更改访问时间
-m #只更改修改时间
-c --no-create#不创建任何文件
cat
展示小文件内容
-b #对于非空输出行编号
-n #对于所有行输出编号
-E #在每行结束处显示"$"
-A #展示所有符号,包含空格与,换行'$'(没有编号)
more
展示大文件,可以设置展示对应行数,以分页形似显示文件内容【显示百分比】
-d #显示帮助,不是响铃
-f #统计逻辑行数,非屏幕行数
-l #抑止换页(form feed)后的暂停
-p #不滚屏,清屏并显示文本
-c #不滚屏,显示文本并清理行尾
-NUM #指定每屏显示的行数为NUM
+NUM #从文件第NUM行开始显示
+/String #搜索字符串String的位置开始显示
操作说明
- ENTER——向下滚动一行
- SPACE——向下滚动一屏
- b——返回上一屏
- q or CTRL+c——退出more
less
可以进行搜索与行数查看
#1、向前搜索
/[SERACH]
n #向前查找下一个匹配文本
N #向后查找前一个匹配文本
-m #有 百分比
#2、向后搜索
?[SEARCH]
操作说明
- CTRL+F:向前移动一屏
- CTRL+B:向后移动一屏
- CTRL+D:前移半屏
- CTRL+U:后移半屏
- j:前移动1行
- k:后移动1行
head
每个指定文件头10行显示到SH;
若指定多个文件,会在每段开始给出文件名作为开头
-c [NUM] --byte=[-]K#显示每个文件的前K个字节
eg:head -c 2K .bash.history/head --byte=2K .bash.history
-n [Num]#显示文件前Num行内容
-q #不显示包含指定文件的文件头
-v #总是显示包含指定文件的文件头
tail
查看文件末尾内容
-f #动态读取内容,有更新会体现,与tailf雷同,后者省电
cp
复制文件
-p #保持原文件的属性在拷贝过程不变化
-r #递归拷贝子文件
-v #显示拷贝过程
cp aaa bbb #等价cp ./aaa ./bbb表示在当前目录将aaa文件复制到bbb,如果没有则创建bbb并拷贝进入目标文件
在子目录有同名目录情况如下
cp [选项] 源文件 目标文件
存在相同,首先将源文件的二级文件与目标文件二级文件匹配,如果重名则用同一目录,不同名创建新的分目录
mv
移动、换名文件
mv 原文件地址 目标文件地址
mv 原文件名 目标文件名
重定向与管道
重定向
什么是重定向?
将原本终端输出的数据信息重新定向到某个指定文件
为什么要重定向?
- 屏幕输出信息很重要,没办法一直关注时,而且需要保存重要信息时;
- 错误日志与正确日志需要区别保存时;
- 一些执行命令,我们已经知道他可能出现错误信息,不想要丢掷黑洞/dev/null;
- 系统例行命令,定时命令希望存下来;
- 后台执行程序不干扰正常输出结果。
标准输入Standard:0
process处理
标准输出Stdout(StandardOut):1
错误输出Stderr:2
Other files(文件名称):3…
重定向操作
#首先查看日志文件
tail -f /var/log/messages
#ctrl+z将进程挂起
#获取进程号
PID TTY TIME CMD
具体终端SH操作
#以普通用户举例
find /etc 1>right.txt 2>error.txt
cat error.txt
#错误的丢入黑洞,正确SH显示
find /etc 2>/dev/null
#避免干扰到正常输出结果
tail -20f /var/log/secure > a.txt &
输出重定向类型、操作符与用途
类型 | 操作符 | 用途 |
---|---|---|
标准覆盖输出 | > | 程序输出正确结果输出到指定的文件中,覆盖文件原有内容 |
标准追加输出 | >> | 错误不会覆盖,尾端追加 |
错误覆盖输出 | 2> | 错误结果输出,覆盖原有内容 |
错误追加输出 | 2>> | 错误结果输出,尾端追加 |
标准输入重定向 | << | 将命令中接受输入的途径由默认的键盘更改为指定的文件或命令 |
如何将错误与正确输出放在同一文件
在输出过程中有3种情况
1、将正确重定向到指定文件夹
2、将错误重定向到指定文件夹
3、将正确与错误从定向到同一文件夹
find /etc/ >right.txt #正确重定向
find /etc/ 2>error.txt #错误重定向
find /etc/ &>all.txt #同一文件Way1
find /etc/ >a 2>&1 #同一文件Way2
管道
什么是管道
管道操作运算符“|”,用来连接两个命令,左侧标准输出右侧接收,右侧标准输出,可以多个连接
注意:左侧输出错误不会传递至右侧命令
ls |grep -E "*txt" #输出只包含"*txt"的文件
tee命令操作
作为中间分流,在需要查看输出结果命令的地方设置,复制一份查看
-a #追加文件
-i #无视中断
echo $RANDOM |tee -a pw|passwd Demo --stdin #随机生产数|分流复制一份放在pw|作为Demo_passwd
echo $RANDOM |md5um|cut -c 1-6|tee -a pw|passwd Demo --stdin #随机生产数|字符数组|长度6
echo $RANDOM |cksum|cut -c 1-6|tee -a pw|passwd Demo --stdin #随机生产数|数字|长度6
grep命令操作
Sort命令操作
-r #倒序
-n #按数字排序
-t #指定分隔符
-k #指定第几列,指定几列几字符(1,1 3.1,3.3)
sort -t ":" -k3 -nr /etc/passwd |tee -a pd|head -5 #倒序排列|输出一份到pd|看前5行
xargs
又称为管道命令,构造参数等,是给命令传递参数的一个过滤器,也是组合多个命令的工具。主要是把其他命令给他的数据传递给他后面的命令作为参数
#主要参数
-d #为输入指定一个定制的分割符
-i #用{}代替传递的数据
-I string #用string来代替传递的数据 -n[数字] 设置传递几行数据
-n #选项限制单个命令行的参数个数
-t #显示执行详情
-p #交互模式
-P n #允许的最大线程数量为n
-s[大小] #设置传递参数的最大字节数(小于131072)
-x #大于-s设置的最大长度结束 xargs命令执行
不支持管道的命令可以用管道技术xargs
which cat|xargs ls -l #ls不支持输入,将左侧命令转换成参数
ls |xargs rm -fv #rm
ls|xargs cp -rvt /tmp/ 或者 ls|xargs -I St cp -rv St /tmp/ #用St代替前面输出
ls|xargs mv -t /tmp 或者 ls|xargs -I St mv {} /tmp
#给文件加后缀
ls|grep .txt|xargs -i mv {} {}.ios #列出|找到相同名称内容的文件|作为参数给到mv修改名字
#给文件减少后缀 引号不可以少
ls|sed 's/.ios//'|xargs -t -i sh -c "mv {}.ios {}"
#给数字文件名集体加后缀
ls|grep '\<[0-9]*\>'|xargs -i mv {} {}.ios
文本编辑命令
vim是vi发展过来的文本编辑工具,关键字颜色显示
vim安装:yum -y install vim
vim流程图:
#1、命令模式光标跳转
G #光标跳转到最后一行第一个字符
gg #光标跳转到顶端
Ngg #光标跳转至当前文件内的N行
$ #跳转到当前行的尾端
^|0 #任意一个,到达当前行的首部
e E #光标移动到当前单词的尾部如果是单词末尾,到下一个单词的末尾(大写字母,略过空格)
w W #将光标移动到下一个单词的词首(大写字母,略过空格)
b B #将光标移动到上一个单词的词首(大写字母,略过空格)
#2、文件内容较多
ctrl+f #往下翻页(行比较多)
ctrl+b #往上翻页
#3、复制与粘贴
yy #复制当前光标所在行
Nyy #复制当前光标及向下N行
p #粘贴至当前光标下一行
P #粘贴至当前光标上一行
#4、删除、剪切、撤销
dd #删除当前光标所在行
Ndd #删除当前光标及向下N行
dG #删除当前光标以后的所有行
D #删除当前光标及光标以后的内容
x #删除当前光标标记往后的字符
X #删除当前光标标记往前的字符
dd & p #剪切,先删除dd,后粘贴p
#5、替换
r #替换当前光标标记的单个字符
R #进入Replace模式,连续替换,Esc结束
小Tips
查看标准输入输出设备
ls -l /dev/std*
查看某个指令进程情况
ps -ef|grep [c]