bash 快捷键
Ctrl+ L 相当于clear
+a 跳转至命令首部
+e 跳转至命令结尾处
+c 取消命令的执行
+u 删除命令首至光标出的所有内容
+k 删除光标所处至命令结尾的所有内容
-------------------------------------------------------------------------------
bash 的I/O重定向 及管道
程序:指令+数据结构
读入数据:input
输出数据:Output
打开的文件都有一个fd:file descriptor (文件描述符)
标准输入keyborad,0
标准输出:monitor ,1
标准错误输出: monitor,2
------------------------------------------------------------------------------
I/O 重定向: 改变标准位置
输出重定向: 命令 >新位置 命令>> 新位置
COMMADN> NEW_POS CONMMADN>> NEW_POS
>覆盖重定向 目标中的原有内容会被消除
>> :追加重定向 新内容会追加至目标文件尾部
#set -C:禁止将内容覆盖已有文件中
强制覆盖;>|
#set +C
2> :覆盖重定向错误输出数据流
2>>追加 重定向错误输出数据流
标准输出和错误输出各自定向至不同位置
COMMAND > /path/to/file.out 2> /path/to/prrpr.out
合并标准输出和错误输出为同一个数据流,进行重定向
&/:覆盖重定向
&>>追加重定向
COMMADC > /path/to/file.out 2>&1
COMMADC >> /path/to/file.out 2>>&1
输入重定向,<
tr 删除或者转换字符
tr [OPTION] .. SET1 [SET2]
-d 删除 指定字符
HERE Docoumentation:<<
#cat << EOF
输入的数据以EOF结尾会显示出来
#cat > /path/tp/som << EOf
输入的数据,以EOF结尾,追加至/path/tp/som 中不会显示
---------------------------------------------------------------------------
管道
命令1|命令2|.....
echo "$PATH" | tr 'a-z' 'A-Z' 显示的路径字符以大写显示出来
echo "$PATH" | tr 'a-z' 'A-Z' | tr -d 'u ' 并删除u的字符
echo "$PATH" | tr 'a-z' 'A-Z' | tee /tmp/tee.out
显示的路径信息存储于/tee/tee.out
tee 路径文件
#tee /tmp/tee.out 输入数据显示在屏幕中,并存储至路径文件中
www.jjj
www.jjj (等于创建一个文件并写入数据)
juu
juu
...j
...j
#cat /tmp/tee.out 查看
www.jjj
juu
...j
练习
讲/etc/passwd 文件中的前5行内容转为大写保存至/tep/passwd.out
head -n 5 /etc/passwd |tr 'a-z' 'A-Z' | /tep/passwd.out
将登录至前系统上的用户信息中的后3位信息转换为大写后保存至/tmp/who.out
who | tail -n 3 | tr'a-z' 'A-Z'> /tmp/who.out
显示登录信息
文本处理工具:wc cut sort uniq
wc [OPTION].. [FILE]..
-l line 显示行数
-w words 显示 单词数
-c character 显示字节数
#wc /etc/passwd
34 53 1615 /etc/pssswd
cut
cut /etc/passwd
-d 指明分隔符
-f #
精确的第几个字段
#,#[,#]离散字段的多个字段 如1.2.6
#-# 连续的多个字段
--output-delimiter=STRING
sort
-f 忽略字符大小写
-r reverse 逆序排序
-t DELIMITER 字段分隔符
-k #以指定字段排序
-n以数字大小写排序
-u 相同内容只显示一次 (排序后去重)
sort -t: -k 3 -n /etc/passwd
uniq
uniq 去重命令
-c显示 每行重复出现的次数
-d仅显示重复过的行
-u仅显示不重复的行
Note 连续且完全相同方为重复
练习
去除,/etc/passwd 文件的第6至第10行的各自信息 ;并将这些信息按第3字段的数字大写进行排序
最后仅显示各自的第一个字段
网友评论