Linux进阶命令

  • 查找
    • man
    • help: 内建
    • whatis
    • which
    • whereis
    • find
    • locate
    • grep
  • 目录
    • ls
    • pwd
    • cd
    • tree
    • mkdir
    • rmdir
    • rm
  • 文件
    • cat
    • cp
    • od
    • stat
    • diff
    • sort
    • uniq
    • cut
    • comm
    • split
    • sed
    • awk
    • wc
    • paste
    • dc
    • bc

网络

  • ping
  • ifconfig
  • whois

性能

  • execsnoop

安全与攻防

  • openssl
  • nmap
  • tshark
  • kali

command list

ac: 打印用户连接时间的统计数据

  • ac: /var/log/wtmp 由 init(8) 和 login(1) 维护
    • -d name 输出登录用户name的登录时间(详细时间),当前登录用户可缺省name只要-d
    • -p 输出所有用户的登录时间(累积时间)

alias: 命令别名

  • alias
    • alias 新的命令='原命令 -选项/参数
    • unalias 命令
      • unalias -a 删除所有
    • 查看别名
      • alias 命令
      • 命令 ^+alt+E
    • 执行命令而不是别名
      • 使用绝对路径
      • 在命令前加反斜杠(\)
    • 别名配置
      • ~/.alias
      • .bashrc
    • bash中使用alias
      • shopt -s expand_alias
      • 子进程:login shell会读系统和用户的profile和rc文件
        • chmod +x test.sh
        • bash --login test.sh
#!/bin/bash --login  
shopt expand_aliases
shopt -s expand_aliases
shopt expand_aliases
alias
ll

返回目录

apt(dnf, yum)

apt

  • 包管理器是⽅便软件安装、卸载,解决软件依赖关系的重要⼯具
    • CentOS、RedHat 使⽤ yum 包管理器,软件安装包格式为 rpm
    • Debian、Ubuntu 使⽤ apt 包管理器,软件安装包格式为 deb
    • Fedora 使⽤ dnf 包管理器,软件安装包格式为rpm
  • apt
    • search:搜索软件
    • show:查看软件包信息,详细的安装细节
      • show depends 查看软件包依赖关系
    • install:安装软件
    • update:更新软件包列表
    • upgrade:更新已安装的软件包
    • full-upgrade:在升级软件包时自动处理依赖关系
    • remove:卸载一个软件包但是保留相关的配置文件
    • purge: 卸载一个软件包不保留相关的配置文件
    • autoremove: 自动删除不需要的包
    • clean:删除软件包的备份
    • edit-sources:编辑源列表 /etc/apt/sources.list
  • ref

dnf: 新一代的rpm软件包管理器

dpkg

rpm

  • rpm 包格式: 软件名称 软件版本 系统版本 平台
    • vim-common-7.4.10-5.el7.x86_64.rpm
  • rpm
    • -q : 查询软件包
    • -i : 安装软件包
    • -e : 卸载软件包
  • cheatsheet
    • rpm -i xxx.rpm: 安装
    • rpm -qa | grep xxx:查找
    • rpm -qa | more: 列表
    • rpm -e xxx: 卸载,不能有.rpm
    • rpm -qf /usr/bin/rpm: 属于哪个安装包
    • 升级rpm 格式内核
      • 查看内核版本:uname –r
      • 升级内核版本 yum install kernel-3.10.0
      • 升级已安装的其他软件包和补丁 yum update
    • 内核代码
      • 安装依赖包:yum install gcc gcc-c++ make ncurses-devel openssl-devel elfutils-libelf-devel
      • 下载并解压缩内核:https://www.kernel.org
      • tar xvf linux-5.1.10.tar.xz -C /usr/src/kernels
      • 配置内核编译参数:
        • cd /usr/src/kernels/linux-5.1.10/
        • make menuconfig | allyesconfig | allnoconfig
      • 使⽤当前系统内核配置
        • cp /boot/config-kernelversion.platform /usr/src/kernels/linux-5.1.10/.config
      • 查看 CPU: lscpu
      • 编译: make -j2 all
      • 安装内核: make modules_install make install
  • rpm 包的问题
    • 需要⾃⼰解决依赖关系
    • 软件包来源不可靠
  • ref

yum

  • yum

    • yum search xxx:搜索软件包
    • yum install xxx
    • yum remove xxx
    • yum list
    • yum grouplist
    • yum groupinstall xxx
  • 其他

    • CentOS yum 源
    • 国内镜像
    • yum 配置⽂件:/etc/yum.repos.d/CentOS-Base.repo
      • wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

snap

  • snap
    • sudo snap list: 列出计算机上所有snap安装情况
    • sudo snap find <软件包名>:在应用商店中查找snap
    • sudo snap install <snap软件包名>:安装Snap软件
    • sudo snap refresh <snap软件包名>:更新Snap软件
    • sudo snap refresh all:更新所有的snap软件包
    • sudo snap revert <snap软件包名>:要将Snap还原到以前安装的版本
    • sudo snap remove <snap软件包名> :卸载snap软件
  • ref

返回目录

at :在指定时间执行命令或脚本

返回目录

awk

返回目录

bash

返回目录

bc ( dc, expr, (()), [] )

  • bc

    • 参数:
      • i 强制交互模式
      • l 使用bc的内置库,bc里有一些数学库,对三角计算等非常实用;
      • q 进入bc交互模式时不再输出版本等多余的信息。
    • 特殊变量
      • ibase,obase 用于进制转换,ibase是输入的进制,obase是输出的进制,默认是十进制;
      • scale 小数保留位数,默认保留0位。
    • 进制转换
      • 十进制转其它
        • echo “obase=2; 10” | bc 结果:1010
        • echo “obase=8; 100” | bc 结果:144
        • echo “obase=16; 100” | bc 结果:3E8
      • 其他进制转十进制
        • echo “ibase=2;obase=1010;1010” 结果:10
        • echo “ibase=8;obase=12;144” 结果:100
        • echo “ibase=16;obase=A;3E8” 结果:1000
      • shell
        • echo $((16#122)) 或者 echo $((0x122)) # 16 进制转10进制
        • echo $((2#1010)) # 2 进制转10进制
        • echo $((8#122)) # 8 进制转10进制
  • dc: 负数用_下划线,不能用减号

    • 显示命令

      • P:弹出堆栈最顶端的值不显示
      • p:输出堆栈最顶端的值不弹出
      • n:弹出堆栈最顶端的值显示,不换行
      • f:显示堆栈的所有内容
      • q :退出
    • 运算类型

      • + 加: 弹出w1, w2 把 w1 + w2 压栈
      • - 减
      • * 乘
      • / 除
      • % 余数 w1 % w2
      • ~ 依次将w2/w1与w2%w1压栈,先压/ 再压 %
      • ^ 指数: w1 ^ w2
      • v 开方 sqrt(w1)
      • | 依次弹出w1 w2与w3,将 w3 ^ ((int)w2) (mod w1) 压栈。w1 w3 需为整数
    • 栈操作:

      • c : 清空栈
      • d : 将栈顶元素复制并压栈
      • r : 交换栈顶嘴上两元素
    • 非交互选项

      • dc -e “expression” <==> echo “expression” | dc
        • dc -e “3 2 + p” <==> echo "3 2 + p " | dc
      • dc -f expressionfile
    • 交互

      • 3 2 + p 打印结果
  • expr : 多功能计算器

    • 书写规则
      • 用空格隔开每个项
      • 将反斜杠(\)放在 Shell 特殊字符前面。
      • 对包含空格和其他特殊字符的字符串用引号括起来。
    • 四则运算
      • expr \( 10 + 10 \)\* 2 + 100
      • expr 10 + 10
      • expr 20 - 10
      • expr 20 / 2
      • expr 10 \* 10
      • expr 10 \% 10
    • 逻辑运算
      • |
      • &
      • =, >, >=, <, <=, !=
    • 字符串
      • match STR REGEX
        • :: MAC
      • substr STR POS LEN
      • index STR SUBSTR
      • length STR
  • (( )) & [] : 算术逻辑运算

    • 运算符号全部不需要转义
    • 运算符
      • | 位或
      • || 若前后两者都不为0,则返回1,否则返回0
      • & 位与
      • && 若前者为0,不再对后者进行处理,否则对后者处理,后者不为0时返回1
      • <
      • <=
      • ==
      • !=
      • >=
      • >
      • +
      • -
      • *
      • /
      • %
  • ref

返回目录

bzip2

cat (echo printf hexdump od xxd): 二进制,文本输出

cat

  • 参数:
    • -n: 打印行号
    • -b: 打印行号,空白行不编号

echo:打印字符串和变量值

  • 无引号,单引号,双引号
    • 单引号将所有字符都看成普通字符
    • 双引号会解释$、\和`这三种特殊字符
    • 不加引号会解释所有特殊字符
    • cheatsheet:
      • 打印双引号
        • echo ‘“Hello World”’
        • echo ““Hello World””
  • 参数
    • -n: 去除换行符,默认添加换行符,也可以通过-e控制
    • -e: 激活转义字符
      • echo测试颜色
        • echo -e “\033[文字背景颜色;文字颜色m 你要显示的内容 \033[0m”
          • -e 选项∶表示允许反斜杠(对字符)转义。
          • \033[颜色 1;颜色2m∶ 称为转义序列,它本身是一个整体,中间不要有空格。
            • \033[∶转义序列的开始。其中\O33 代表 Esc 符号,也可以使用\E\e来代替
            • 颜色1和颜色 2∶表示字体的前景色或背景色,至于颜色1和颜色2哪一个表示前景色,哪一个表示背景色,由其设定的数值来决定,前景色和背景色的数值空间是不同的。
            • m∶ 转义序列的终止标志。
          • \033[0m∶ 表示将颜色恢复回原来的配色。
          • tput
            • tput setab∶ 用于设置背景色;
            • tput setaf∶ 用于设置前景色。
            • 颜色
              • 0 黑色
              • 1 红色
              • 2 绿色
              • 3 黄色
              • 4 蓝色
              • 5 洋红色
              • 6 黄色
              • 7 白色
      • echo 写二进制文件
        • echo -e -n “\x11\x22” > test
第一种方法∶ 定义颜色变量#!/bin/bash
# 定义颜色变量,还记得吧,\033、\e和\E是等价的
#红
RED='\E [1; 31m'
# 绿
GREEN='\E [1;32m'
黄
YELOW='\E [1;33m'
蓝
BLUE='\E [[1; 34m'
# 粉红
PINK='\E[1; 35m'
# 清除颜色
RES= '\E [0m'
# 真正使用时,我们通过echo -e来调用 
echo -e"s{RED}Red colorS(RES)" 
echo -e"${YELOW}Yelow color${RES}" 
echo -e "${BLUE}Blue color${RES}" 
echo -e"${GREEN}Green color${RES)" 
echo -e "${PINK}Pink color${RES}"

这种方法的原理是,把转义序列定义为变量,echo 时直接引用变量就行了。


第二种方法∶定义颜色动作#!/bin/bash
# 定义颜色动作,把echo -e也定义到变量中 
SETCOLOR_SUCCESS="echo -en \\E[1;32m" 
SETCOLOR_FAILURE="echo -en \\E[1;31m" 
SETCOLOR_WARNING="echo-en \\E[1;33m" 
SETCOLOR_NORMAL="echo -en \\E[0;39m"

# 使用时直接调用颜色动作即可
sSETCoLOR_SUCCESS && echo SUCCESS 
SSETCOLOR_FAILURE && echo FAILURE 
SSETCOLOR_WARNING && echo WARNING
$SETCOLOR_NORMAL && echo NORMAL

head

  • head
    • -n<数字>:指定显示头部内容的行数;
    • -c<字符数>:指定显示头部内容的字符数;
    • -v:总是显示文件名的头信息;
    • -q:不显示文件名的头信息。

hexdump

  • -C:hexdump -C <===> od -tx1 -tc

less: less is more

more

  • more
    • -<数字>:指定每屏显示的行数;
    • +<数字>:从指定数字的行开始显示。
    • -c:不进行滚屏操作。每次刷新整个屏幕;

printf

  • printf
    • printf 输出格式 输出字符:类C

od

  • od
    • -txN:N个字节用16进制显示
    • -tdN:N个字节用10进制显示
    • -tc: 字符显示

tail

  • tail
    • -n<N>或——line=<N>:输出文件的尾部N(N位数字)行内容。
    • -f<name/descriptor>或;--follow<nameldescript>:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;

xxd

  • xxd
    • -c :每列多少字节,默认16,一般8,16,32
    • -g :几个字节一组,默认2
    • -l: 总共显示多少字节
    • -b :二进制位串显示,可以用bc实现类似功能
    • -i:用C语言字节数组定义的方式显示各个字节
    • -ps:以 postscript的连续16进制转储输出,也叫做纯16进制转储。
    • -r:数字用ASCII码实现,逆向转换。将16进制字符串表示转为实际的数
      • echo -n "0000000: 3331 0a" | xxd -r
    • -u:大写字母显示A-F,默认小写字母
  • ref

返回目录

cd

  • 绝对路径,相对路径
  • cd ~: go home
  • cd -: 上一个目录
  • cd .
  • cd …
  • .bash_profile
    • CDPATH
      • export CDPATH=.:~:/etc:/var
    • alias
      • alias cd…=“cd …”
      • alias cd…=“cd …/…”
      • alias cd…=“cd …/…/…”
      • alias cd…=“cd …/…/…/…”
      • alias cd…=“cd …/…/…/…/…”
    • shopt –s cdspell # 自动纠正cd命令的目录名输入错误, ubuntu2020不支持
      • shopt -s 查看
    • mkdircd
function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; }
## rocedu

set -o vi # vi mode in shell  

export CDPATH=.:~:/etc:/var  #CDPATH

# 多级cd
alias cd..="cd .."
alias cd...="cd ../.."
alias cd....="cd ../../.."
alias cd.....="cd ../../../.."
alias cd......="cd ../../../../.." 

# mkdircd
function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; }

  • 目录栈
    • dirs:显示目录栈
    • pushd:将目录压入目录栈
    • popd:将目录弹出目录栈

返回目录

chmod

clear:清除当前屏幕上的信息

  • clear
  • cf. cls (Windows, clear screen)

返回目录

comm

  • comm
    • -1:不显示只在第一个文件出现的内容;
    • -2:不显示只在第二个文件中出现的内容; f2
    • -3:不显示同时在两个文件中都出现的内容。交集
    • 用法
      • comm -12 f1 f2:显示交集
      • comm -13 f1 f2:显示f2-f1
      • comm -23 f1 f2:显示f1-f2

返回目录

cp

  • cp:copy
    • cp src dst
    • -R/r:复制目录要用-r,递归处理,将指定目录下的所有文件与子目录一并复制;
    • -f:强行复制文件或目录,不论目标文件或目录是否已存在;
    • -i:覆盖既有文件之前先询问用户;
    • -p:保留源文件或目录的属性;
    • -a:与"-dpR"参数相同
    • -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
    • -b:覆盖已存在的文件目标前将目标文件备份

返回目录

crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

返回目录

curl

返回目录

cut: 显示行中的指定部分,删除文件中指定字段

  • cut

    • 可以将一串字符作为列来显示:
      • N-:从第N个字节、字符、字段到结尾
      • N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段;
      • -M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。
    • 某个范围的字节、字符指定为字段:
      • -b 表示字节;
      • -c 表示字符;英文同-b, 中文就不一样了,可以用-nb
      • -f 表示定义字段。
    • -d D 指定分割符,默认分隔符是tab
  • cheatsheet

    • cut -d: -f1 /etc/passwd :Displays the unix login names for all the users in the system.
    • free | tr -s ’ ’ | sed ‘/^Mem/!d’ | cut -d" " -f2 :Displays the total memory available on the system.

返回目录

date

mm——代表月份
dd
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值