以下为个人学习笔记整理

# Linux 学习笔记

# Linux 目录结构

  • /bin : binary,存放二进制文件,普通命令
  • /sbin :system binary,存放系统二进制文件,需要系统权限
  • /user/bin :用户安装的应用程序
  • /user/sbin :超管安装的应用程序

# Linux 基本指令

  • pwd :查看路径
  • ls :查看目录下文件
  • clear :清屏
  • rm filename :删除文件 -d 可以删除文件夹
  • mv file/dir dir :移动 [文件 / 文件夹] 到某个目录下
  • cp file/dir file/dir :复制 文件/文件夹目录下/文件内 ,复制文件夹需要加 -r
  • id :查看用户信息
  • find dir -name filename : 搜索文件
  • locate filename : 搜索文件 (比 find 更快但可能更新不及时)
  • cat filename : 查看 / 创建文件
  • more filename : 按分页查看文件
  • vim fimename : 编辑文件
  • cd path : 进入某个文件,如果不加 path 默认回到 ~/ 目录
  • cd - : 返回刚才的目录
  • 'command' : 被 ' 号修饰的字符串则不会被执行
  • scp [可选参数] file_source file_target : 远程拷贝文件
  • watch [可选参数] command : 每隔一段时间执行一次指令
  • echo string : 输出(用于简单的输出)
  • /dev/null : 位桶,一般用来承上启下,在写入操作不必要但必须执行的时候可以用位桶写入一个不需要自己关注的地方
  • cut : 对内容进行裁剪
  • join : 合并文件内容,每一条记录都有一个 key,相同 key 可共享(合并后会成为一条记录)
  • sort : 排序,可根据键 / 值 / 数据类型等对行内容进行排序(排序并不稳定)
  • fmt : 格式化排版,部分 Linux 可能没有
  • wc : 统计行数、字数、字节数
  • touch : 创建文件或修改文件时间属性
  • mkdir : 创建文件夹
  • head / tail -n 行数 : 显示开头和结尾的内容
  • which 指令 : 显示指令的绝对路径
  • /dev/tty : 读取此文件会定位到一个终端窗口,可用于读入人工输入
  • .profile : 每次登录 shell 都会读取的文件,该文件位于 /etc/profile
  • ln file/dir linkname :给 文件/文件夹 创建软连接
  • tr : 字符转换 / 删除操作
  • env : 查看环境变量
  • `command`: 被 ` 修饰的内容会默认当作指令执行。等效于 $(command)—— 更推荐这么用。这样执行相当于在一个新的子 shell 执行命令

# shell 指令

  • set name val : 设置变量
  • unset varname : 删除某个变量
  • bash -vx xx.sh : 调试的方式执行脚本
  • #! /bin/sh - : 作为文件开头等效于 #!/bin/bash
  • program & : 指令后加入 & 可以让指令变成非阻塞式,不需要等到指令执行完便可以做后续操作
  • $variablename : 用来获取变量值
  • programe1 | programe2 : 把左边的内容以右边的格式输出
  • ${int} : 在 shell 函数中作为函数参数
  • command1 && command2 : 1 成功执行了才执行 2(成功是 0,失败是!0)
  • command1 || command2 : 1 执行失败了了才执行 2
  • <<-EOF 内容 EOF : 有点类似 python 的 """xxxxxx""",可以把多行内容打包。 - 可以避免结束的 EOF 前出现空格会报错的问题。 EOF 也可以替换成其他内容,只要保持首尾一致即可。
  • . xx.sh 或者 source xxx.sh : 在当前 shell 执行脚本
  • ./xxx.sh 或者 bash xxx.sh : 在一个新 shell 窗口执行,与上者的区别在于,新窗口执行的操作不会对原窗口产生影响。
  • & : 让程序在后台执行
  • (command1;command2) : 在子 shell 中执行不影响当前 shell 环境,功能类似 bash xxx.sh
  • read -p string var : 键盘输入的值赋给 var 变量 -p string 可以在输入前给用户提示
  • export : 被 export 修饰的变量会变成环境变量,作用所有 shell 和子 shell

# login shell && nologin shell

# login shell:

su - username

# 登陆时会执行下面的四个文件

/etc/profile/etc/brashrc~/.bash_profile~/.bashrc

# nologin shell:

su username

# 登陆时会执行下面的两个文件

/etc/brashrc~/.bashrc


# 系统级 (登陆时执行):

/etc/profile

/etc/brashrc

# 用户级 (强两个登陆时执行,后两个登出时执行):

~/.bash_profile

~/.bashrc

# 用户级登出

~/.bash_logout

~/.bash_history

# history & !

  • history : 查看历史命令
  • !数字 : 执行某条历史命令
  • !字符串 : 执行最近执行过的一条命令,必须和字符串匹配才行
  • !$ : 获取上一个命令的最后一个参数
  • !! : 执行上一个命令

# 别名 alias

  • alias : 查看当前 shell 命令别名
  • unalias 别名 : 取消别名 或者在命令前加个 \ 例如: alias ls='ls --color=auto' 在执行 ls 的时候默认执行 ls --color=auto 取消别名可以 unalias ls 后执行 ls 或者 \ls
  • alias xxx='xxxx' : 定义临时别名
  • 想要定义永久别名就在 ~/.bashrc 里面加上 添加别名的语句 例如: alias ls='ls --color=auto'

# Linux 快捷键

  • ctrl+l : 清屏
  • ctrl+v : 块选择,编辑文本很好用
  • ctrl+r : 查找历史命令
  • ctrl+d : 退出 linux
  • ctrl+a : 光标移动到指令最前面
  • ctrl+e : 光标移动到指令最后面
  • ctrl+u : 删除光标前的内容
  • ctrl+k : 删除光标后的内容
  • ctrl+y : 撤销上一步操作
  • ctrl+s : 锁屏,即看不到指令的输入和结果
  • ctrl+q : 解锁,锁屏的反向操作
  • ctrl+z : 暂停进程,一般用于 vim 编辑文件时暂停去做其他事务,之后通过 fg 切回暂停的进程

# 输入输出重定向

  • < filename : 从文件读入数据输入到 < 左边
  • > filename : 把结果输出重定向到文件内
  • >> filename : 把结果输出重定向到文件结尾,结果一般是整数表示是否执行成功
  • << filename : 把结果输入重定向到文件结尾,结果一般是整数表示是否执行成功
设备设备名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/stdout1标准输出
显示器/dev/stderr2标准错误输出

常规用法:

  • cat xxx.txt 1>xxx1.txt : 把 xxx.txt 的标准输出重定向到 xxx1.txt 中
  • cat < xxx.txt : 把某文件内容作为 cat 输入
  • cat > xxx.txt < xxx1.txt : 把 xxx1.txt 内容作为 cat 的输入,并把 cat 的输出作为 xxx.txt 的输入
  • &> : 混合输出,把上述的 1,2 两种输出内容一起输出

# 管道 && T 管道

  • cat xxx.txt |grep a |grep b : 管道过滤
  • cat xxx.txt |grep a |tee xxx1.txt |grep b : 可以把 grep a 的过滤结果输出到 xxx1.txt 在执行后面的过滤
  • cat xxx.txt |grep a |tee -a xxx1.txt |grep b
    -a 表示追加写入到 xxx1.txt

# 匿名管道 |

特征:

  1. 单向通讯
  2. 只支持父子进程通信,不支持跨进程

# 命名管道

特征:

  1. 可以跨进程通信
  2. 可以作为文件访问
  3. 先进先出原则
  • mkfifo name : 创建命名管道

# echo 颜色输出

  • echo -e "\e[1;31m content \e[0m" : 输出一段红色内容,其中 \e[1;xxm 表示设置颜色 \e[0m 表示重置为原本颜色
前景背 景颜色
3040黑色
3141红色
3242绿色
3343黄色
3444蓝色
3545紫红
3646青蓝
3747白色

文字颜色是 30-37m,背景颜色是 40-47m

代码含义
0OFF
1高亮显示
4underline
5闪烁
7反 白显示
8不可见

# if 条件语句

基本结构 :

if [  ];then
    :   #什么都不做可以用:
else
fi

示例:

cat xxx.txt
if [ $? -eq 0 ];then
    echo "cat success"
else
    echo "cat fail"
fi

注意 [] 符号中间要有空格

# 预定义变量

指令含义格式
$0脚本名带路径的脚本名。想得到脚本名,可以在执行时用 basename 修饰,如果只需要路径可以用 dirname 修饰
$*所有参数"$1 $2 $3 ..."
$$当前进程 PID数字
$!上一个后台进程 PID数字
$#参数个数数字
$@所有参数"$1" "$2" ...

# 位置变量

  • $1 $2 $3 $4 $5 $6 $7...

# 整数运算

  • expr int + int : 计算两个整数 + - \* / %
  • $((int + int)) : 计算两个整数 + - * / %
  • $[int + int] : 计算两个整数 + - * / %
  • let varname=int+int : 计算两个整数 + - * / %

# 小数运算

  • "float+float"|bc
  • awk 'BEGIN{print float/float}'
  • "float+float"|python

# ${} 和变量内容的删除

# 替换

以下操作,不会修改变量

  • ${varname} : 用来获取变量值
  • `$
更新于 阅读次数

请我[恰饭]~( ̄▽ ̄)~*

鑫酱(●'◡'●) 微信支付

微信支付

鑫酱(●'◡'●) 支付宝

支付宝