Linux学习笔记三

认识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

原文地址:https://www.cnblogs.com/wlc297984368/p/7643017.html