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.txt
test
liyao
oldboy
[root@oldboyedu data]# grep 'oldboy' test.txt
oldboy
[root@oldboyedu data]# grep -v 'oldboy' test.txt
test
liyao
取出前n行:head
[root@oldboyedu data]# head test.txt
test
liyao
oldboy
[root@oldboyedu data]# head -n2 test.txt
test
liyao
取出后n行:tail
[root@oldboyedu data]# tail -1 test.txt
oldboy
[root@oldboyedu data]# tail test.txt
test
liyao
oldboy
删除oldboy这一行:sed
[root@oldboyedu data]# sed '/oldboy/d' test.txt
test
liyao
生成序列:seq
[root@oldboyedu ~]# seq 4
1
2
3
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
- 方法二:head+管道+tail
```python
[root@oldboyedu ~]# head -30 /oldboy/ett.txt |tail -11 # 先取前30行再取后11行
20
......
29
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’
```