ubuntu 常用命令
一、文件和目录操作
文件和目录常用命令
| 命令 | 含义 | 对应的英文 |
| ls | 列出目录下所有项 | list |
| pwd | 显示当前位置 | print wrok directory |
| cd | 切换目录 | change directory |
| touch | 创建文件 | |
| rm | 删除文件 | remove |
| mkdir | 创建目录 | make directory |
| cp | 拷贝 | |
| mv | 移动 |
终端命令格式
command [-options] [parameter]
command 命令名,相应功能的英文单词或单词的缩写
[-options] 选项,可用来对命令进行额外的控制,也可以省略
[parameter] 传给命令的参数,可以是零个、一个或多个
1、常用的命令
touch 创建文件
touch 321.txt
mkdir 创建目录
mkdir aaa
rm 删除一个文件
rm 321.txt
rm 虽然也可以删除目录,但需要额外设置 -r
rm -r aaa
小技巧
ctrl shift = 放大终端字体
ctrl - 缩小终端字体
为什么两个快捷键这么奇怪呢?
打开虚拟键盘
按下shift 键,等号 = 变加号 +
按下shift 键,减号 - 变下划线 _
因此放大是 ctrl +,缩小是 ctrl -
2、列出目录
ls 列出目录的内容,类似于 DOS 下的 dir 命令
linux 文件和目录的特点
1. 文件或目录名称最长可以有 256 个字符
2. 以 . 开头的目录或文件为隐藏文件,
就是文件名的第一个字符是 . 该文件就是隐藏文件,需要参数 -a 才能显示, 既 all 的缩写
3. . 代表当前目录
4. .. 代表上一级目录,既 cd .. 回到上级目录
ls 加上参数 -a 可以看到隐藏文件
touch 123.txt touch .123.txt ls -a
查看指定路径
ls / - 斜杠表示根目录,查看根目录 ls /home/summer
ls 命令的常用选项
| 参数 | 含义 |
| -a | 显示目录下面所有的目录和文件,包括隐藏文件 |
| -l | 以列表的方式显示文件的详细信息 |
| -h | 单独使用没有用,必须要配合 -l 一起使用,以人性化的方式显示文件大小,就是看文件的大小更直观 |
| -d | 不递归 |
-l 以列表方式显示
-h 文件单位显示 4.0k 看着方便
ls -l -h
-rw-rw-r-- 1 summer summer 25 5月 26 21:10 123.txt
drwxrwxr-x 2 summer summer 4.0K 5月 26 21:04 file
列表第一个字符
- 表示文件
d 表示目录
多个参数可以连着写
ls -lha
home/summer 当前家目录中,显示很多隐藏文件和文件夹,
是我们安装过软件的配置文件,保存着安装过软件的配置内容,
比如 .vim、.viminfo、sunpinyin 等... 这些我们不用理会
查看目录权限
-d 表示仅列出该目录的属性,而不会递归内部内容
ls -ld /opt/software/
2. ls 和通配符的联合使用
如果目录中的文件非常多,通配符可以帮我们快速精确的定位到我们需要找文件
| 通配符 | 含义 |
| * | 代表任意个数字符 |
| ? | 代表任意一个字符,至少有一个字符 |
| [] | 表示可以匹配字符串组的任一个字符 |
| [abc] | 匹配 a、b、c 中任意一个 |
| [a-f] | 匹配从 a 到 f 范围内任意一个字符 |
创建几个 txt 文件
touch 111.txt 121.txt 123.txt 223.txt 323.txt 423.txt 523.txt
列出以数字 1 开头的文件
数字 1 开头
* 代表任意多个字符
ls 1*
111.txt 121.txt 123.txt
以数字 3 结尾的文件
ls *3.txt
123.txt 223.txt 323.txt 423.txt 523.txt
因为 * 星号代表任意多的字符(* 表示结尾部分的 .txt)
3 后面也写一个星号,也可以找到以 3 结尾的
ls *3*
123.txt 223.txt 323.txt 423.txt 523.txt
? 只能代表一个字符,
列出的文件名
前后分别是数字 1
中间是任意一个字符
ls 1?1.txt
111.txt 121.txt
文件名中间是 2 的,全部列出来
ls ?2?.txt
121.txt 123.txt 223.txt 323.txt 423.txt 523.txt
在创建一个 11.txt
用 1?1.txt 不能列出 11.txt,因为前后是数字 1 中间没有内容
换成星号 1*1.txt 就可以了,结果显示出三个文件
touch 11.txt ls 1?1.txt --111.txt 121.txt ls 1*1.txt --111.txt 11.txt 121.txt
创建 1abc1.txt 文件
星号代表任意个数的字符,用星号可以匹配出该文件(? 号只能代表一个字符,匹配不出来)
touch 1abc1.txt ls 1*1.txt
111.txt 11.txt 121.txt 1abc1.txt
[] 中括号可以定义一个匹配定义的字符组
1. 只要以 23.txt 结尾
2. 同时前面一个字符是 [12345] 内指定的一个
ls [12345]23.txt
123.txt 223.txt 323.txt 423.txt 523.txt
[2-5] 列出 2 到 5 之间开头的文件
ls [2-5]23.txt
223.txt 323.txt 423.txt 523.txt
3、切换目录
cd 命令更改当前的工作目录
回到 /home/summer 工作目录的两种方式
cd cd ~
. 保持当前目录不变
.. 切换到上级目录
cd . cd ..
在最近两次的工作目录之前来回切换
cd -
相对路径和绝对路径
相对路径 在输入路径时,最前面不是 / 或者 ~,表示相对 当前目录 所在的目录位置
绝对路径 在输入路径时,最前面是 / 或者 ~,表示从 根目录 或 家目录 开始的具体目录位置
注意,
Linux 的目录和文件名都是大小写敏感的
绝对路径 是不管当前所在目录是哪里,只要最前面是 / 或者 ~,切换到指定的目录
cd ~/Documents/ cd / cd /home/summer/Desktop
相对路径不需要斜线(例如,当前位置家目录 /home/summer/)
cd Desktop/ cd ../Documents/ -- 切换到上级 summer 家目录,然后再切换到上级目录下的 Documents 目录
4、创建和删除
touth 创建文件或修改文件时间
如果文件不存在,则创建一个空白文件
如果文件存在,则修改文件的末次修改日期
文件 111.txt 已经存在,再使用 toucha 命令会更新文件的修改时间
touth 111.txt
-rw-rw-r-- 1 summer summer 0 5月 31 15:55 111.txt
-rw-rw-r-- 1 summer summer 0 5月 31 16:40 111.txt 更新了时间
mkdir 创建一个新文件
连续创建 /a/b/c/d 多级目录
cd ~/桌面 mkdir a cd a mkdir b cd b mkdir c cd c mdir d cd ~/桌面 --返回到桌面,~表示家目录
mkdir 命令选项
| 选项 | 含义 |
| -p | 可以递归创建目录 |
使用 -p 一次性把四个目录全部创建出来
mkdir -p a1/b2/c3/d4 cd a1/b2/c3/d4/ - 进入d4目录
在当前同一个目录下面,文件和目录允许不重名
touch 123 mkdir 123 --提示123已经存在,无法创建
rm 既可以删除文件也可以删除目录
需要注意使用 rm 是直接从磁盘上删除不能恢复,不会像图形界面那样删到回收站
rm 命令选项
| 选项 | 含义 |
| -r | 递归删除目录下的内容,删除文件夹时必须加上该参数 |
| -f | 强制删除,忽略不存在的文件,同时不会有任何提示 |
上面说过 rm 命令不能直接删除目录
删除目录要加 -r
加上 -r 后同时可以一次删除多级目录
rm -r a1
删除不存在的目录 abc 会提示
rm abc --没有这个文件
加上 -f 在删除不存在的目录,就不会有提示信息了
rm -f abc
上面说过 ls 命令可以使用通配符,
比如 * 号可以任意多个字符,下面列出以 3 结尾的文件
ls *3.txt
rm 命令也可以使用通配符,
比如删除所有以 3 结尾的文件
rm *3.txt
这样会删除当前所在目录下所有的文件以及目录,包括递归的目录
cd ~/桌面 rm -r *
删库跑路
千万不要在根目录这样操作
cd / rm -rf *
5、拷贝和移动文件
| 命令 | 作用 |
| tree | 以树状结构列出文件以及目录的结构 |
| cp | 复制文件或目录,cp既copy |
| mv | 移动文件或目录 / 文件或目录重命名,mv既 move |
1. tree
tree 命令,以树状图列出文件目录结构
1. 直接执行 tree 命令,显示当前目录的树形结构
2. tree [目录名] 输出指定目录的树形结构
先在桌面创建几个文件
mkdir aaa
touch aaa/123.txt
touch aaa/123(复件).txt
切换到 Desktop 桌面目录
然后直接执行 tree 命令就显示当前目录的树形结构
cd ~/桌面 tree
终端中输出树状结构
.
└── aaa
├── 123(复件).txt
└── 123.txt
首先 . 点就表示当前的目录,而当前的目录是 Decktop
在当前工作 Desktop 下面有一个 aaa 文件夹(文件夹是蓝色字)
aaa 文件夹下面有两个文件(文件是白色字)
在桌面 Desktop 文件夹下创建几个文件夹和文件
mkdir -p a/b/c -- 选项-p一次性创建多个嵌套文件夹 touch a/b/c/123.txt -- 在文件夹c下创建一个123.txt文件 touch a/b/321.txt -- 在文件夹d下创建一个322.txt文件 touch a/b/322.txt tree
整个桌面目录非常像一颗树了
.
├── a
│ └── b
│ ├── 321.txt
│ ├── 322.txt
│ └── c
│ └── 123.txt
└── aaa
├── 123(复件).txt
└── 123.txt
~ 表示用户的家目录,
tree 命令输出指定 ~ 家目录的结构
tree ~
/home/summer 最顶级的显示是用户的家目录,下面出家目录下的文件夹以及文件夹下的文件
├── 公共的
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
├── 桌面
├── a
│ └── b
│ ├── 321.txt
│ ├── 322.txt
│ └── c
│ └── 123.txt
└── aaa
├── 123(复件).txt
└── 123.txt
tree 命令常用的选项只有一个
| 选项 | 含义 |
| -d | 只显示目录,不显示文件 |
-d 只显示目录,不显示文件
tree -d
.
├── a
│ └── b
│ └── c
└── aaa
2. cp 复制
cp 命令既 copy,功能是复制 文件 或 目录,相当于 DOS 下的 copy 命令
1. 复制文件
cp 源文件 目标文件
~ 表示家目录
把 ~/文档/readme.txt 复制到当前桌面文件夹下
当前位置在 Desktop 桌面目录,当前目录可以用点 .,然后加一个 /readme.txt
cp ~/文档/readme.txt ./readme.txt
如果文件名不发生改变,直接指定目标目录就可以了
rm readme.txt --先删除之前复制的文件 cp ~/文档/readme.txt . --指定目标路径,点.代表当前目录
cp 复制命令的选项
| 选项 | 含义 |
| -i | 覆盖文件前提示 |
| -r | 如果复制的是目录,将递归该 目录 下所有的子目录和文件 目标文件必须是一个目录名 |
使用 gedit 打开桌面 readme.txt 文件,修改内容并保持打开
cp ~/文档/readme.txt .
然后在终端中重新执行拷贝
1. 终端中什么都不会提示
2. 但是 gedit 编辑器,会提示桌面的文件已经发生变更,是否确定重新载入?
如果重新载入,之前修改桌面 readme.txt 的内容被覆盖了
加上 -i 如果复制的文件已经存在,会在终端中会有提示
n 表示不覆盖
y 表示覆盖,如果 gedit 打开,会提示是否重新载入
cp -i ~/文档/readme.txt .
2. 复制目录
上面的 rm 命令可删除 文件 或 目录
但并不能直接删除目录,如果删除目录必须加 -r
cp 命令并不能并不能直接复制目录,如果复制目录必须加 -r
cp -r a test tree
源文件文件夹 a 和 目标文件 test 是一样的
.
├── a
│ └── b
│ ├── 321.txt
│ ├── 322.txt
│ └── c
│ └── 123.txt
├── aaa
│ ├── 123(复件).txt
│ └── 123.txt
├── readme.txt
└── test
└── b
├── 321.txt
├── 322.txt
└── c
└── 123.txt
3. mv 移动(剪切)
mv 命令有功能
可以用来移动 文件 或 目录,也可以给 文件 或 目录 重命名
1. 移动目录
移动文件或目标不需要任何参数
只需要命令格式 mv 源文件 目标文件
看一下家目录的结构
tree ~
/home/summer
├── 公共的
├── 模板
├── 视频
├── 图片
├── 文档
│ ├── readme.txt
├── 下载
├── 音乐
└── 桌面
├── a
│ └── b
│ ├── 321.txt
│ ├── 322.txt
│ └── c
│ └── 123.txt
├── aaa
│ ├── 123(复件).txt
│ └── 123.txt
├── readme.txt
└── test
└── b
├── 321.txt
├── 322.txt
└── c
└── 123.txt
比如把当前 Decktop 目录下的 test 移动到 文档 目录
mv test ~/文档 tree ~
桌面的 test 目录没有了,文档目录下多了 test 目录
/home/summer
├── 公共的
├── 模板
├── 视频
├── 图片
├── 文档
│ ├── readme.txt
│ └── test 内部的目录和文件全部移动
│ └── b
│ ├── 321.txt
│ ├── 322.txt
│ └── c
│ └── 123.txt
├── 下载
├── 音乐
└── 桌面
├── a
│ └── b
│ ├── 321.txt
│ ├── 322.txt
│ └── c
│ └── 123.txt
├── aaa
│ ├── 123(复件).txt
│ └── 123.txt
└── readme.txt
2. 移动文件
把桌面目录 a/b/c 中的文件 123.txt 移动到桌面上
当前位置在 Desktop 桌面目录
点 . 表示当前桌面目录(目标目录)
mv a/b/c/123.txt . tree
.
├── 123.txt
├── a
│ └── b
│ ├── 321.txt
│ ├── 322.txt
│ └── c
├── aaa
│ ├── 123(复件).txt
│ └── 123.txt
└── readme.txt
3. 重命名
mv 命令给一个存在的 文件 或 目录 重命名
如果 文件源 和 目录文件 的目录是相同的,但是文件名不同,可以给源文件重命名
实际就是 mv oldName newName
mv readme.txt demo.txt
现在桌面有两个文件 123.txt 和 demoe.txt
1. 两个文件的内容不一样
2. 执行后桌面上只有 123.txt
3. 123.txt 的内容完全被 demo.txt 的内容完全给替换了
mv demo.txt 123.txt
在终端中对文件的操作不能回撤,因此 mv 命令和 cp 命令复制一样需要加 -i
| 选项 | 含义 |
| -i | 覆盖文件前提示 |
文件重命名加上参数 -i,发现已经存在的文件,会提示我们是否覆盖
n 不改变
y readme.txt 文件不见了,同时 123.txt 的内容被 readme.txt 的内容覆盖了
cp 123.txt readme.txt -- 复制一个readme.txt gedit 123.txt -- 修改文件 mv -i readme.txt 123.txt
上面是重命名文件,下面重命名目录
修改目录 a 的名字为 demo
mv a demo
二、文本处理和查看
| 命令 | 含义 |
| 查看文件内容 | |
| cat | 查看文件内容、创建文件、合并文件、追加文件内容等,cat 既 concatenate 链接合并的意思 |
| more | 分屏显示文件内容 |
| 搜索 | |
| grep | 搜索文件内容 |
| 其他 | |
| echo | 传递给命令的参数在终端中在显示一遍,通常 echo 和 重定向 联合使 |
| > 和 >> | 重定向 |
| 管道 | |
| | | 管道 |
1、在终端中 查看 文件内容
在图形界面下用 gedit 查看文件内容,
当通过终端远程登录到服务器时,就不能使用图形界面了,所有的操作都在终端窗口通过命令来实现
1. 两个命令都可以在终端中查看内容
cat 一次性显示出文件的完整内容,适合查看内容较少的内容
more 分屏显示,按空格键显示后续的内容,查看内容比较内容多的文件
cat 123.txt more 123.txt
2. cat 命令两个选项最大的用途,是在终端中查看文件时,可以非常清楚的看到代码的行号
| 选项 | 含义 |
| -b | 行的内容前有编号,空行没有编号 |
| -n | 每一行都有行号,空行也有编号 |
Linux 中还有一个 nl 命令和 cat -b 的效果等价
示例
cat -b 123.txt cat -n 123.txt --显示所有行的行号,包括空行
3. more 命令的操作键
| 操作键盘 | 功能 |
| 空格键 | 显示下一屏 |
| Enter | 一次向下滚动一行 |
| b | 向上回滚一屏 |
| f | 向下滚一屏,跟空格键效果一样 |
| q | 退出 |
| /word | 搜索 word 字符串 |
2、grep 搜索 文件中 是否有指定内容
首先问一个问题
在图形界面中,想要查看一个文件是否包含指定的文本,通常可以用 ctrl + F 搜索一下
Linux 系统中 grep 命令是一种强大的文本搜索工具
grep 允许对文本文件进行 模式 查找,的模式查找又称为正则表达式
1. 基本搜索
在终端中查看 123.txt 中是否包含 as 这个单词
并且文件中所有 as 都高亮显示
grep as 123.txt
2. grep 的选项
| 选项 | 含义 |
| -n | 显示匹配到内容的行号出来 |
| -v | 显示不包含匹配文本的所有行(相当于反向) |
| -i | 忽略大小写 |
-n 显示搜索包含单词 as 行的行号
grep -n as 123.txt
4:sdfasdfasdfadsfasdfasdfasdfadsfasdf
9:sdfasdfasdfadsfasdfasdfasdfadsfasdf
12:sdfasdfasdfadsfasdfasdfasdfadsfasdf
15:sdfasdfasdfadsfasd Hello python fasdfasdfadsfasdf
...
-v 显示所有不包含 as 的行,并且显示行号(结果中包括了空行)
grep -vn as 123.txt
单词中间有一个空格,搜索的内容要用引号引起了
grep -ni "hello python" 123.txt
3. 模式查找,两种常用模式
| 参数 | 含义 |
| ^a | 指定的文本必须出现在一行的行首,搜索以 a 开头的行 |
| ke$ | 指定的文本必须出现在一行的行尾,搜索以 ke 结束的行 |
行首匹配
搜索以 a 开头的行,只有第一个字符 a 会高亮,中间的 a 不会高亮
grep -n ^a 123.txt
行尾匹配
先指定结尾的字母 x
在 x 后面写 $ 符号
grep -n x$ 123.txt
4、其他
1. echo
ecoh 有回声、重复、附和的意思
作用是命令的 参数 在终端中显示一遍
该命令通常和 重定向 联合使
echo Hello Python
Hello Python
2. 重定向 > 和 >>
什么是 Linux 重定向?
命令执行的结果,原本应输出在终端上,重定向是将在终端上内容 输出/追加 到指定文件中
其中
> 表示输出一个文件,会覆盖文件原有的内容
>> 表示追加到一个文件中,会将内容追加到已有的文件末尾
重定向执行后,终端中不显示结果内容
原本应显示在终端上内容,重定向后到一个文件 a 中
桌面多了一个文本文件 a,内容是 Hello Python
使用 cat a 在终端中查看,终端中输出 Hello Python
echo Hello Python > a cat a
将列表的内容重定向到文件 a 里面,之前重定向的 Hello Python 被覆盖了
ls -lh > a
总用量 12K
-rw-rw-r-- 1 summer summer 1.7K 6月 1 11:12 123.txt
-rw-rw-r-- 1 summer summer 0 6月 1 13:42 a
drwxrwxr-x 2 summer summer 4.0K 5月 31 17:43 aaa
drwxrwxr-x 3 summer summer 4.0K 5月 31 17:49 demo
追加内容用 >>
echo Hello Python >> a cat a --查看文件的内容
总用量 12K
-rw-rw-r-- 1 summer summer 1.7K 6月 1 11:12 123.txt
-rw-rw-r-- 1 summer summer 0 6月 1 13:42 a
drwxrwxr-x 2 summer summer 4.0K 5月 31 17:43 aaa
drwxrwxr-x 3 summer summer 4.0K 5月 31 17:49 demo
Hello Python
继续追加
tree >> a
3. echo 命令的一个好处
之前 touch 命令,创建的 d 是一个空文件
重定向内容 Hello 到文件 d 里面
touch b echo Hello > b cat b --查看一下
用 echo 命令在创建文件 b 的同时,就可以指定文件的内容了
rm b --先删除 echo Hello > b
3、管道 |
使用管道至少需要两个命令
一个命令执行并输出结果
通过 管道 另一个命令接收输出的结果
常用的管道命令
more 分屏显示内容
grep 在命令执行结果的基础上查询指定的文本
如果第一个命令 ls 的显示结果很多,
可以把执行结果放到 管道 内,
通过 管道 第二个命令 more 接收第一个命令到执行结果,并分屏处理第一个命令的结果
ls -lha ~ | more
二个命令换成搜索 grep
可以查询文件 内容 中含有 Do 的内容
使用 管道 + grep 过滤执行的结果,只显示包含 Do 内容
ls -lha ~ | grep Do
cat 命令除了查看文件内容之外,还有 创建文件、文件合并、追加文件内容 等附加功能
三、网络操作
其他实用工具
| 命令 | 说明 | |
| 查询命令帮助信息 | ||
| command | ||
| nam | nam 既英文 manual 的缩写,manual 是手册的意思 | |
| 清屏 | ||
| clear | ||
语法 command --help
mkdir --help
nam command
nam mkdir
帮助信息的内容非常多
1. 空格 显示手册下一屏
2. Enter 一次滚动一行
3. b 回滚一屏,跟空格键效果一样
4. f 前滚一屏,跟空格键效果一样
5. q 退出
6. /word 搜索 word 字符串
附,命令大全
文件和目录操作
ls, cd, pwd, cp, mv, rm, mkdir, rmdir, touch, find, locate
文本处理和查看
cat, less, more, head, tail, grep, sed, awk, echo, sort, uniq, wc
系统信息和管理
uname, whoami, who, hostname, uptime, top, htop, free, df, du, ps, kill, systemctl, service
权限管理
chmod, chown, chgrp, umask, sudo
网络操作
ping, ifconfig/ip, netstat, ss, curl, wget, ssh, scp, rsync, nslookup, dig
包管理(Debian/Ubuntu)
apt, apt-get, dpkg, snap
压缩和解压
tar, gzip, gunzip, zip, unzip
用户管理
useradd, userdel, usermod, passwd, groupadd, su
进程管理
ps, top, htop, kill, pkill, jobs, bg, fg
存储和磁盘管理
mount, umount, fdisk, lsblk, blkid, mkfs, fsck
环境变量和别名
export, alias, unalias, env, set
时间和日期
date, cal, hwclock
其他实用工具
man, which, whereis, whatis, clear, history, shutdown, reboot
