1.linux常用快捷键
| ctrl+c | 取消当前操作。 | 
|---|---|
| ctrl+l | 清屏 | 
| ctrl+d | 退出当前账户 | 
| esc+. | 上一个命令的结尾 | 
Ctrl + a        把光标移动到《行首》
Ctrl + e        把光标移动到《行尾》
Ctrl + c        取消 当前的操作 cancel
Ctrl + d         logout命令(当前行没有任何内容,退出当前用户)
Ctrl + l        (小写字母 L 清除屏幕内容 clear
Ctrl + u        剪切光标所在位置到行首的内容
Ctrl + k        剪切光标所在位置到行尾的内容
ctrl + y         粘贴
ctrl + →        把光标向右移动一个单词
ctrl + ←        把光标向左移动一个单词
Ctrl + r search        搜索历史命令 ,继续搜索
2.目录相关
| 创建目录 make directory mkdir  | mkdir /data
mkdir -p /文件    创建多级目录
mkdir -pv  /文件   查看创建详细过程
 |
| —- | —- |
| 查看当前位置 | pwd |
| tree:以树形显示目录结构 | -L      最多显示几层目录
-d      只显示目录 |
| 创建软连接 | ln -s   文件/目录   软链接名
练习 |
| cd命令 | |
|---|---|
| cd . | 当前目录,移动复制时用,cp /etc/hosts | 
| cd .. | 返回上一级位置 | 
| cd ../../../ | 返回多级位置 | 
| cd - | 快速的回到上一次所在的位置 | 
| (root用户)~ | /root | 
| (普通用户)~ | /home | 
| cd | 回老家 | 
| ls命令 | 常用:-lrt 逆序显示文件 -lhi 查看inode号码  | 
|---|---|
| ls /data | ls 查看目录里面的内容 | 
| ls -l eg: ls -l /tmp | ls 查看目录里面的详细信息 | 
| ls -F  | 
ls 给目录加斜线练习 | 
| ls -r  | 
逆序显示内容 | 
| ls -t | 按照文件的 修改时间 | 
| ls -h | 人类可读 | 
| ls -i | 看文件的 inode 号码 | 
- 创建多级目录
[root@oldboyedu data]# mkdir -p /oldboy/test[root@oldboyedu data]# ls /oldboy/test
 
3.文件相关
vi-记事本
vim:notepad++ emeditor word wps 更加强大,用法与vi一样
| 打开文件 | vi /data/oldboy.txt | 
|---|---|
| 进入编辑模式并增加内容 | 按i, 进入到编辑模式(插入) | 
| 退出编辑模式 | esc退出编辑模式 | 
| 保持并退出 | :wq #保持并退出 | 
| 查看文件的内容 | cat /data/oldboy. txt | 
| 几种退出相关模式 | :wq保持并退出 :q退出 :q!强制退出不保存 :wq!强制退出并保存  | 
| 快速移动光标到文件最后一行 | 按G | 
| 快速移动光标到文件第一行 | 按gg | 
| 文件当前行下面再添加一行 | 按o | 
| 删除光标所在位置的内容到结尾 | 按D | 
| 显示行号 | :set nu | 
| 不显示行号 | :set nonu | 
| 创建 /root/data/oldboy.txt文件 | touch /root/data/oldboy.txt | 
|---|---|
| 查找多个文件 | * | 
| 找什么类型的 f file 文件 d directory 目录  | 
-type | 
| 过滤:grep  | 
grep ‘内容’ 文本        过滤出你想要的内容 grep -v ‘内容’ 文本 过滤出内容以外的文本 grep -n ‘stu’ nginx.conf 识别stu开头的 grep -A数字 显示过滤出的内容及接下来的几行 grep -o 显示它的执行过程。  | 
| egrep :支持高级正则 egrep == grep -E  | 
eg:egrep “3306|1521” /etc/services 找出/etc/services文件中含有3306或1521的内容  | 
| head:默认取出前十行 | head 文本                   取出前十行 head -n行数 文本 取出前n行  | 
| tail:默认取出后十行 | tail 文本                     取出后十行 tail -n行数 文本 取出后n行 tail -f /文本 显示文件的实时更新  | 
| sed:取行,并做相应的动作 | - sed ‘/内容/d’ 文本 删除这一内 - sed -n ‘20p’ 文本 输出第20行 - sed -n ‘20,30p’ 文本 输出第20至30行 - sed ‘s# 找谁#替换为什么 #g’ 文本  | 
把找的替换成后边的但只在屏幕输出,不改变文本
- sed -i   ‘s# 找谁#替换为什么 #g’   文本  
把找的替换成后边的,改变文本
- sed “=”     “=”在sed命令中表示行号
 |
| awk 取列 | NR             行号
$数字         某一列
$0              一整行
‘{print}’        显示内容
-F “,”          指定逗号为分隔符
-F “[, ]”       指定逗号和空格为分隔符 |
| seq:生成序列 | seq 10       生成一到十 |
| :查找多个文件 | find /root/ -type f -name “.txt” |
| cat:查看文件内容 | cat 文件路径
cat -n 文件          显示文件内容及行号
cat -A 文件         显示文件内容及结束标志位 |
| tar:创建查看解压压缩包 | z————通过gzip            工具进行压缩。
c————表示creat           创建压缩包。
v————表示verbose      显示执行过程。
f————表示file              接上压缩包的名字。
t————表示list              显示压缩包的内容。然后
常用:创建压缩包zcf,查看tf,解压xf |
| tr:替换 | tr “a” “ b” < oldboy.txt   
在oldboy.txt文件中把a替换成就是我们这一道题。 |
| 创建硬链接 | ln    文件    硬链接文件名
硬链接练习 |
| stat:显示文件的状态信息,比ls命令的输出信息要更详细 | stat 文件 |
| echo:把它后面的内容显示出来。 | -n    取消输出每行结尾的回车。
-e    让命令支持  \n  \t  转义字符。 |
|  |  |
查找多个文件:* 示例:找出以.txt 结尾的文件
[root@oldboyedu01 tmp]# find /root/ -type f -name "*.txt"/root/data/oldboy.txt/root/data/num.txt
过滤:grep
[root@oldboyedu data]# cat test.txttestliyaooldboy[root@oldboyedu data]# grep 'oldboy' test.txtoldboy[root@oldboyedu data]# grep -v 'oldboy' test.txttestliyao
取出前n行:head
[root@oldboyedu data]# head test.txttestliyaooldboy[root@oldboyedu data]# head -n2 test.txttestliyao
取出后n行:tail
[root@oldboyedu data]# tail -1 test.txtoldboy[root@oldboyedu data]# tail test.txttestliyaooldboy
删除oldboy这一行:sed
[root@oldboyedu data]# sed '/oldboy/d' test.txttestliyao
生成序列:seq
[root@oldboyedu ~]# seq 41234
查看文件的第20到30行:
- 方法一:seq+sed ```python [root@oldboyedu ~]# seq 100 > /oldboy/ett.txt # 把一到100序列写入这个文件中 [root@oldboyedu ~]# tail /oldboy/ett.txt # 查看后十列
 
[root@oldboyedu ~]# sed ‘20p’ /oldboy/ett.txt # 默认输出第20行,同时会把文件的内容显示出来
[root@oldboyedu ~]# sed -n ‘20p’ /oldboy/ett.txt # 只输出第20行 20
[root@oldboyedu ~]# sed -n ‘20,30p’ /oldboy/ett.txt # 只输出第27到30行 20 …… 29 30
- 方法二:head+管道+tail```python[root@oldboyedu ~]# head -30 /oldboy/ett.txt |tail -11 # 先取前30行再取后11行20......2930
- 方法三:awk
[root@oldboyedu ~]# awk 'NR==20' /oldboy/ett.txt # NR表示行号,只取第20行。 20 [root@oldboyedu ~]# awk 'NR==20,NR==30' /oldboy/ett.txt 20 ...... 29 30 
- 把 /oldboy 目录及其子目录下所有以扩展名 .sh 结尾的文件中,文件包含oldboy 的字符串全部替换为 oldgirl ```python 创建测试环境 mkdir -p /oldboy/test cd /oldboy echo “oldboy”>test/del.sh echo “oldboy”>test.sh echo “oldboy”>t.sh touch oldboy.txt touch alex.txt
 
[root@oldboyedu oldboy]# find -type f -name ‘*.sh’ # 找出你要的文件 ./test/del.sh ./t.sh ./test.sh
第二个里程碑 oldboy 替换为 oldgirl 处理一个文件 [root@oldboyedu oldboy]# cat /oldboy/t.sh oldboy [root@oldboyedu oldboy]# sed ‘s#oldboy#oldgirl#g’ /oldboy/t.sh # 把oldboy替换成oldgirl,但只在屏幕输出,不存入文本中 oldgirl [root@oldboyedu oldboy]# cat /oldboy/t.sh oldboy [root@oldboyedu oldboy]# sed -i ‘s#oldboy#oldgirl#g’ /oldboy/t.sh #在文件里改 [root@oldboyedu oldboy]# cat /oldboy/t.sh oldgirl
通过管道将两者结合起来。
[root@oldboyedu oldboy]# find -type f -name ‘*.sh’|xargs sed ‘s#oldboy#oldgirl#g’
先在屏幕上看一眼,确定一下,再更改
oldgirl oldgirl oldgirl
[root@oldboyedu oldboy]# find -type f -name ‘.sh’|xargs sed ‘s#oldboy#oldgirl#g’ -i [root@oldboyedu oldboy]# find -type f -name “.sh”|xargs cat # 查看 oldgirl oldgirl oldgirl
<a name="eZTu7"></a>
# 4.漏斗家族:重定向符号
| **1** | **标准输出** | **执行正确的内容才会通过漏斗** |
| --- | --- | --- |
| 1> | 标准输出重定向 | 先把文件的内容清空把内容放在文件的最后一行 |
| 1>> | 追加重定向 | 把内容放在文件的最后一行 |
| 2> | 标准错误重定向 |  |
| 2>> | 错误追加重定向 |  |
| < | 输入重定向 |  |
| << | 追加输入重定向 |  |
eg:想向这个文件中放入多行
```python
cat >>/data/oldboy.txt<<EOF
I
am
studying
linux
EOF            # EOF:end of file 可以换成其他写法,但上下EOF需要一致,默认这么写
5.复制、移动、删除
5.1复制:copy —cp
| cp | 复制文件或目录,默认无法复制目录 | 
|---|---|
| cp -r | 递归复制,复制目录及目录里边的内容。 | 
| cp -p | 
复制的时候保持属性不变。 | 
| cp -a #== cp -pdr | 复制所有。 | 
| \cp | 撬棍,复制文件时若有同样不再询问 | 
| /bin/cp | 全名,与撬棍是同样的 | 
| \cp -i | 此时复制文件若有同样的会询问 | 
操作前备份 操作后检查
示例:在/data/目录下复制oldboy.txt文件为oldboy.txt.bak
[root@oldboyedu01 ~]# cp /data/oldboy.txt /data/oldboy.txt.bak [root@oldboyedu01 ~]# ls -l /data/oldboy.txt -rw r r ----. 1 root root 140 Sep 20 01:12 /dat a/oldboy.txt [root@oldboyedu01 ~]# ls -l /data/ total 12 -rw r r ----. 1 root root 10 Sep 20 01:15 num.txt -rw r r ----. 1 root root 140 Sep 20 01:12 oldboy.txt -rw r r ----. 1 root root 140 Sep 20 01:31 oldboy.txt.bak示例:把data文件夹复制到tmp文件夹中
[root@oldboyedu01 ~]# cp -r /data/ /tmp/ #不加r默认无法复制目录 [root@oldboyedu01 ~]# ls -l /tmp/撬棍,全名:\cp /bin/cp
[root@oldboyedu data]# touch /tmp/test.txt /mnt/test.txt # 在两个文件下创建txt [root@oldboyedu data]# cp /mnt/test.txt /tmp/ cp: overwrite `/tmp/test.txt'? ^C [root@oldboyedu data]# \cp /mnt/test.txt /tmp/ # 撬棍 [root@oldboyedu data]# which cp # cp位置 alias cp='cp -i' /bin/cp [root@oldboyedu data]# /bin/cp /mnt/test.txt /tmp/ # 全名 [root@oldboyedu data]# \cp -i /mnt/test.txt /tmp/ # 撬棍下再提示 cp: overwrite `/tmp/test.txt'? ^C
5.2移动:move mv
- 示例:把/data/移动到/root/下
[root@oldboyedu01 ~]# mv /data/ /root/ [root@oldboyedu01 ~]# ls -l /root/ total 40 -rw --------------. 1 root root 1052 Sep 18 15:44 anaconda ks.cfg drwxr-xr x. 2 root root 4096 Sep 20 01:31 data -rw r r ----. 1 root root 21736 Sep 18 15:44 install.log -rw r r ----. 1 root root 5890 Sep 18 15:43 install.log.syslog [root@oldboyedu01 ~]# ls -l /data ls: cannot access /data: No such file or directory #没有这个文件。5.3删除:rm
 
| rm | 删除 | 
|---|---|
| rm -r | 递归删除(会一个文件一个文件询问) | 
| rm -f | 删除所有 | 
- 示例:进入 /root 目录下的 data 目录,删除 oldboy.txt 文件
[root@oldboyedu data]# [root@oldboyedu data]# cd /root/data/ [root@oldboyedu data]# ls -l total 8 -rw-r--r--. 1 root root 60 Mar 25 17:52 oldboy.txt -rw-r--r--. 1 root root 60 Mar 25 18:15 oldboy.txt.bak [root@oldboyedu data]# rm oldboy.txt rm: remove regular file `oldboy.txt'? ^C # 确定要删除这个文件吗? [root@oldboyedu data]# rm -f oldboy.txt # -f代表你确定要删除这个文件 [root@oldboyedu data]# ls -l total 4 -rw-r--r--. 1 root root 60 Mar 25 18:15 oldboy.txt.bak6.find命令
6.1find
| find 查找文件
| find 哪里 类型 名字 | | —- | —- | | -maxdepth | 最大深度 | | -type 找什么类型的 | f file 文件
d directory 目录 | | -name | 什么名字 | | -mtime | 根据修改时间找出对应的文件 | 
[root@oldboyedu tmp]# touch /root/data/oldboy.txt
[root@oldboyedu01 tmp ]# #find /root/ -type f -name "oldboy.txt"
[root@oldboyedu01 tmp]# #find 在哪里找 找什么类型的 找什么名字
6.2type
-type     找什么类型的
f file 文件
d directory 目录
6.3管道
find 文件 |xargs 命令:把命令传给找到的文件。
- 示例:
[root@oldboyedu01 tmp]# find /root/ -type f -name "oldboy.txt" /root/data/oldboy.txt [root@oldboyedu01 tmp]# find /root/ -type f -name "oldboy.txt"|xargs ls -l -rw r r ----. 1 root root 0 Sep 20 02:27 /root/data/oldboy.txt 
7.特殊命令
| alias | alias                     查看所有别名 alias 命令 查看当前命令的别名  | 
|---|---|
| hostname | 查看当前主机名 | 
| rpm:包管理命令 | rpm -qa |grep tree     查看tree是否安装 rpm -qa tree 查看tree是否安装 rpm -ql tree 查看软件包里面的内容  | 
| ! | 取反 | 
| help:查询帮助 | help cd        查询帮助cd man ls 查询帮助ls  | 
| date -s 时间 | date -s “20200411 13:42:30” 修改时间 | 
| `` 或$() | 先运行里边的内容,把显示到屏幕的结果留下。 | 
- 查看别名的两种用法:alias ```python [root@oldboyedu data]# alias alias cp=’cp -i’ alias l.=’ls -d .* —color=auto’ alias ll=’ls -l —color=auto’ alias ls=’ls —color=auto’ alias mv=’mv -i’ alias rm=’rm -i’ alias which=’alias | /usr/bin/which —tty-only —read-alias —show-dot —show-tilde’ [root@oldboyedu data]# alias rm cp alias rm=’rm -i’ alias cp=’cp -i’
 
```
