饥人谷java体系课

命令行

kernel 内核
shell 壳 通过壳与内核交互
⼴义的命令⾏包括⼀切通过字符终端控制计算机的⽅式
Windows - cmd/PowerShell/Git bash
UNIX/Linux系列:sh/zsh/Terminal, etc

命令行的历史与流派

UNIX家族

  • POSIX标准
  • macOS
  • Linux
  • Windows SubSystem for Linux

命令行是默认的交互方式,GUI(图形界面)是扩展的
Windows

  • 奇葩

图形页面是主要的,命令行是扩展的

命令行的开启

Windows:cmd/PowerShell/WSL
UNIX/Linux:⼀开机就是,不⽤找
macOS:终端

命令行的全部要素

可执⾏程序(Executable)
参数
环境变量(Environment variable)
作⽬录(Working directory)
以上四个要素相同,就可以完全地“重现”⼀个命令
你碰到的各种各样古怪的问题,原因⼀定是上述四个要素之⼀

工作目录

启动命令的路径
相对路径都是相对于这个路径
绝对路劲:从根目录开始的路径
相对路径:相对于当前工作目录的路径

环境变量

进程(Process)

  • 进程是计算机程序运行的最小单位
  • 独占自己的内存空间和文件资源

每个进程都和一组变量相绑定

  • 传递不同的环境变量可以让程序表现出不同的⾏为
  • CLASSPATH/GOPATH

    在进程的fork过程中,环境变量可以被完全继承
    所有的操作系统/编程语⾔都⽀持环境变量
    局部和全局的环境变量()()

    环境变量实战

    通过export/set设置环境变量,通过echo读取环境变量
    • 从Java/Go/Python/Node.js中读取环境变量
    • 向Docker容器传递环境变量
    • 快速传递⼀个环境变量
    • 使⽤环境变量控制程序的⾏为

    可执行程序

    • Windows:exe/bat/com
    • UNIX/Linux:x权限 - 可执⾏权限
    • 去哪⾥找程序?
    • Windows:Path环境变量 + 当前⽬录
    • UNIX/Linux:PATH环境变量
    • 在脚本的第⼀⾏指定解释器(shebang)
    • 别名(alias)
    java -version
    java-可执行程序 -version参数

    参数

    UNIX参数的约定——然鹅Java并不⻦这个约定
    -后面只能一个字符 —后面可以跟一个单词
    参数中包含空格或者字符串
    单引号 强制传递,变量不展开 取消通配符的通配性
    双引号 展开变量
    参数的展开

    输入输出

    • 标准输⼊ stdin
    • 标准输出 stdout
    • 标准错误 stderr
    • 输出的重定向

    xxx.x把标准输出的内容重定向到xxx.x文件(覆盖)

    xxx.x把标准输出的内容追加到xxx.x文件 要将标准输出和标准错误都输出到文件中 2>&1 >xxx.x 先把2号输出重定向到一号输出,再把一号输出重定向到文件

• 覆盖⽂件
• 追加⽂件
• 改变流向
• /dev/null

Linux常用命令

• 进⼊⽬录 cd (change directory)
cd . 进入当前目录
cd ..进入父目录
• 展示⽂件 ls/ll/ls -alth (list)
ls 显示当前文件非隐藏的目录 不显示任何以 . 开头的文件
ls -l ==ll 列出详细信息
ls -a 显示所有文件
la -a -l显示所有文件的详细信息
• 移动/重命名⽂件 mv (move)
mv xx/xxx.xx xx/xxx.xxx 重命名

• 删除⽂件 rm/rm -r/rm -rf (remove)
• 拷⻉⽂件 cp/cp -r (copy)
• 显示变量 echo
• 导出变量 export
• Git系列操作 git pull/push/add/commit/…
• 新建⽬录 mkdir/mkdir -p (make directory)
• 当前⽬录 pwd (print working directory)
• 显示⽂件 cat (concatenate and print files)
• 编辑⽂件 vi

命令行安装maven