查命令:man.linux.net (需要翻墙)

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 号码
  • 创建多级目录
    1. [root@oldboyedu data]# mkdir -p /oldboy/test
    2. [root@oldboyedu data]# ls /oldboy/
    3. 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 结尾的文件

    1. [root@oldboyedu01 tmp]# find /root/ -type f -name "*.txt"
    2. /root/data/oldboy.txt
    3. /root/data/num.txt
  • 过滤:grep

    1. [root@oldboyedu data]# cat test.txt
    2. test
    3. liyao
    4. oldboy
    5. [root@oldboyedu data]# grep 'oldboy' test.txt
    6. oldboy
    7. [root@oldboyedu data]# grep -v 'oldboy' test.txt
    8. test
    9. liyao
  • 取出前n行:head

    1. [root@oldboyedu data]# head test.txt
    2. test
    3. liyao
    4. oldboy
    5. [root@oldboyedu data]# head -n2 test.txt
    6. test
    7. liyao
  • 取出后n行:tail

    1. [root@oldboyedu data]# tail -1 test.txt
    2. oldboy
    3. [root@oldboyedu data]# tail test.txt
    4. test
    5. liyao
    6. oldboy
  • 删除oldboy这一行:sed

    1. [root@oldboyedu data]# sed '/oldboy/d' test.txt
    2. test
    3. liyao
  • 生成序列:seq

    1. [root@oldboyedu ~]# seq 4
    2. 1
    3. 2
    4. 3
    5. 4
  • 查看文件的第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

  1. - 方法二:head+管道+tail
  2. ```python
  3. [root@oldboyedu ~]# head -30 /oldboy/ett.txt |tail -11 # 先取前30行再取后11行
  4. 20
  5. ......
  6. 29
  7. 30
  • 方法三: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.bak
    

    6.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’

```