0%

linux基础指令笔记

linux基础指令学习笔记

⚠️本篇博客只是我刚学习linux指令时的笔记,只用来自己记录

Linux 系统指令

目录


文件基础操作

核心指令

文件管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ls          # 列出目录内容
ls -l # 长格式显示(包含权限信息)
ls -a # 显示隐藏文件
cd ~ # 返回用户目录
pwd # 显示当前路径
cat file # 查看文件内容
cp src.txt dest/ # 复制文件
cp -R dir/ dest/ # 复制目录需要-R参数
mv old.txt new.txt # 重命名文件
mkdir project # 创建目录
rmdir empty_dir # 删除空目录
rm -rf temp/ #强制递归删除目录

# 处理含空格文件名
touch "file name.txt" # 创建带空格文件
ls file\ name.txt # 转义空格查看

内容处理

1
2
3
4
5
wc -l access.log          # 统计行数
diff file1 file2 # 文件差异对比
head -n 20 log.txt # 查看前20行
tail -f service.log # 实时追踪日志更新
grep "error" *.log # 多文件关键词搜索

权限管理

1
2
3
4
5
-rw-r--r-- 1 user group 4096 Jan 1 00:00 file.txt
# 第1位:文件类型(-普通文件,d目录)
# 2-4位:用户权限(rw-)
# 5-7位:组权限(r--)
# 8-10位:其他用户权限(r--)

权限修改

1
2
3
4
chmod u+x script.sh      # 添加用户执行权限
chmod go-w secret.txt # 移除组和其他写权限
chmod 755 executable # 数字模式权限设置(rwxr-xr-x)
chomd 600 id_rsa # 仅文件所有者可读写,其他人无权限

shell脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/bin/bash
# Shell 脚本基础示例

# 变量赋值与引用
VAR="Hello World"
echo "变量内容:$VAR"

# 读取用户输入
read -p "请输入你的名字:" name
echo "你好,$name!"

# 命令行参数处理
echo "执行脚本名:$0"
echo "第一个参数:$1"
echo "参数个数:$#"
echo "所有参数:$@"

# 条件判断
if [ $# -eq 0 ]; then
echo "错误:缺少参数!"
elif [ -d "$1" ]; then
echo "$1 是目录"
elif [ -f "$1" ]; then
echo "$1 是普通文件"
else
echo "未知文件类型"
fi

# 逻辑判断(&& || 逻辑运算)
[ -n "$name" ] && echo "你输入了名字:$name" || echo "未输入名字"

# 循环示例
for i in {1..5}; do
echo "for 循环:$i"
done

# while 循环
count=1
while [ $count -le 3 ]; do
echo "while 循环:$count"
count=$((count + 1))
done

# 读取文件(假设 input.txt 存在)
if [ -f "input.txt" ]; then
while read -r line; do
echo "处理内容:$line"
done < input.txt
else
echo "文件 input.txt 不存在,跳过读取"
fi

# 运算表达式
sum=$((3 + 5)) # 整数运算
mul=$(expr 3 \* 5) # expr 计算
mod=$(expr 10 % 3) # 取模运算
div=$(echo "scale=2; 3/7" | bc) # 浮点运算

# 结果输出
echo "整数求和:$sum"
echo "乘法结果:$mul"
echo "取模结果:$mod"
echo "浮点除法结果:$div"

# 比较符
1. 字符比较
- 相等:[ "$str1" = "$str2" ]
- 不等:[ "$str1" != "$str2" ]
- 空字符串:[ -z "$str" ]
- 非空字符串:[ -n "$str" ]
- 字典顺序比较:[ "$str1" \> "$str2" ] 或 [[ "$str1" > "$str2" ]]

2. 数字比较
- 相等:[ "$num1" -eq "$num2" ]
- 不等:[ "$num1" -ne "$num2" ]
- 大于:[ "$num1" -gt "$num2" ]
- 小于:[ "$num1" -lt "$num2" ]
- 大于或等于:[ "$num1" -ge "$num2" ]
- 小于或等于:[ "$num1" -le "$num2" ]

3. 简化数字比较
使用 (( )) 比较数字:
- 相等:(( num1 == num2 ))
- 大于:(( num1 > num2 ))
- 小于:(( num1 < num2 ))

# 函数示例
greet() {
echo "欢迎,$1!"
}
greet "Shell 学习者"

# 获取当前日期
echo "当前时间:$(date "+%Y-%m-%d %H:%M:%S")"

vim 基础

进入/退出编辑模式

  • i 进入编辑模式,ESC 退出编辑模式,返回命令模式。
  • 在命令模式下:
    • :wq 保存并退出
    • :q! 不保存退出

移动光标

  • HJKL 在命令模式下分别表示:
    • H
    • J
    • K
    • L
  • w 按单词向前移动光标,b 反向移动
  • Ctrl + F (Foreword) 向下翻页 (PageDown)
  • Ctrl + B (Backwards) 向上翻页 (PageUp)
  • 数字 + gg 跳转到指定行
  • 数字 + j/k 跳转多行
  • /关键词 搜索关键字,n 下一个,Shift + N 上一个

复制、剪切、粘贴

  • cc 剪切一行(可加数字,如 c2c 剪切两行)
  • yy 复制当前行
  • p 粘贴
  • 在命令模式下:
    • :%y 复制整个文件
    • ggVG 选中全部文本

撤销 & 恢复

  • u 撤销(Undo)
  • Ctrl + R 恢复撤销的操作(Redo)

代码缩进

  • v 进入 可视模式,选中文本后:
    • < 减少缩进
    • > 增加缩进
    • +y 复制选中内容

窗口 & 标签管理

  • :tabnew [文件] 新建标签页
  • :tabc 关闭当前标签
  • :tabo 关闭其他所有标签
  • :tabs 查看所有打开的标签
  • :tabp / :tabn 切换前/后一个标签
  • 标准模式下:
    • gt 下一个 tab
    • gT 上一个 tab
  • R 刷新 NerdTree

窗口对齐

  • zz 让光标所在行位于屏幕中间
  • zt 让光标所在行置顶
  • zb 让光标所在行置底
  • Ctrl + E 向下滚动一行
  • Ctrl + Y 向上滚动一行

Vim 配置

  • 在命令模式下输入:
    • :syntax on 开启代码高亮
    • :set number 显示行号
  • 全局生效:编辑 ~/.vimrc 文件,添加:
    syntax on
    set number

g++编译

默认编译: g++ [选项] -o 生成文件名 源文件.cpp 如果不加 -o 选项,默认会生成 a.out
使用c++11标准: g++ -std=c++11 file.cpp

插件管理

安装Vim-Plug(插件管理器):

1
2
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

安装插件: 在 ~/.vimrc 添加

1
2
3
4
5
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'
Plug 'junegunn/fzf'
call plug#end()

插件指令:

1
2
3
4
5
6
:PlugInstall        # 安装插件(从 ~/.vimrc 配置的源下载并安装插件)
:PlugUpdate # 更新已安装的插件
:PlugUpgrade # 更新 Vim-Plug 本身
:PlugClean # 清理无用的插件(删除未在 ~/.vimrc 配置中的插件)
:PlugStatus # 显示已安装插件的状态
:PlugDiff # 显示本地插件与远程仓库的差异