zoukankan      html  css  js  c++  java
  • [Linux] Linux命令行与Shell脚本编程大全 Part.1

    终端

    • tty(teletypewriters):控制台,早期计算机通过电传打字机作为输入设备
    • Console:控制台终端,即显示器
    • Ctrl+Alt+T:图形界面终端
    • Ctrl+Alt+F2:tty2
    • Ctrl+Alt+F1:回到图形界面
    • #:root用户(Ctrl+D 或 exit 退出)
    • $:普通用户(通过 sudu su 切换到root)

    操作

    • whoami:用户名
    • hostname:电脑名
    • date:日期
    • ls(list):列出当前目录下的文件和目录
      • -a(all):全部文件,包括隐藏文件
      • -l:列出详细信息
      • -lh(human-readable):适于阅读的
      • -t:按文件最近一次修改时间排序
      • 不同颜色意义(Ubuntu)
        • 蓝色 --> 目录
        • 绿色 --> 可执行文件
        • 红色 --> 压缩文件
        • 浅蓝色 --> 链接文件
        • 灰色 --> 其他文件
    • Tab:补全命令
    • Ctrl + R:查找用过的命令
    • history:列出之前用过的命令(!编号:调用命令)
    • Ctrl + L:用于清理终端的内容
    • Ctrl + D:给终端传递EOF(End Of File 文件结束符)
    • Shift + PgUp:向上滚屏
    • Shift + PgDn:向下滚屏
    • Ctrl + A:光标跳到一行命令开头(Home)
    • Ctrl + E:光标跳到一行命令的结尾(End)
    • Ctrl + U:删除所有光标左侧的命令字符
    • Ctrl + K:删除所有光标右侧的命令字符
    • Ctrl + W:删除光标左侧的一个单词
    • Ctrl + Y:粘贴删除掉的字符

    文件

    • 普通文件:文本、声音、程序等
    • 特殊文件:设备、目录等
    • /:根目录
    • ~:家目录(具体位置与用户有关)
    • 目录命名时用小写英文字母
    • 根目录的直属子目录:
      • bin:二进制文件(可执行程序)
      • boot:启动相关文件
      • dev:设备
      • etc:系统配置文件
      • home:私人目录,每个用户在home下都有一个私人目录
      • lib:库,被程序调用的库文件
      • media:媒体
      • mnt(mount):挂载点
      • opt(optional application software package):可选的应用软件包
      • root:超级用户root的家目录(其他用户位于home下)
      • sbin(system binary):系统二进制文件,系统级的重要可执行程序
      • srv(service):服务
      • tmp(tempory):临时的,普通用户存放临时文件的地方
      • usr(Unix Software Resource Unix):操作系统软件资源,程序安装处
      • var(variable):log文件等
    • pwd(Print Working Directory):打印当前工作目录
    • which:显示一个命令对应可执行程序的位置
    • 命令其实就是一个随时可以被调用的程序
    • .(一个点):当前目录
    • ..(两个点):上一级目录
    • cd(change directory):切换目录(直接cd会返回家目录)
    • du(disk usage):磁盘使用
      • -h:适合阅读的
      • -a:显示文件和目录的大小
      • -s(summarize):只显示总大小

    • cat(concatenate):把文件连接界起来打印到标准输出
      • -n:添加行号
    • less:分页显示文件内容
      • 空格:前进一页
      • 回车:前进一行
      • d:前进半页
      • b:后退一页
      • y:后退一行
      • u:后退半页
      • q:退出
    • head:显示文件头
    • tail:显示文件尾
    • touch:创建一个空白文件
    • mkdir(make directory):创建一个目录
      • -p:递归创建目录
    • cp(copy):拷贝文件
      • -r:递归拷贝目录中所有内容
    • mv(move):移动文件或目录,重命名
    • rm(remove):删除
      • -i:确认是否删除
      • -f:强制删除
      • -r:递归删除
    • ln:创建链接
      • ln file1 file2
        • 创建 file2 作为 file1的硬连接
        • file2指向file1的文件内容(inode)
        • 2代表拥有相同inode号的文件数
        • 删除一个对另一个没影响
      • ln -s file1 file2
        • 创建 file2 作为 file1的软连接(快捷方式)
        • file2指向file1的文件名
        • file1和file2的inode号不一样
        • 删除file1后file2就不可用了

     

     

    • locate:快速查找
      • 返回文件路径
      • 查找文件数据库,而不是硬盘
      • 文件数据库每天更新一次
      • sudo update:强制更新
    • find:深入查找
      • find “何处” “何物” “做什么”
      • 何处:指定哪个目录查找
      • 何物:找什么(必须)
      • 做什么:找到后的后续处理
      • 遍历实际硬盘
      • -name:指定文件名
      • -size:指定大小
      • -atime:指定时间
      • -type d:只查找目录
      • -type f:只查找文件
      • -printf:打印
      • -delete:删除
      • -exec:对找到的文件进行操作
    • grep:筛选数据
      • Globally search a Regular Expression and Print
      • 全局搜索一个正则表达式并打印
      • 在文件中查找关键字并显示其所在的行
      • -i:忽略大小写
      • -n:显示行号
      • -v:显示文本不在的行
      • -r:在所有子目录和子文件中查找
      • -E:使用正则表达式
    • sort:文件排序
      • -o:将排序后内容写入新文件
      • -r:反排序
      • -R:随机排序
      • -n:对数字排序
    • wc:文件统计
      • word count
      • 行数,单词数,字节数
      • -l:统计行数
      • -w:统计单词数
      • -c:统计字节数
      • -m:统计字符数
    • uniq:删除文件重复内容
      • -c:统计重复行数
      • -d:只显示重复行的值
    • cut:剪切文件部分内容
      • -c:根据字符数剪切
    • 重定向
      • >:将命令的输出结果重定向到指定文件中(覆写)
        • cut -d , -f 1 notes.csv > students.txt
      • >>:将命令的输出结果重定向到指定文件的末尾
      • 2>:将标准错误输出重定向到指定文件中(覆写)
        • cat not_exist_file.csv > results.txt 2> errors.log
        • 将标准输出重定向到 results.txt 文件中
        • 将标准错误输出重定向到 errors.log 文件中
        • 假如 not_exist_file.csv 这个文件确实存在,将其内容写入 results.txt 文件中
        • 假如 not_exist_file.csv 这个文件不存在,将错误信息写入 errors.log 文件中
      • 2>>:将标准错误输出重定向到指定文件的末尾
      • 2>&1:合并输出
        • cat not_exist_file.csv > results.txt 2>&1
        • 将所有输出(标准输出和标准错误输出)都重定向到 results.txt 文件中
        • cat not_exist_file.csv >> results.txt 2>&1
        • 追加错误信息到 results.txt 文件中
      • <:从文件读取
        • cat < notes.csv
        • 效果和 cat notes.csv 一样
      • <<:将键盘的输入重定向为某个命令的输入
        • sort -n << END
        • 从键盘输入字符并排序,END结束
        • sort -n << END > numbers_sorted.txt 2>&1
        • 将排序结果连同错误信息都输出到numbers_sorted.txt

     

    • 管道
      • 命令1的输出变成命令2的输入
      • cut -d , -f 1 notes.csv | sort > sorted_names.txt
        • 剪切文件部分内容并排序输出到另一个文件
      • du | sort -nr | head
        • 查看当前目录下按参数排序的前十个子目录
      • sudo grep log -Ir /var/log | cut -d : -f 1 | sort | uniq
        • sudo grep log -Ir /var/log :遍历 /var/log 这个目录及其子目录,列出所有包含 log 关键字的行
        • cut -d : -f 1 :从输出结果中只剪切出文件名那一列(由冒号分隔)
        • sort :将文件名的列以首字母的字典顺序进行排序
        • uniq :去掉重复的文件名

    参考

    Linux命令大全

    https://man.linuxde.net/

  • 相关阅读:
    枚举类型或运算
    设置字体同时为粗体、斜体
    批量处理任务进度条控制—基于BackgroundWorker
    PyCharm终端执行python脚本报错:ModuleNotFoundError: No module named 'lib.apilib'
    PyCharm用pytest模式执行python脚本不生成allure测试报告
    Python3+Appium基于安卓平台的app自动化
    JMeter上一个接口返回数据作为下一个接口的参数应用
    JMeter安装及语言切换
    Python之序列化和反序列化
    Requests库发送post请求,传入接口参数后报JSON parse error
  • 原文地址:https://www.cnblogs.com/cxc1357/p/12465250.html
Copyright © 2011-2022 走看看