vim 常用快捷键
《Linux私房菜基础学习篇》Page278-280
常用系统命令 1 2 3 4 5 6 7 8 9 10 11 find . -name "*.c" find . -type f find . -ctime -20 sed "s/success/{\\\\\"status\\\\\":0}/g" -i /home/mdm/script/config/audi_pre.json
linux 系统命令 history
如下:
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 1 ls 2 ls -a 3 ls -al 4 ls -als 5 ls -h 6 ls 7 ls -alsh 8 ls -als 9 cls 10 clear 11 clear 12 cls 13 ls -help 14 ls --help 15 date 16 date +%Y 17 date +%y 18 date +%M 19 date +%m 20 cal 21 cal 2022 22 cal 2022 02 23 cal 3-22 24 cal 03-22 25 cal 03-2022 26 cal 03 2022 27 bc 28 date 29 history
然后输入!15
可以快速执行 history 中标记 15 的那行命令。
1 2 3 [root@47546a5b4ea9 /] date Wed Mar 23 02:14:32 UTC 2022
cal 1 2 3 4 5 6 7 8 [root@47546a5b4ea9 /] March 2022 Su Mo Tu We Th Fr Sa 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
date 1 2 3 4 5 6 7 8 9 10 [root@47546a5b4ea9 /] 2022 [root@47546a5b4ea9 /] 22 [root@47546a5b4ea9 /] 46 [root@47546a5b4ea9 /] 03
常用快捷键
Ctrl + i:跳到本行开头
Ctrl + e:跳到本行结束
Ctrl + ←:往左跳一个单词
Ctrl + →:往右跳一个单词
Ctrl + U:从当前光标开始删除,删到本行开头
Ctrl + K:从当前光标开始删除,删到本行结束
ESC + . :快速提取上条命令的输入参数(准确来说是命令的最后一部分值),可反复上翻调用
^AA^BB :把上条命令中的AA替换成BB之后重新执行一遍
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 [root@47546a5b4ea9 /] . dev lib64 opt sbin usr .. etc lost+found proc srv var .dockerenv home media root sys bin lib mnt run tmp [root@47546a5b4ea9 /] ls -ltotal 48 lrwxrwxrwx 1 root root 7 Nov 3 2020 bin -> usr/bin drwxr-xr-x 5 root root 360 Mar 23 01:28 dev drwxr-xr-x 1 root root 4096 Mar 23 01:28 etc drwxr-xr-x 2 root root 4096 Nov 3 2020 home lrwxrwxrwx 1 root root 7 Nov 3 2020 lib -> usr/lib lrwxrwxrwx 1 root root 9 Nov 3 2020 lib64 -> usr/lib64 drwx------ 2 root root 4096 Sep 15 2021 lost+found drwxr-xr-x 2 root root 4096 Nov 3 2020 media drwxr-xr-x 2 root root 4096 Nov 3 2020 mnt drwxr-xr-x 2 root root 4096 Nov 3 2020 opt dr-xr-xr-x 170 root root 0 Mar 23 01:28 proc dr-xr-x--- 2 root root 4096 Sep 15 2021 root drwxr-xr-x 11 root root 4096 Sep 15 2021 run lrwxrwxrwx 1 root root 8 Nov 3 2020 sbin -> usr/sbin drwxr-xr-x 2 root root 4096 Nov 3 2020 srv dr-xr-xr-x 13 root root 0 Mar 23 01:28 sys drwxrwxrwt 7 root root 4096 Sep 15 2021 tmp drwxr-xr-x 12 root root 4096 Sep 15 2021 usr drwxr-xr-x 20 root root 4096 Sep 15 2021 var
文本下冒号输入/(string)
:查找文本中的对应字符串,小写 n 从上往下查找,大写 N 从下往上查找。string 也支持部分正则表达式。
file 命令可以查看 linux 文件种类(因为 linux 大部分文件都是没有后缀或者说扩展名的)。
cd -
:回到刚才那个目录
cd(后面什么都不跟)
:进入到当前用户的主文件夹。
cd ~account
:进入到 account 用户的主文件夹。
pwd -P
:显示正确的完整路径,针对 link 类型的文件有用。
mkdir -p
:可以创建多层目录。
1 2 3 4 5 6 7 8 9 10 test ├── dir1 ├── dir2 └── dir3 3 directories, 0 files test
cat -n
:查看文件时显示行号。cat 适合查看小文件。cat -n
等用于命令nl
tac
:与cat
相反,从最后一行开始显示,一直显示到第一行。没有 -n 选项。
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 [root@47546a5b4ea9 /] 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 47546a5b4ea9 [root@47546a5b4ea9 /] 1 127.0.0.1 localhost 2 ::1 localhost ip6-localhost ip6-loopback 3 fe00::0 ip6-localnet 4 ff00::0 ip6-mcastprefix 5 ff02::1 ip6-allnodes 6 ff02::2 ip6-allrouters 7 172.17.0.2 47546a5b4ea9 [root@47546a5b4ea9 /] tac : invalid option -- 'n' Try 'tac --help' for more information. [root@47546a5b4ea9 /] 172.17.0.2 47546a5b4ea9 ff02::2 ip6-allrouters ff02::1 ip6-allnodes ff00::0 ip6-mcastprefix fe00::0 ip6-localnet ::1 localhost ip6-localhost ip6-loopback 127.0.0.1 localhost
嵌套在语句中的命令如果要被执行,需要打标记,如下:
1 2 3 4 5 6 7 8 [root@47546a5b4ea9 /] 47546a5b4ea9 [root@47546a5b4ea9 /] xxx 47546a5b4ea9 xxx [root@47546a5b4ea9 /] xxx 47546a5b4ea9 xxx [root@47546a5b4ea9 /] xxx 47546a5b4ea9 xxx
查找文件的几种方式:
which
:只用来找命令,且只在 PATH 中找,只显示找出来的第一条,-a
则列出所有同名执行文件。
where is
:-b
只找二进制文件;-m
只找说明文件;-s
只找source源文件。
locate
:与上面一样,通过数据库查找数据,没有实际查找磁盘,所以很快,但导致需要更新数据库:updatedb
,不然可能找到已经删除的文件,或找不到刚刚创建的新文件。查找支持关键字查找,输入部分名称也可检索出结果。
find [PATH] [option] [action]
:强大但慢,是查找磁盘,所以不是很常用。《鸟哥私房菜》Page 190 有详细用法介绍。
查找文件时-i
选项用来忽略大小写。
tar
:本身不压缩,只用来打包,打包功能来源于 bzip2 和 gzip 的功能支持。
-c
:新建打包文件;
-t
:查看打包文件的内容含有哪些文件名;
-x
:解打包/解压缩;
-j
:通过 bzip2 的支持,进行压缩/解压缩,此时文件名最好为*.tar.bz2
;
-z
:通过 gzip 的支持,进行压缩/解压缩,此时文件名最好为*.tar.gz
;
-v
:显示正在处理的文件名;
-f filename
:接的是被处理的文件名,建议-f
单独写作一个参数;
-C
:用于解压缩时指定解压缩目录;
dump [-Suvj] [-1evel] [-f 备份文件] 待备份数据
:对文件系统进行备份和存储。
-S
:仅列出后面的待备份数据需要多少磁盘空间才能够备份完毕;
-u
:将这次 dump 的时问记录到 /etc/ dumpdateS 文件中;
-v
:将 dump 的文件过程显示出来;
-j
:加入 bzip2 的支持,将数据进行压缩,默认 bzip2 压缩等级为 2;
-(level)
:-0 ~ -9 共10个等级;
-f
:有点类似 tar,后面接产生的文件,可接例如 /dev/st0 设备文件名等;
-W
:列出在 /etc/fstab 里面的具有 dump 设置的分区是否有备份过。
restore
:恢复系统。Page 262
dd
:可备份完整的分区或磁盘,因为 dd 可读取磁盘的扇区表面数据。Page 262
curl命令的常见用法 说明 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称curl为下载工具。
语法
1. 获取页面内容 当我们不加任何选项使用 curl 时,默认会发送 GET 请求来获取链接内容到标准输出。
1 curl http://www.baidu.com
2. 显示 HTTP 头 如果我们只想要显示 HTTP 头,而不显示文件内容,可以使用 -I 选项:
1 curl -I http://www.baidu.com
输出为
1 2 3 4 5 6 7 8 9 10 HTTP/1.1 200 OK Server: nginx/1.10.3 Date: Thu, 11 May 2017 08:24:45 GMT Content-Type: text/html; charset=utf-8 Content-Length: 24206 Connection: keep-alive X-Powered-By: Express Cache-Control: public, max-age=0 ETag: W/"5e8e-Yw5ZdnVVly9/aEnMX7fVXQ" Vary: Accept-Encoding
也可以同时显示 HTTP 头和文件内容,使用 -i 选项:
1 curl -i http://www.baidu.com
输出为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 HTTP/1.1 200 OK Server: nginx/1.10.3 Date: Thu, 11 May 2017 08:25:46 GMT Content-Type: text/html; charset=utf-8 Content-Length: 24206 Connection: keep-alive X-Powered-By: Express Cache-Control: public, max-age=0 ETag: W/"5e8e-Yw5ZdnVVly9/aEnMX7fVXQ" Vary: Accept-Encoding <!DOCTYPE html> <html lang="en"> ...... </html>
3. 将链接保存到文件 我们可以使用 > 符号将输出重定向到本地文件中。
1 curl http://www.baidu.com > index.html
也可以通过 curl 自带的 -o/-O
选项将内容保存到文件中
-o
(小写的 o):结果会被保存到命令行中提供的文件名-O
(大写的 O):URL 中的文件名会被用作保存输出的文件名
1 2 curl -o index.html http://www.baidu.com curl -O http://www.baidu.com/page/2/
注意
使用 -O
选项时,必须确保链接末尾包含文件名,否则 curl 无法正确保存文件。如果遇到链接中无文件名的情况,应该使用 -o 选项手动指定文件名,或使用重定向符号
当我们需要传递特定的 header 的时候,可以仿照以下命令来写:
1 curl -H "Referer: www.example.com" -H "User-Agent: Custom-User-Agent" http://www.baidu.com
5. 使用 -d 发送 POST 请求 我们以登陆网页为例来进行说明使用 curl 发送 POST 请求的方法。假设有一个登录页面 http://www.example.com/login
,只需要提交用户名和密码便可登录。我们可以使用 curl 来完成这一 POST 请求,-d 用于指定发送的数据,-X 用于指定发送数据的方式:
1 curl -d "userName=tom&passwd=123456" -X POST http://www.example.com/login
在使用 -d 的情况下,如果省略 -X,则默认为 POST 方式:
1 curl -d "userName=tom&passwd=123456" http://www.example.com/login
6. 使用 -c 保存cookie 当我们使用 curl 访问页面的时候,默认是不会保存 Cookie 的。有些情况下我们希望保存 Cookie 以便下次访问时使用。例如登陆了某个网站,我们希望再次访问该网站时保持登陆的状态,这时就可以现将登陆时的 Cookie 保存起来,下次访问时再读取。
-c 后面跟上要保存的文件名。
1 curl -c "cookie-example" http://www.example.com
7. 自动跳转 有的网址是自动跳转的。使用 -L
参数,curl 就会跳转到新的网址。
键入上面的命令,结果自动跳转为 www.sina.com.cn
。
8. cookie 使用 --cookie
参数,可以让 curl 发送 cookie。
1 curl --cookie "name=xxx" www.example.com
至于具体的 cookie 的值,可以从 http response 头信息的 Set-Cookie 字段中得到。
9. HTTP 认证 有些网域需要 HTTP 认证,这时 curl 需要用到 --user
或者 -u
参数。
1 curl --user name:password example.com
认识与学习 bash
使用变量过程中需要注意的问题:
单引号 VS 双引号
变量名前要带 $
最好带大括号,避免产生歧义:${xxx}
set
查看本地变量 env
/export
查看环境变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@9824e1123313 /] [root@9824e1123313 /] $PATH [root@9824e1123313 /] [root@9824e1123313 /] var [root@9824e1123313 /] /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin [root@9824e1123313 /] [root@9824e1123313 /] 10 [root@9824e1123313 /] a
read
常用在 shell 中阻断,等待读取用户输入的参数,进行交互。-p
:输入前的提示语句。
1 2 3 4 5 6 7 8 9 / 123 / 123 / 123/ 222 / 222
1 2 3 4 5 6 7 8 9 / / bb / aa bb cc / aa bb cc / 0 1 2
1 2 3 // $ RANDOM 介于0~32768之间,设置0~9的随机数,代码如下 / 3
1 2 3 / rm is an alias for trashrm is /bin/rm
linux 复杂操作合集 访问本机接口 1 2 3 curl --location --request POST 'http://本机IP/接口' --header 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'data=[{"type":1,"brand":"GE","ae_oe_code":"9261317"}]' curl --location --request GET 'http://127.0.0.1:18016/honda/oe_by_std_name?vin=LVHRM1836D5019492&std_name=%E6%B3%A2%E7%AE%B1%E6%B2%B9'
查看 log 技巧 1 2 3 4 tail -f <file> i//自动刷新查看文件,适用于查看日志,相对于cat 的优点在于不用全部打开,只会看最新的几行,看大文件时不会那么容易卡死//查看nginx日志,并进行过滤 tail -f /var/log/nginx/access.log | grep XXX