Linux基础
参考文档https://blog.csdn.net/dengjin20104042056/article/details/94669639
目录
命令行终端颜色设置(命令行执行)
PS1='[${debian_chroot:+($debian_chroot)}\[\033[01;33;1m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]]\$ '
Linux中不同文件颜色的文件类型
颜色 说明
-----------------------------
绿色文件 可执行文件,可执行的程序
红色文件 压缩文件或者包文件
蓝色文件 目录
白色文件 普通,如文本文件,配置文件,源码文件等
浅蓝色文件 链接文件,主要是使用ln命令建立的文件
红色闪烁 表示链接的文件有问题
黄色文件 表示设备文件
灰色文件 表示其它文件
文件磁盘管理
—pwd
参考 https://blog.csdn.net/dengjin20104042056/article/details/95521097
操作
- 查看当前目录绝对路径
- 查看上次工作目录
- 如果目录是个符号链接,pwd 显示链接(link)路径;pwd -P 显示实际路径
- 查看pwd命令的版本
- 查看帮助信息
命令
1.查看当前目录绝对路径
echo $PWD
2.查看上次工作目录
echo $OLDPWD
3.如果目录是个符号链接,pwd 显示链接(link)路径;pwd -P 显示实际路径
pwd -P
4.查看pwd命令的版本
/usr/bin/pwd --version
5.查看帮助信息
/usr/bin/pwd --help
—cd
参考 https://blog.csdn.net/dengjin20104042056/article/details/95528739
操作
- 切换到当前工作目录
- 切换到上级目录
- 切换到上上级目录
- 进入当前用户的家目录
- 切换至带有空格的目录
- 把上个命令的参数作为cd参数使用 !$表示
- 使用相对路径切换目录
- 使用绝对路径切换目录
- 使用通配符切换目录(匹配到多个情况下默认选择第一个进入)
- 进入上次工作目录
命令
1.切换到当前工作目录
cd .
2.切换到上级目录
cd ..
3.切换到上上级目录
cd ../..
4.进入当前用户的家目录
cd -
5.切换至带有空格的目录
cd "test dir" 或者 cd 'test dir'
6.把上个命令的参数作为cd参数使用 !$表示
ls -i /etc
cd !$
7.使用相对路径切换目录
cd testdir
8.使用绝对路径切换目录
cd /home/testdir
9.使用通配符切换目录(匹配到多个情况下默认选择第一个进入)
cd t*
10.进入上次工作目录
cd ~
—mkdir
参考 https://blog.csdn.net/dengjin20104042056/article/details/95595345
操作
- 创建一个空目录
- 创建权限为755的目录
- 递归创建多个目录
- 创建目录的过程中显示信息
- 创建项目的目录结构
- 如果没有权限,则不能创建目录
- 批量创建目录
- 创建存在或不存在的目录
命令
1.创建一个空目录
mkdir testdir
2.创建权限为755的目录
mkdir -m 755
3.递归创建多个目录
mkdir -p a/b/c
4.创建目录的过程中显示信息
mkdir -p -v a/b/c
mkdir: created directory ‘a’
mkdir: created directory ‘a/b’
mkdir: created directory ‘a/b/c’
5.创建项目的目录结构
mkdir project/requests/{bin,lib,language/{en,zh},doc/{chm,pdf,word}} -v -p
project
`-- requests
|-- bin
|-- doc
| |-- chm
| |-- pdf
| `-- word
|-- language
| |-- en
| `-- zh
`-- lib
6.如果没有权限,则不能创建目录
mkdir /project
mkdir: cannot create directory ‘/project’: Permission denied
7.批量创建目录
mkdir html{1..9}
html1 html2 html3 html4 html5 html6 html7 html8 html9
8.创建存在或不存在的目录
mkdir -p a/b/c
—rmdir
参考 https://blog.csdn.net/dengjin20104042056/article/details/95599920
操作
- 删除空目录
- 删除多个空目录
- 删除指定目录及其上级目录
- 删除非空目录报错
- 删除过程中显示详细信息
命令
1.删除空目录
rmdir testdir
2.删除多个空目录
rmdir testdir1 testdir2
3.删除指定目录及其上级目录
rmdir -p a/b/c
4.删除非空目录报错
rmdir testdir
rmdir: failed to remove ‘a’: Directory not empty
5.删除过程中显示详细信息
rmdir -p -v a/b/c
—ls
参考 https://blog.csdn.net/dengjin20104042056/article/details/95664645
操作
- 查看当前目录下内容
- 查看当前目录下文件以及其属性信息
- 以易于阅读的格式输出文件大小
- 列出目录下所有文件,包括隐藏文件
- 显示每个文件的inode 号
- 显示完整的时间
- 递归显示子目录
- 列出文件并标记颜色分类
- 按照特殊字符对文件进行分类
- 按修改时间倒序列出文件和文件夹详细信息
- 根据修改时间排序
- 显示目录详细信息
- 打印文件的UID和GID
- 所有项目以逗号分隔,并填满整行行宽
- 显示指定文件的详细信息
- 对目录加上表示符号"/"
- 逆序排列
- 根据文件大小排序
命令
1.查看当前目录下内容
ls
2.查看当前目录下文件以及其属性信息
ls -l
3.以易于阅读的格式输出文件大小
ls -lh
4.列出目录下所有文件,包括隐藏文件
ls -a
5.显示每个文件的inode 号
ls -i
6.显示完整的时间
ls --full-time
7.递归显示子目录
ls -R /root
8.列出文件并标记颜色分类
ls --color=auto
9.按照特殊字符对文件进行分类
ls -F
10.按修改时间倒序列出文件和文件夹详细信息
ls -ltr
11.根据修改时间排序
ls -lt
12.显示目录详细信息
ls -ld /etc
13.打印文件的UID和GID
ls -n
14.所有项目以逗号分隔,并填满整行行宽
ls -m
15.显示指定文件的详细信息
ls -l 1.c
16.对目录加上表示符号"/"
ls -p
17.逆序排列
ls -lr
18.根据文件大小排序
ls -lS
—mv
参考 https://blog.csdn.net/dengjin20104042056/article/details/95677991
操作
- 重命名文件
- 移动文件到指定目录中
- 批量移动文件到指定目录中
- 批量移动文件到指定目录中 -t选项
- 覆盖前询问
- 覆盖前不询问
- 移动目录
- 移动当前文件夹下的所有文件到上一级目录
- 将上级目录的文件移动到当前目录中
- 创建备份文件
- 详细显示进行的步骤
- 更新选项
- 不覆盖已存在文件
命令
1.重命名文件
mv 1.sh 2.sh
2.移动文件到指定目录中
mv 2.sh testdir
3.批量移动文件到指定目录中
mv 1.sh 2.sh testdir
4.批量移动文件到指定目录中 -t选项
mv -t a html{1..10}
5.覆盖前询问
mv -i 1.sh testdir
6.覆盖前不询问
mv -f 1.sh testdir
7.移动目录
mv testdir1 testdir2
8.移动当前文件夹下的所有文件到上一级目录
mv * ../
9.将上级目录的文件移动到当前目录中
mv ../2.sh ./
10.创建备份文件
mv -bv 2.sh ../
11.详细显示进行的步骤
mv -v ../2.sh ./
12.更新选项(只在源文件文件比目标文件新,或目标文件不存在时才进行移动)
mv -fu 2.sh ../
13.不覆盖已存在文件(目标目录已存在文件不移动)
mv -n 2.sh ../
—cp
参考 https://blog.csdn.net/dengjin20104042056/article/details/95799663
操作
-
复制文件
-
复制一个文件到目录中
-
拷贝多个文件到指定目录中
-
递归复制目录及其子目录内的所有内容
-
创建文件的硬链接,而不是拷贝
-
只创建符号链接而不复制文件
-
不跟随源文件中的符号链接
-
总是跟随符号链接
-
拷贝目录,符号链接也会被拷贝
-
详细显示命令执行的操作
-
覆盖前询问(使前面的 -n 选项失效)
-
覆盖已存在的文件目标前将目标文件备份
-
只拷贝文件属性,不拷贝文件内容
-
强制拷贝文件
命令
1.复制文件
cp 1.sh testdir/1.sh
2.复制一个文件到目录中
cp 1.sh testdir/
3.拷贝多个文件到指定目录中
cp a b c testdir/
4.递归复制目录及其子目录内的所有内容
cp testdir1 testdir2
5.创建文件的硬链接,而不是拷贝
cp -l a aa.hlink
6.创建文件的软链接,而不是拷贝
cp -s a a.slink
7.软链接完全复制(复制时附带软链接所指的对象)
cp -P 2.sh.link1 2.sh.link2
8.软链接不完全复制(复制时不附带软链接所指的对象,成为一个文件)
cp 2.sh.link1 2.sh.link2 或者 cp -L 2.sh.link1 2.sh.link2
9.拷贝目录,软硬链接也会被拷贝
cp -r * testdir/
10.详细显示命令执行的操作
cp -v * 1.sh ../1.sh
11.覆盖前询问(默认询问,使前面的 -n 选项失效)
cp -i * testdir/
12.覆盖已存在的文件目标前将目标文件备份
cp -bv 2.sh testdir/
13.只拷贝文件属性,不拷贝文件内容
cp --attributes-only 1.sh ../2.sh
14.强制拷贝文件
cp -fv * ../
—touch
参考 https://blog.csdn.net/dengjin20104042056/article/details/95811760
操作
- 创建新文件
- 创建多个文件
- 更改文件全部时间属性
- 更新最近更改时间(Change)
- 更新修改时间(Modify)
- 更改文件时间戳(Modify)
- 使用指定文件的时间属性(Access,Modify)替代当前时间
命令
1.创建新文件
touch file
2.创建多个文件
touch file1 file2
3.更改文件全部时间属性
stat file
File: ‘file’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 394471 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-10-13 21:19:29.163105345 +0800
Modify: 2019-10-13 21:19:29.163105345 +0800
Change: 2019-10-13 21:19:29.163105345 +0800
Birth: -
touch file
stat file
File: ‘file’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 394471 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-10-13 21:22:13.054120560 +0800
Modify: 2019-10-13 21:22:13.054120560 +0800
Change: 2019-10-13 21:22:13.054120560 +0800
4.更新最近更改时间(Change)
touch -a file
5.更新修改时间(Modify)
touch -m file
6.更改文件时间戳(Modify)
touch -t 201910122122.30
7.使用指定文件的时间属性(Access,Modify)替代当前时间
touch -r b a # 将文件b的时间属性给文件a
—rm
参考 https://blog.csdn.net/dengjin20104042056/article/details/95920149
操作
- 删除文件,不加任何选项
- 同时删除多个文件 每个文件以空格分隔
- 强制删除。忽略不存在的文件,不提示确认
- 详细显示进行的步骤
- 在删除前需要确认
- 递归删除目录及其内容
- 删除链接文件
- 删除以“-”开头的文件
- 自定义回收站功能
命令
1.删除文件,不加任何选项
rm a
2.同时删除多个文件 每个文件以空格分隔
rm a b
3.强制删除。忽略不存在的文件,不提示确认
rm -f a
4.详细显示进行的步骤
rm -v a b c d
5.在删除前需要确认
rm -i a
6.递归删除目录及其内容
rm -r testdir
7.删除所有指定类型文件(以c文件为例)
rm *.c
8.删除以“-”开头的文件
rm -- -file 或者 rm ./-file
9.自定义回收站功能
myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
—file
参考 https://blog.csdn.net/dengjin20104042056/article/details/95920149
操作
- 显示文件类型
- 显示文件类型,不显示文件名称
- 显示文件类型, 显示MIME类别,不显示文件名称
- 显示符号链接的文件类型
- 显示符号连接所指向的文件类型
- 查看文件中的文件名的文件类型
- 使用指定分隔符号替换输出文件名后的默认的":"分隔符
- 尝试去解读压缩文件的内容
命令
1.显示文件类型
file 1.sh
2.显示文件类型,不显示文件名称
file -b 2.py
3.显示文件类型, 显示MIME类别,不显示文件名称
file -bi 2.py
4.显示符号链接的文件类型
file a.link
5.显示符号连接所指向的文件类型
file -L a.link
>>a.link: directory
6.查看文件中的文件名的文件类型
cat a.txt
>>/home
>>/etc
file -f a.txt
>>/home: directory
>>/etc: directory
7.使用指定分隔符号替换输出文件名后的默认的":"分隔符
file -F '--' a.txt
>>a.txt-- ASCII text
8.尝试去解读压缩文件的内容
file -z Python-3.7.0.tgz
>>Python-3.7.0.tgz: POSIX tar archive (GNU) (gzip compressed data, from Unix, last modified: Wed Jun 27 14:06:02 2018, max compression)
—cat/tac
参考 https://blog.csdn.net/dengjin20104042056/article/details/95923178#02__9
操作
- 查看文件的内容
- 查看文件的内容,并显示行数编号
- 查看文件的内容,并添加行数编号后输出到另外一个文件中
- 清空文件的内容
- 持续写入文件内容,碰到EOF符后结束并保存
- 将软盘设备制作成镜像文件
- 将所有的连续的多个空行替换为一个空行
- 将所有的连续的多个空行替换为一个空行,并且所有输出行编号
- 对非空输出行编号
- 在每行结束处显示 $
- 合并文件内容
- 创建新文件
- 复制文件
- 插入多行
命令
1.查看文件的内容
cat /etc/passwd
2.查看文件的内容,并显示行数编号
cat -n /etc/passwd
3.查看文件的内容,并添加行数编号后输出到另外一个文件中
cat -n /etc/passwd > file.txt
4.清空文件的内容
cat /dev/passwd > file.txt
5.持续写入文件内容(ctrl+c结束输入)
cat > file.txt
6.将软盘设备制作成镜像文件
cat /dev/fd0 > disk.iso
7.将所有的连续的多个空行替换为一个空行显示
cat -s file.txt
8.将所有的连续的多个空行替换为一个空行,并且所有输出行编号
cat -sn file.txt
9.对非空输出行编号
cat -b file.txt
10.在每行结束处显示 $
cat -E file.txt
11.合并文件内容(将1.txt和2.txt的内容合并到3.txt)
cat 1.txt 2.txt > 3.txt
12.创建新文件(ctrl+c结束输入)
cat > 1.sh
13.复制文件
cat file.txt > file1.txt
14.插入多行(可自定义结束符)
cat >>file.txt<< EOF
tac命令为是由最后一行到第一行反向显示,选项不变
—more
参考 https://blog.csdn.net/dengjin20104042056/article/details/95928636
操作
- 查看文件内容, 按下回车向下浏览
- 指定每屏显示行数
- 从文件第 NUM 行开始显示
- 从匹配搜索字符串 STRING 的文件位置开始显示
- 与管道组合使用
- 将多个空行压缩为一行
命令
1.查看文件内容, 按下回车向下浏览
more /etc/passwd
2.指定每屏显示行数
more -5 /etc/passwd
3.从文件第 NUM 行开始显示
more +2 /etc/passwd
4.从匹配搜索字符串 STRING 的文件位置开始显示
more +/ftp /etc/passwd #使用选项 +/STRING,从文件中查找第一个出现“Unix”字符串的行,并从该处前两行开始显示输出。
5.与管道组合使用
top | more
6.将多个空行压缩为一行
more -s file.txt
—less
参考 https://blog.csdn.net/dengjin20104042056/article/details/95930905
操作
- 查看文件内容
- 执行命令,然后分页显示
- 查看命令历史使用记录并通过less分页显示
- 浏览多个文件
命令
1.查看文件内容
less /etc/passwd
2.执行命令,然后分页显示
ps -aux | less
3.查看命令历史使用记录并通过less分页显示
history | less
4.浏览多个文件
less 1.txt 2.txt # :n - 浏览下一个文件 :p - 浏览前一个文件
—head
参考 https://blog.csdn.net/dengjin20104042056/article/details/95936835
操作
- 显示文件前10行
- 显示文件前5行
- 显示文件的前 K 字节的内容
- 显示除了文件最后k个字节以外的全部内容
- 显示除了文件最后 k 行以外的全部内容
- 显示多个文件
- 显示多个文件, 但是不显示标题
- 显示多个文件, 但是显示标题
命令
1.显示文件前10行
head /etc/passwd
2.显示文件前5行
head -n 5 /etc/passwd
3.显示文件的前 K 字节的内容
head -c k /etc/passwd
4.显示除了文件最后k个字节以外的全部内容
head -c -k /etc/passwd
5.显示除了文件最后 k 行以外的全部内容
head -n -k /etc/passwd
6.显示多个文件
head 1.txt 2.txt
7.显示多个文件, 但是不显示标题
head -q 1.txt 2.txt
8.显示多个文件, 但是显示标题
head -v 1.txt 2.txt
—tail
参考 https://blog.csdn.net/dengjin20104042056/article/details/95937014
操作
- 输出文件最后10行
- 输出最后 n 行的内容
- 从第n行开始显示文件的内容
- 输出最后n个字节的内容
- 显示多文件最后k行,并且不显示文件名的文件头
- 显示多文件最后k行,并且显示文件名的文件头
- 当文件增长时,动态查看文件追加的内容
- 组合使用
命令
1.输出文件最后10行
tail /etc/passwd
2.输出最后 n 行的内容
tail -n 5 /etc/passwd
3.从第n行开始显示文件的内容
tail -n +20 /etc/passwd
4.输出最后n个字节的内容
tail -c 5 /etc/passwd
5.显示多文件最后k行,并且不显示文件名的文件头
tail -q /etc/passwd
6.显示多文件最后k行,并且显示文件名的文件头
tail -n 15 /etc/passwd
7.当文件增长时,动态查看文件追加的内容
tail -f file.txt
8.组合使用
cat /etc/passwd | tail -n 5
—cut
参考 https://blog.csdn.net/dengjin20104042056/article/details/96114261
操作
- 提取每一行的第一个字符
- 提取每一行第 1 3 5个字符
- 提取每一行第 1-5 个字符
- 提取每一行第 1-5 个字符
- 提取每一行第 3个字符以后的
- 提取每一行的第一个汉字
- 提取前面两个汉字
- 提取前面三个汉字
- 提取前面四个汉字
- 以:分隔,将文件每一行分成若干列,显示第一列
- 打印除了第二个字符之外的列
- 定义以空格分隔,然后输出第二个字段
命令
1.提取每一行的第一个字符
cut -b 1 test.txt
2.提取每一行第 1 3 5个字符
cut -b 1,3,5 test.txt
3.提取每一行第 1-5 个字符
cut -b 1-5 test.txt
4.提取每一行第 1-5 个字符
cut -b -5 test.txt
5.提取每一行第 3个字符以后的
cut -b 3- test.txt
6.提取每一行的第一个汉字
cut -c 1 test.txt 或者 cut -nb 1 test.txt
7.提取前面两个汉字
cut -c 1,2 test.txt 或者 cut -nb 1,2 test.txt
8.提取前面三个汉字
cut -c -3 test.txt 或者 cut -nb -3 test.txt
cut -c 1-3 test.txt 或者 cut -nb 1-3 test.txt
9.提取前面四个汉字
cut -c -4 test.txt 或者 cut -nb -4 test.txt
cut -c 1-4 test.txt 或者 cut -nb 1-4 test.txt
10.以:分隔,将文件每一行分成若干列,显示第一列
cut -d : -f1 /etc/passwd
11.打印除了第一个和第二个字符之外的列
cut -c 1,2 --complement test.txt
12.定义以空格分隔,然后输出第二个字段
cut -d ' ' -f2 test.txt
—which
参考 https://blog.csdn.net/dengjin20104042056/article/details/96118987
操作
- 显示命令的路径
- 显示命令的别名
- 普通用户查找的情形
root用户查找的情形 - 查找不到内建命令
命令
1.显示命令的路径
which bash
2.显示命令的别名
which ls
3.
普通用户查找的情形
which pwd
>>/usr/bin/pwd
root用户查找的情形
which pwd
>>/bin/pwd
4.查找不到内建命令
which type
—locate
参考 https://blog.csdn.net/dengjin20104042056/article/details/96122308
操作
- 查找包含某个字符串的相关文件
- 搜索目录下所有以 sh开头的文件
- 指定显示数量
- 匹配模式时忽略大小写区别
- 搜索基本正则表达式 REGEXP 来代替模式
- 查找最近变动的文件
- 查看统计信息
- 查看passwd统计数量
- update相关配置文件
命令
1.查找包含某个字符串的相关文件
locate ipconfig
2.搜索目录下所有以 sh开头的文件
locate /bin/sh
3.指定显示数量
locate -n 3 passwd
4.匹配模式时忽略大小写区别
locate -i passwd
5.搜索基本正则表达式 REGEXP 来代替模式
locate -r ^/var/lib/rpm
查找以sh结尾的文件
locate -r sh$
6.查找最近变动的文件
locate ~/file.txt
7.查看统计信息
locate -S
8.统计包含文件passwd的数量
locate -c passwd
9.update相关配置文件
vim /etc/updatedb.conf
10.更新数据库
updatedb
—find
参考
操作
- 列出当前目录及子目录下所有文件和文件夹
- 在/home目录下查找以.txt结尾的文件名
- 在/home目录下查找以.txt结尾的文件名,忽略大小写
- 当前目录及子目录下查找所有以.txt和.pdf结尾的文件
- 匹配文件路径或者文件
- 基于正则表达式匹配文件路径
- 基于正则表达式匹配文件路径,忽略大小写
- 找出当前目录下不是以.txt结尾的文件
- 根据类型查找对应的文件
- 向下最大深度限制为3
- 搜索出深度距离当前目录至少2个子目录的所有文件
- 根据文件时间戳进行搜索
- 根据文件大小进行匹配
- 删除当前目录下所有.txt文件
- 根据文件权限进行匹配
命令
1.列出当前目录及子目录下所有文件和文件夹
find 或者 find ./
2.在/home目录下查找以.txt结尾的文件名
find /home -name '*.txt'
3.在/home目录下查找以.txt结尾的文件名,忽略大小写
find /home -iname '*.txt'
4.当前目录及子目录下查找所有以.txt和.pdf结尾的文件
find ./ -name '*.txt' -o -name '.*pdf'
5.匹配文件路径或者文件
find /usr -path '*local'
6.基于正则表达式匹配文件路径
7.基于正则表达式匹配文件路径,忽略大小写
8.找出当前目录下不是以.txt结尾的文件
find ./ ! -name '*.txt'
9.根据类型查找对应的文件
10.向下最大深度限制为3
11.搜索出深度距离当前目录至少2个子目录的所有文件
12.根据文件时间戳进行搜索
13.根据文件大小进行匹配
14.删除当前目录下所有.txt文件
15.根据文件权限进行匹配
信息显示
—uname
—uptime
网络管理
—ping
命令格式
相关操作
1.临时允许ping
[root@localhost ~]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
2.临时禁用ping
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
3.永久禁用ping
/etc/sysctl.conf
中增加一行
net.ipv4.icmp_echo_ignore_all=1 # 1表示禁止
执行 sysctl -p
立即生效
4.永久使能ping
/etc/sysctl.conf
中增加一行
net.ipv4.icmp_echo_ignore_all=0 # 0表示允许
执行 sysctl -p
立即生效