Shell 命令
常用命令
- ps - e | grep ssh: 先查看是否开启了ssh,否则 Xshell 连接不了。
- !!: 代表上次输入的命令。
- wget: 类似于迅雷下载。
-c
如果中断,下次从断点处继续下载。wget -c http://mirrors.163.com/.help/sources.list.trusty
获取更近的更新源。去/etc/apt
目录下替换掉原来的sources.list
(记得先备份,复制时还要改成一样的名字) - man: 查看命令手册,后面接命令。
man who
- who: 查看登录中的所有用户。
- pwd: 查看当前所在目录。
- cd: 切换目录。
- touch: 如果没有,就创建文件。如果有,就修改文件时间戳。技巧:touch 一个文件留作印记。
- cp: 复制文件。
-i
覆盖前会先询问。-l
硬链接。-s
软连接(可跨硬盘跨文件系统)。 - ln: 创建连接文件。
- rm: 删除文件(没有回收站,除非通过硬件手段找回)。
-r
递归(不带参数不能删除文件夹,空的也不行)。 - mkdir: 创建文件夹。
-p a/b/c
创建包含子文件夹 - rmdir: 删除文件夹(文件夹中有内容反而要用 rm 命令删除)。
- mv: 修改文件名。
进程
- ps: 查看进程(默认自己终端相关的)。unix风格
-ef
(够用了)。bsd风格al
、aglx
。gnu风格--forest
以树形展开。 - top: 实时查看进程状态(windows 任务管理器)。可以按键操作,比如按 q 退出。(具体查看手册)。
- htop: 更漂亮地查看进程状态(可能需要安装 htop)。
- kill: 发送信号(可以用来结束进程,受权限影响)。
kill -s INT 2032
结束进程。后面会讲程序怎么处理发送过来的信号。-9
强杀。 - killall: 批量结束进程(运维用的比较多)。
- df: 查看内存使用情况(用的不是太多)。
-h
更人性化(human)的显示。 - du: 查看目录使用情况。
-h
更人性化(human)的显示。
apt-get 相关
- apt-get install: 安装软件。
- apt-get update: 更新资源(并没有下载包)
- apt-get upgrade: 下载包更新。
- dist-upgrade: 重大升级,相当于 windows7 升级到 windows8,基本不用。
查看文件
- ls: 目录下有哪些文件。
-l
详细情况。-i
文件节点。 - stat: 更详细地查看文件情况。
- file: 主要查看文件类型。
查看文件内容
- cat: 快速查看文件内容(文件过大时,直接定位到最后)。
- more: 查看文件内容(按屏幕划分进度查看,space 翻页,但不能往上翻)。
- less: 查看文件内容(可往上翻,具体用 man 命令查看手册)。
- tail: 查看最后10行内容(最常用的,查看日志)。
tail -n 30 a.log
查看最后30行。tail -f -n 3 a.log
实时查看最后3行。 - head: 查看前面10行内容(与 tail 一样,但没有 -f 选项)。
- grep: 强大的功能。
grep apple a.txt
查看带有apple的行,还能加参数grep -c apple a.txt
查看带apple的有几行。 - 小技巧: 以上的命令还可以放在管道
|
后面,将其他程序的输出当做输入。比如:set | head
。cat a.txt | grep apple
和grep apple a.txt
效果一样。
环境变量
- echo: 查看(回声)。
echo $PATH
查看系统环境变量。echo $USER
查看当前用户。cat $PATH
让我理解了为什么用echo
回声这个词(输出变量值)。 - printenv: 查看全局环境变量(包含系统环境变量)。
- set: 查看局部环境变量。
- 设置自己的环境变量:
test=goodapp
(注意中间不能有空格,否则认为前面的是命令)。echo $test
。 - export: 将局部环境变量导出。
- unset: 撤销局部环境变量。
Shell 编程
- 配置shell的东西:
bash
相关。vim ~/.bashrc
。.sh
文件类似于 windows 中的.bat
文件。 - 例子:
vim finder.sh
,#! /bin/sh
换行who
。./finder.sh
运行。 - ./: 运行文件(前提是可运行的文件)。
- chmod: 修改访问模式。
- chown: 修改拥有者。
压缩包
- zip: 压缩。(不常用)
- unzip: 解压缩。(不常用)
- tar: 结合参数。(使用较多)
Vim 命令
常用命令
- :w: 保存文件。如果是新建文件,后面+
空格
+文件名
。 - :q: 退出。后面+
!
强制退出。 - i: 光标前插入。
- a: 光标后插入。
- I: 行首插入。
- A: 行尾插入。
- o: 向下插入一行。
- O: 向上插入一行。
- x: 删除单个字符。
比存活更进一步
- 0: 移动到行首。
- $: 移动到行尾。
- ^: 移动到第一个可见字符。
- g-: 移动到最后一个可见字符。
- :set hlsearch: 设置高亮查找。
- /: 向后查找。
- ?: 向前查找。
- n: 向后查找同一项。
- N: 向前查找同一项。
- p: 向下粘贴一行。
- P: 向上粘贴一行。
- yy: 复制一行。
- u: 撤销。undo。
- ctrl+r: 重做。(redo)
- :x: 退出。自动识别是否需要存盘。
- zz: 退出。自动识别是否需要存盘。比
:x
更快捷,目光无需转移(但好像18.04版本不起作用)。
又进一步
- .: 重复上一个有改变文本的命令(默认的单行移动光标不算)(插入换行等命令都可以)。
- N: 重复某个命令N次。
2dd
连续删除两行。 - :set number: 打开行数显示。
- NG: 跳至第N行。
- :N: 跳至第N行。
- gg: 跳至第一行。
- G: 跳至最后一行。
- w: 跳至下一个单词的开头。
- e: 跳至下一个单词的结尾。
- W: 跳至下一个字符串的开头。
- E: 跳至下一个字符串的结尾。
- %: 移动到匹配括号,包括
(, {, [, ], }, )
。 - 星号(*): 跳至下一个相同单词。
- #: 跳至上一个相同单词。
- v: 进入 visual 模式(可视化模式、选中),可以移动光标选择范围,运行命令是针对选项范围的。(yy、dd 这样的命令只需要输入一个就生效了。)
- V: 整行选中的 visual 模式。
继续进步
- fn: 跳至本行下一个 n 字符处。
- tn: 跳至本行下一个 n 字符前(to)。
- Fn: 跳至本行上一个 n 字符处。
- Tn: 跳至本行上一个 n 字符后(to)。
- J: 把下一行移动到行尾。
- :vs: 左右分屏。
ctrl+w w
切换。 - :sp: 上下分屏。
- :hide: 隐藏分屏。
- :b a.txt: 打开另一个文件的buffer(需要vim提前打开)。步骤:
vim a.txt b.txt
、:vs
、:b b.txt
。 - :e a.txt: 编辑另一个文件(不需要vim提前打开)
组合命令
- dtn: 删除当前光标至 n 字符前(组合命令)。
- vi": 选择两个""间不包含引号的内容。
- va": 同上,但是包含引号。
- vi): 选择()间内容,但是不包含()本身。
- va): 同上,但是包含()本身。
- ctrl+v: 进入块模式(windows下不支持)。
- ctrl+n: 代码提示。
- ctrl+p: 代码提示。
- =: 自动给缩进。
- vimtutor: 查看vim教程(在外面输入)。
- dw: 删除一个单词。
- bdw: 光标回退到单词开头,删除一个单词。
Scp 和 Vim 教程
- git --version: 查看 git 版本。
- scp --version: 查看 scp 版本。
- scp: 安全拷贝。
scp root@123.207.122.250:/root/a.txt .
将远程文件拷贝到当前目录。 - **ssh-keygen -t rsa:**不 用每次都输入密码。
- .vimrc: vim 配置文件,在账号目录下生效。可自己创建:
vim .vimrc
,然后:set number
,之后每次打开 vim 都会显示行号了。
课后练习知识点
- **ADL:**参数相关查找(Argument Dependent Lookup),函数调用时会根据参数的作用域去查找函数定义。
- grep:(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
慕课网LinuxC学习笔记
Vim
概念
指令模式、编辑模式。
快捷键
- i:光标前插入
- a:光标后插入
- I:行首插入
- A:行尾插入
- o:另起一行(下)
- O:另起一行(上)
- [n]dd:删除n行
- p:粘贴
- -------------------------分隔(以下的为:加指令)
- w:保存
- q:退出
- sp:多窗口打开文件
- ctrl+w+↓:跳转到下面的窗口
- set nu:打开行号
- ctrl+s:锁定
- ctrl+q:解除锁定
- ctrl+z:后台运行,jobs查看任务,fg %n恢复第n个任务。
C
理论
- 程序和操作系统之间的沟通
命令
- cc/gcc:编译成.out可执行文件。-c max.c 编译不包含mian函数的文件;-o max.o 命名文件
- ./a.out:执行文件
- vim Makefile:制作版本管理工具(暂理解跟maven一样)# 注释
- make:一键编译,附带版本管理功能,没修改的.c文件不会编译。
- &&:当前一条命令执行成功后(return 0),执行后一条命令。
- echo $?:查看返回码
逐级理解
- 单个.c,一个函数
- 单个.c,两个函数
- 两个.c,gcc hello.c max.c。Warnning(隐式声明)
- 两个.c,hello包含max。gcc hello.c。√(编译太费时间)
- 两个.c,一个.o。gcc hello.c max.o。Warnning(不知道.o函数类型,参数类型)
- 两个.c,一个.o,一个.h。gcc hello.c。√(终极形态)
成就
- 结合目前所学知识(加上网上借用的replace字符串替换函数),做成了一个提高工作效率,解决重复编码的小工具。
gdb调试
命令
- gcc -v:查看
- gdb -help:查看gdb,没有安装会提示:apt install gdb。
- gcc -g main.c -o main.out:这样编译出来的out文件才支持调试模式。
- gdb ./main.out:调试运行。
调试下
- l:查看代码(list)
- 回车:执行上一个输入。
- start:开始调试(默认进入断电(第一行))
- n:执行下一步(next)
- s:进入函数(step)
- p a:查看变量a的值(print)
- bt:查看函数堆栈
- f 1:切换到函数栈1
- break n:在n行打断点
- q:退出调试