Go to comments

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

namnam 既英文 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




Leave a comment 0 Comments.

Leave a Reply

换一张