Linux入门教程

Linux教程

1 基础命令

命令 参数 作用
ls 列出当前目录下的文件和文件夹
ls -l 列出当前目录下的文件和文件夹(并显示具体信息)
ls -a 列出当前目录下的文件和文件夹(包括隐藏文件和文件夹)
ls -al / -la 列出当前目录下的文件和文件夹(包括隐藏文件和文件夹,并显示具体信息)
cd 跳转到目标目录,.表示当前目录,..表示上一目录
clear / <c-l> 清屏
pwd 显示当前目录位置
cp 复制文件
cp -r 复制文件夹
cp -f 复制文件且没有提示
mv 移动文件
rm 删除文件
touch 创建文件
cat 输出文件内容
cat -n 输出文件内容并显示行号
shmod 设置文件权限
head 显示文件开头几行
head --lines= 显示文件开头几行,且指定行数
tail 显示文件结尾几行
tail --lines= 显示文件结尾几行,且指定行数

2 用户管理

2.1 创建新用户

如果当前只有一个root用户,那么最好创建一个非root用户,具体方式如下

  1. 查看/etc/sudoers文件的内容
  2. 检查## User privilege specification部分的内容,如:
##
## User privilege specification
##
root ALL=(ALL:ALL) ALL

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL:ALL) ALL

这里存在两个用户组,分别是rootwheel,不同的发行版第二个用户组可能会有不同,如果被注释了取消注释皆可
3. 使用命令useradd -m -G wheel -s /bin/bash {myusername}创建新用户
4. 使用passwd {myusername}设置用户密码

2.2 其他用户操作

操作 作用
userdel {username} 删除用户
groupadd {groupname} 添加用户组
usermod -aG {groupname} {username} 将用户添加到用户组

3 vim编辑器的使用和基本配置

3.1 vim基本使用

操作 作用
i 进入插入模式
<ESC> 进入普通模式
h, j, k, l 光标移动,分别对应左,下,右,上
<c-u>, <c-d> 光标移动,分别对应上,下半页
0 跳跃到行首
^ 跳跃到第一个字符
` 操作
-------------------------- ----------------------------------
i 进入插入模式
<ESC> 进入普通模式
h, j, k, l 光标移动,分别对应左,下,右,上
<c-u>, <c-d> 光标移动,分别对应上,下半页
0 跳跃到行首
^ 跳跃到第一个字符
                  | 跳跃到行尾                       |

| gg | 跳跃到文件开头 |
| G | 跳跃到文件结尾 |
| :{number}, {number}G | 跳跃到第{number}行 |
| v | 进入选中模式 |
| V | 进入行选中模式 |
| <c-v> | 进入块选中模式 |
| y | 复制选中的内容或者等待motion |
| yy | 复制本行 |
| Y | 复制光标到行尾的内容 |
| p | 将复制的内容在光标后粘贴 |
| P | 将复制的内容在光标前粘贴 |
| u | 撤销 |
| <c-r> | 反撤销 |
| /{string} | 查找内容 |
| n | 下一个匹配的查找内容 |
| N | 上一个匹配的查找内容 |
| {number}{motion} | 执行{number}次行为 |
| :w, :w! | 保存和强制保存 |
| :q, :q! | 退出和强制退出 |
| :wq | 保存退出 |
| :noh | 取消搜索高亮 |

3.2 vim基本配置

配置内容 作用
syntax on 开启关键词高亮
set number 开启行号
set relativenumber 开启相对行号
set cursorline 高亮本行
set lastatus=3 开启状态栏
set tabstop= 设置tab大小
set shiftwidth= 设置indent大小
set softtabstop= 设置tab大小
set autoindent 设置自动缩进
set smartindent 更智能的自动缩进
set list 显示list字符
set listchars= 设置list字符的内容
set wildmenu cmdline补全
set ignorecase 搜索时忽略大小写
set smartcase 搜索输入大写时不会忽略大小写
set ttimeoutline=, set notimeout 更快的响应时间
set conceallevel=0 取消特殊字符隐藏
let &t_SI.="\e[5 q", let &t_SR.="\e[3 q", let &t_EI.="\e[1 q" 光标变化
(nore)map, n(nore)map,i(nore)map,v(nore)map,t(nore)map,o(nore)map 快捷键映射

3.3 利用vimscript创建新功能

如下是一个快速运行代码的功能

nmap <F5> :call Run()<CR>
function! Run()
  echo " compiling..."
  if &filetype == 'c'
    :! gcc "%" -o "%<" && "./%<" && rm -f "./%<"
  elseif &filetype == 'cpp'
    :! g++ "%" -o "%<" -Wall -std=c++20 && "./%<" && rm -f "./%<"
  elseif &filetype == 'python'
    :! python "%"
  end
  redraw!
  echohl WarningMsg | echo " Running finish! :-)"
endfunction

4 写shell脚本

菜鸟教程

5 进阶命令(常用命令,管道和环境变量)

5.1 常用命令

命令 参数 作用
top 显示进程信息
kill pid 关闭进程号为pid的进程
w 显示当前正在登录的用户
find 查找文件
find -name 查找特定文件
wc -l 统计文件行数
wc -w 统计文件单词数
wc -c 统计文件字节数

5.2 管道

利用|字符可以将前一个命令的输出作为后一个命令的输入,称为管道。利用管道可以灵活地将多个命令链式执行

命令 作用
`echo cut -d '=' -f 1,4`
`echo cut -d '=' -f 1-4`

5.3 环境变量

env #显示当前用户的变量
export #设置环境变量

6 ssh基本使用

6.1 创建ssh密钥

使用命令ssh-keygen创建密钥,结束后会在~/.ssh目录中多出两个文件:

  • id_rsa:私钥
  • id_rsa.pub:公钥

6.2 利用ssh登录服务器

命令 作用
ssh {user}@{hostname} 登录服务器,{user}表示用户名,{hostname}表示服务器的ip地址或者域名
ssh {user}@{hostname} -p 22 登录服务器的22端口

6.3 快速登录配置

  1. ~/.ssh/中创建文件config
  2. 编辑config文件:
Host servername1
  HostName {hostname}
  User {user}

Host servername2
  HostName {hostname}
  User {user}

之后就能通过ssh servername1来快速连接相关的服务器

6.4 免密登录

将公钥中的内容复制到服务器的~/.ssh/authorized_keys文件里

6.5 scp传输文件

命令 作用
scp {file} {hostname} 将文件{file}复制到{hostname}中
scp -r {folder} {hostname} 将文件夹{folder}复制到{hostname}中
scp {file} {hostname}:/home/user 将文件{file}复制到{hostname}的/home/user目录中

7 git的基本命令

7.1 初始化设置

命令 作用
git config --global user.name "{username}" 设置全局的用户名
git config --global user.email "{email}" 设置全局的邮箱
git config --global init.defaultBranch 'main' 设置默认分支为main

7.2 常用命令

命令 作用
git init 将当前目录设置成git仓库
git add {file} 将{file}文件加入缓存区
git add . 将所有文件加入暂存区
git commit -m "{something}" 将缓存区的内容提交,{someting}是备注
git status 查看仓库状态
git diff {file} 查看{file}文件的修改内容
git log 查看当前分支的所有版本
git reflog 查看HEAD指针移动历史
git reset --hard HEAD~ 回滚到上一版本
git reset --hard HEAD~n 回滚到上n个版本
git reset --hard commit_id 回滚到特定的commit
git restore {file} 删除{file}文件的修改
git rm --cached {file} 将{file}从缓存区中删除
git remote add origin git@github.com:{xxxx/xxxx}.git 将本地仓库关联到远程仓库
git push -u 将本地仓库提交到远程仓库(从第二次开始就不需要加-u参数)
git pull 将远程仓库的默认分支与本地的当前分支合并
git clone {positon} 将远程仓库克隆到本地
git branch 查看所有分支
git branch {branch_name} 创建一个名为{branch_name}的分支
git chekout {branch_name} 切换到{branch_name}分支
git branch -d {branch_name} 删除本地的{branch_name}分支
git pull origin {branch_name} 将远程仓库的{branch_name}分支与本地的{branch_name}分支合并
git stash 将当前未提交的修改存入栈中
git stash apply 将栈顶元素恢复到改分支,并且不删除栈顶元素
git stash pop 将栈顶元素恢复到改分支,并且删除栈顶元素
git stash drop 删除栈顶元素
git stash list 查看栈中所有元素
posted @ 2024-09-16 23:59  KicamonIce  阅读(77)  评论(0)    收藏  举报