认识bash shell
图形界面shell
命令行shell
shell 是一个命令解释器
分为交互式和非交互式
type -a pip 可以代替which 查找可执行文件位置
echo $PATH
alias 查看命令别名
alias lm='ls -al | more' 给命令起别名
unalias lm 删除别名
ctrl + u 删除当前行上输入的命令
ctrl + r 搜索history == !string
ctrl + w 删除命令中的最后一个词
bash优点
命令记忆功能 1000条命令
指令 文件名补全
万用字符与特殊字符
*代表0到多个字符或者数字
?代表一个字母
对特殊字符进行转义还原成一般字符
~ 使用者的家目录
|分隔两个管道命令的界定
美元符号 放在变量之前
假设有abc1 abc2--abc5 5个文件
[] cp abc[1-3] folder 将abc1 abc2 abc3 拷贝到folder里边
[] cp abc[!1-3] folder 将abc4 abc5 拷贝到folder里边
[] 里面的字符是一个一个的执行 123 就是执行1,执行2 执行3
减号用来表示范围
uname --all
Linux localhost.localdomain 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
cd /lib/modules/$(uname -r)/kernel/fs 括号中间为子shell的起始和结束
cd /lib/modules/`uname -r`/kernel/fs 引用 里面可以放置先执行的命令
数据流重定向
ls -l > 1.txt >覆盖
ls -l >> 1.txt >>追加
find /wlc -name 1.txt > right 2> error 查找文件1.txt 将正确信息存到right 错误信息保存到error
cat > 1.txt <<eof 向1.txt中添加内容以eof结束
命令执行的判断依据
command1 ;command2 命令1不管正确错误二都会执行
command1 && command2 命令1正确执行二才会执行
command1 || command2 命令1执行错误二才会执行
管道命令
管道命令只能处理前面一个命令传过来的正确信息也就是标准输出
选取命令 将一段数据进行分析后取出我们想要的部分 通常是经过逐行分析得到的
echo $PATH | cut -d ':' -f4 剪切path 以:为分割的第四段
echo $PATH | cut -d ':' -f4-6 剪切path 以:为分割的第四到六段
cut 参数:
-d 分割字符
-c 字符范围 12-18
-f 选择第几段
last | cut -d “ ” -f1 |sort 对最近登录的用户以第一个字段(username)进行排序
last | cut -d “ ” -f1 |uniq -c 对最近登录的用户以第一个字段(username)进行统计(uniq区别于sort)显示(登录次数 username)但是不排序
cat /etc/passwd |grep 'mlgrp'
mlgrp:x:1007:1008::/home/mlgrp:/bin/zsh =等同于= grep 'mlgrp' < /etc/passwd
last | grep -c 'mlgrp' 统计mlgrp最近登录的次数
sort -t ':' -k 3 -n< passwd 对每一行以:分割的字符串的第三段(纯数字形式)排序结果
sort -t ':' -k 3 -nr< passwd 对每一行以:分割的字符串的第三段(纯数字形式反向排序)排序结果
sort -t ':' -k 3 < passwd 对每一行以:分割的字符串的第三段(没有-n 则对每一个字符排序78 在 502 之后)排序结果
sort参数:
-k 按哪个字段进行排序
-t 后面接分隔符
-u 重复内容只显示一次
-r 反向排序
-n 纯数字进行排序
wc 1.txt 显示文件行数 单词数 占用的字节数 -l 行 -w 单词数 -m占用字节数
UTF-8 一个中文占用三个字节
echo $PATH | tr -d ":" tr删除指定字符
echo $PATH | tr -s ":" "|" tr对指定字符进行替换
tr "[a-z]" "[A-Z]" < 1.txt 将小写全部转化为大写
col&expend
^I tab键 8个空格
^H backspace键
$ 换行符
tail /etc/man.config |col -x |cat -A :col -x 将tab键的^I字符转变成对应的空格 使得cat -A 不会显示 ^I 如果某一行只有tab键则不进行空格显示
tail /etc/man.config |expend |cat -A :col -x 将tab键的^I字符转变成对应的空格 使得cat -A 不会显示 ^I 如果某一行只有tab键进行空格显示
tail /etc/man.config |expend -t 10|cat -A :col -x 将tab键的^I字符转变成对应的空格 使得cat -A 不会显示 ^I extend -t 指定空格显示个数
join
join -t ":" -1 4 passwd -2 3 group | cat -n: 第一个文件passwd的第四个关键字 和第二个文件group的第三个关键字 进行连接 关键字不重复显示(两个文件分隔符全部都是:才可以)
tr -s ":" ";" <group >group2 将文件group内容的分隔符:换成; 并且保存到新的文件group2
paste
paste passwd group 将文件二与一放到一块显示 以tab键分隔进行粘贴
paste -d ":" passwd group 将文件二与一放到一块显示 以:键分隔进行粘贴
tail -n 4 passwd | paste -d "=" group -: 最后的-代表最前边作为标准输入也就是把passwd文件的后四行与group进行粘贴到一起
split -b 后接字节数 以该字节进行分割 -l 后接行数 以行数进行分割 原文件名 输出文件的前缀(abc)
split -b 200(字节) passwd pass
split -t 10(行) passwd pass
cat passa* > passwd1 将刚刚分割的文件合并成一个文件
rm -f passa* 删除掉刚刚生成的新文件
xargs 可以批量更改我们找到的文件或者CCC的属性比如
find /home -type d|xargs chmod 755