欢迎各位兄弟 发布技术文章
这里的技术是共享的
文本排序:
sort 默认是 asii 码升序排列的 以行的排序的 不是改变文件内容的
-n (numeric ) 数值排序
-r (reverse) 反过来排序 逆序 降序
-t -t, --field-separator字段分隔符 (-t, --field-separator=SEP use SEP instead of non-blank to blank transition)
-k 表示从以第几个位置为准排序 (-k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1))
-u 排序后相同的行只显示一次 (-u, --unique with -c, check for strict ordering;
without -c, output only the first of an equal run)
-f 排序时表示忽略字符大小写 ( -f, --ignore-case fold lower case to upper case characters)
sort -u 有个 uniq 命令
uniq 它会去掉相连且重复的行
-d 只显示重复的行
-D 显示所有重复的行
-c 重复的行只显示一次,且告知显示了几次
# cat /etc/fstab
# sort /etc/fstab
#nano sort.test
#man sort
# sort -t: -k3 /etc/passwd
# sort -t: -k3 -n /etc/passwd
#uniq sort.test
文本统计
wc (word count) # 在默认的情况下,wc将计算指定文件的行数、单词数,以及字节数。
-l (-l, --lines)()只显示行数
-w ( -w, --words) 只显示单词数
-c (--bytes) 只显示字节数
-c, --bytes
print the byte counts
-m 只显示字符数
-m, --chars
print the character counts
-L 表示最长的一行包含多少字符数
-L, --max-line-length
print the length of the longest line
# wc /etc/fstab
# man wc
# wc -l /etc/fstab
# wc -w /etc/fstab
# wc -c /etc/fstab
# wc -m /etc/fstab
# wc -L /etc/fstab
#!man (应该表示的是上一个man命令吧)(!在命令前表示执行上一次的命令)
字处理命令:
tr ------转换或删除字符
tr [OPTION]... SET1 [SET2]
-d 表示删除出现在字符集中(-d 后面的所有字符)
#man tr
#tr ab AB
#tr 'ab' 'AB' < /etc/passwd < 是输入重定向
#tr 'a-z' 'A-Z' < /etc/passwd 把小写全部替换成(全部换成)大写
#tr -d 'ab'
bash及其特性
shell: 外壳
GUI: Gnome, KDE, Xfce
CLI: sh, csh, ksh,bash,tsch,zsh
我们使用的是 bash
root, student
程序: 进程
进程: 在每个进程看来,当前主机上只存在内核和当前进程
进程是程序的副本,进程是程序执行的实例
用户工作环境:
bash:
管理员#
普通用户$
tom, jerry
bash--bash 对于父shell的设定,对子shell 是无效的,反之对于子shell的设定,对父shell也是无效的 儿子要另立门户,并不是同一个家
csh 可以交到打开
ksh 可以嵌套 shell
(exit 或者 logout 退出) 此时 为这个用户打开的 shell 也终止了
shell, 子shell
# type bash
# which bash
# bash
# bash
# pstree pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。
# export LANG=en
# pstree
# bash
# pstree
# exit //退出当前的 shell
# pstree
//因为有个 exit 比上面的 bash 少了一个
# exit //又一次退出当前的 shell
# pstree
//因为又有个 exit 比上面的 bash 又少了一个
# exit //当最后一个 shell 时,执行 exit 就退出系统了(退出当前登录)
每个进程 (shell) 并不能意识到其它 shell 的存在,就算是父子关系,也意识不到
# csh
# ksh
bash:
1)命令历史 命令补全
2)管道重定向
3)命令别名
4)命令行编辑
5)命令行展开
6)文件名通配
7)变量
8)编程
命令行编辑:
光标跳转:
ctrl+a: 跳到命令行行首
ctrl+e: 跳到命令行行尾
ctrl+d: 朝后删除下个字符
ctrl+k: 删除光标后面的所有字符 删除光标至行尾的内容
ctrl+u: 删除光标前面的所有字符 删除光标至行首的内容
ctrl+左右箭头: 可惜不支持 (在图形界面窗口中是支持的)
模拟终端啥意思
ctrl+l 也是清屏 与 clear 差不多
命令历史
上下箭头翻出命令历史
history //它是保存在内存缓存区的命令历史 (正常退出的时候会保存在某个文件里
家目录下的 .bash_history 文件里)
-c: 清空命令历史
-d offset [n]: 删除命令历史中第多少个命令 (第二个参数是长度,往后多少个的意思)
-w 表示将缓存区的命令历史至历史文件中
环境变量
PATH: 命令搜索(查找)路径
HISTSIZE: 命令历史(缓冲区)大小 (默认是1000条)
命令历史的使用技巧:
!n 执行命令历史中的第n条命令 # 感叹号 数字
!-n 执行命令历史中的倒数第n条命令 # 感叹号 负数字
!! 执行上一条命令 # 双感叹号 两个感叹号
!string 执行命令历史中最近一个以指定字符串开头的命令 #感叹号 命令前面的字符
!$ 引用上一个命令中的最后一个参数 #感叹号 美元符号
Esc 松开 . 引用上一个命令中的最后一个参数
Alt+. 引用上一个命令中的最后一个参数 (但是远程终端是不支持的)
命令补全:
PATH: Tab键 如果有多个的话 连续两下 Tab键
路径补全
也是 Tab键 如果有多个的话 连续两下 Tab键
# man bash
# clear
# ccat /etc/fstab /etc/rc.d //按住 ctrl+a 到了命令行行首,按住 ctrl+e 到了命令行结尾
# type history
# help history
# history
# history -d 500 //删除命令历史中第500个命令
# history -d 500 10 //删除命令历史中第500个命令及往后10个命令
# echo $HISTSIZE //任何一个变量 都可以用 echo $变量 来获取
# history |more
# history |less
# history
# !441 //执行命令历史中的 441 条命令
#!-4 //执行命令历史中的倒数第4条命令
#cat /tmp/inittab
#nano !$
# cl //Tab键补全 如果不补全的话 按两下 Tab 键 (就会显示多个值)
#cd /etc/sysc //Tab键补全 如果不补全的话 按两下 Tab 键 (就会显示多个值)