Linux操作系统的使用
Linux目录结构
Linux的目录结构是一个树型结构。Windows 系统可以拥有多个盘符, 如 C盘、D盘。Linux没有盘符这个概念, 只有一个根目录/, 所有文件都在它下面。在Linux系统中,路径之间的层级关系,使用:/ 来表示,在Windows系统中,路径之间的层级关系,使用:\来表示。
| 目录 | 作用 |
|---|---|
| /bin | bin 是二进制文件的缩写,这个目录存放着最经常使用的命令。 |
| /boot | 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 |
| /dev | dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。 |
| /etc | etc 是 Etcetera(其他) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。 |
| /home | 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名以用户的账号命名。 |
| /root | 该目录为系统管理员,也称作超级权限者的用户主目录。 |
| /lib | lib 是 Library(库) 的缩写,这个目录里存放着系统最基本的动态连接共享库。 |
| /media | linux 系统会自动识别一些设备,例如U盘、光驱等,当识别后,Linux 会把识别的设备挂载到这个目录下。 |
| /mnt | 该目录是为了让用户临时挂载别的文件系统的,可将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容。 |
| /opt | opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如安装数据库则就可以放到这个目录下。默认是空的。 |
| /sbin | s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。 |
| /tmp | tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。 |
| /usr | usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。 |
| /usr/bin | 系统用户使用的应用程序。 |
| /usr/sbin | 超级用户使用的比较高级的管理程序和系统守护程序。 |
| /var | var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 |
| /run | 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。 |
Linux环境变量
环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行。
在Linux系统中执行env命令即可查看当前系统中记录的环境变量。
环境变量是一种KeyValue型结构,即名称和值。
PATH
环境变量PATH会记录一组目录,目录之间用:隔开。这里记录的是命令的搜索路径,当执行命令会从记录中记录的目录中挨个搜索要执行的命令并执行。
可以通过修改这个项目的值,加入自定义的命令搜索路径。
PATH变量值获取
- 通过
env命令可以查看环境变量信息,env | grep PATH。 - 通过
$符号,可以取出环境变量的值,echo $PATH。
PATH变量值设置
Linux环境变量可以用户自行设置,其中分为:
- 临时生效,
export PATH=$PATH:自定义路径。 - 永久生效:
- 针对用户:
~/.bashrc文件中配置。 - 针对全部用户:
/etc/profile文件中配置。 - 配置完成,可以通过
source命令立刻生效。
- 针对用户:
Linux路径
绝对路径
绝对路径:以根目录为起点,描述路径的一种写法,路径描述以/开头。如cd /etc。
相对路径
相对路径:以当前目录为起点,描述路径的一种写法,路径描述无需以/开头。如cd Desktop。
特殊路径符
.表示当前目录,比如cd ./Desktop表示切换到当前目录下的Desktop目录内,和cd Desktop效果一致。..表示上一级目录,比如:cd ..即可切换到上一级目录,cd ../..切换到上二级的目录。~表示HOME目录,比如:cd ~即可切换到HOME目录或cd ~/Desktop,切换到HOME内的Desktop目录。
用户、用户组
Linux系统中可以:
- 配置多个用户。
- 配置多个用户组。
- 用户可以加入多个用户组中。
Linux中关于权限的管控级别有2个级别,分别是:
- 针对用户的权限控制。
- 针对用户组的权限控制。
比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限。
用户管理
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。
以下命令需root用户执行。
| 命令 | 描述 |
|---|---|
useradd |
创建用户 |
userdel |
删除用户 |
usermod |
修改帐号 |
用户组管理
用户组的管理涉及用户组的添加、删除和修改。
组的增加、删除和修改实际上就是对/etc/group文件的更新。
以下命令需root用户执行。
| 命令 | 描述 |
|---|---|
groupadd |
创建用户组 |
groupdel |
删除用户组 |
groupmod |
修改用户组 |
newgrp |
用户组之间切换 |
超级管理员
无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。在Linux系统中,拥有最大权限的账户名为:root(超级管理员)。
root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。
- 普通用户的权限,一般在其HOME目录内是不受限的。
- 一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。
- 显示当前用户的命令为
whoami。 - 切换用户,
su root,此种方式不会将工作目录变更为/root目录。 - 切换用户,改变环境变量,
su - root,此种方式会将工作目录变更为/root目录。
Linux 文件基本属性
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在 Linux 中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:
- 序号1,表示文件、文件夹的权限控制信息,可使用
chmod命令修改权限控制信息。- 从左至右用0-9这些数字来表示。第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
- 第0位第一个字符代表这个文件是目录、文件或链接文件等等,当为
d则是目录,当为-则是文件,当为l则表示为链接文档; - 文件的权限表示,均为 rwx 的三个参数的组合。其中,
r代表可读、w代表可写、x代表可执行。这三个权限的位置不会改变,如果没有权限,就会使用减号-表示。 r,针对文件可以查看文件内容,针对文件夹,可以查看文件夹内容,如ls命令。w,针对文件表示可以修改此文件,针对文件夹,可以在文件夹内:创建、删除、改名等操作。x,针对文件表示可以将文件作为程序执行,针对文件夹,表示可以更改工作目录到此文件夹,即cd进入。
- 序号2,表示文件、文件夹所属用户,可使用
chown命令修改所属用户。 - 序号3,表示文件、文件夹所属用户组,可使用
chown命令修改所属用户组。
Linux命令
Linux命令基础格式
无论是什么命令,用于什么用途,在Linux中,命令有其通用的格式:
1 | command [-option][arguments] |
- command: 命令本身
- -options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
- arguments:[可选,非必填]命令的参数,多数用于命令的指向目标等
磁盘管理
df命令
df(英文全拼:disk free)命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
语法:
1 | df [选项]... [FILE]... |
- 选项:
-h,以更加人性化的单位显示。
du命令
du(英文全拼:disk usage)命令用于显示目录或文件的大小。du 会显示指定的目录或文件所占用的磁盘空间。
语法:
1 | df [选项]... [FILE]... |
- 选项:
-a,显示目录中个别文件的大小。 - 选项:
-h,以更加人性化的单位显示。 - 选项:
--max-depth=<目录层数>,超过指定层数的目录后,予以忽略。 - 查看根目录
/下各个文件占用情况,du -ah --max-depth=1 /。
ls命令
ls命令的作用是列出目录下的内容,语法细节如下:
语法:
1 | ls [-l -h -a] [Linux路径] |
- Linux路径:被查看的文件夹,不提供该参数,表示查看当前工作目录。
- -l,表示:以列表(竖向排列)的形式展示内容,并展示更多信息
- -h,表示以易于阅读的形式,列出文件大小,如K、M、G,
-h选项必须要搭配-l一起使用。 - -a,表示:all的意思,即列出全部文件(包含隐藏的文件/文件夹)。在Linux中以
.开头的,均是隐藏的。默认不显示出来。
cd命令
当Linux终端(命令行)打开的时候,会默认以用户的HOME目录作为当前的工作目录,可以通过cd命令,更改当前所在的工作目录。 cd命令来自英文:Change Directory。
语法:
1 | cd [dirName] |
- cd命令无需选项,只有参数,表示要切换到哪个目录下
- cd命令直接执行,不写参数,表示回到用户的HOME目录
pwd命令
pwd命令来自:Print Work Directory,命令用于显示工作目录。执行 pwd 指令可立刻得知目前所在的工作目录的绝对路径名称。
语法:
1 | pwd [--help][--version] |
- pwd命令,一般无选项,无参数,直接输入pwd即可
mkdir命令
mkdir(英文全拼:make directory)命令用于创建目录。
1 | mkdir [-p] dirName |
- 参数必填,表示Linux路径,即要创建的文件夹的路径,相对路径或绝对路径均可。
-p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录。如mkdir -p runoob2/test,本例若不加-p参数,且原本 runoob2 目录不存在,则产生错误。
文件管理
touch命令
可通过touch命令创建一个新的空白文件。
语法:
1 | touch 文件或目录 |
- touch命令一般无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符均可以使用。
cat命令
cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。
语法:
1 | cat fileName |
- cat命令一般无选项,参数必填,参数表示被查看的文件路径,相对、绝对、特殊路径符都可以使用。
- 清空 /etc/test.txt 文档内容,
cat /dev/null > /etc/test.txt,常用于清空日志文件。 - 把textfile1的文档内容加上行号后输入 textfile2 这个文档里,
cat -n textfile1 > textfile2。 - 把textfile1和textfile2的文档内容加上行号(空白行不加)之后将内容附加 textfile3文档里,
cat -b textfile1 textfile2 >> textfile3。
split命令
split命令用于将一个文件分割成数个。该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。
语法:
1 | split [-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名] |
- 选项:
-<行数>,指定每多少行切成一个小文件。 - 选项:
-b<字节>,指定每多少字节切成一个小文件。 - 选项:
-C<字节>,与参数-b相似,但是在切割时将尽量维持每行的完整性。 - 选项:
-d,指定数字形式的文件后缀。 - 选项:
[输出文件名],设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号。 - 拆分大文件
1.log,以200m为单位,输出目录为xxx文件夹下,文件以a_数字格式输出,split -d -b 200m 1.log XXX/a_。 - 合并文件,
cat XXX/a_* > 1.log。
more命令
more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),通过q退出查看 。
语法:
1 | more fileName |
- more命令一般无选项,只有必填参数,参数表示:被查看的文件路径,相对、绝对、特殊路径符都可以使用。
chmod命令
chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令。注意,只有文件、文件夹的所属用户或root用户可以修改。chmod命令可以使用八进制数来指定权限。
语法:
1 | chmod [-R] mode file... |
- 选项:
-R,对文件夹内的全部内容应用同样的操作。 - 参数:
file...,要设置的文件路径,可包含多个。 - 参数:
mode,权限设定字串,格式如下 :[ugoa...][[+-=][rwxX]...][,...]。u表示该文件的拥有者,g表示与该文件的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这三者皆是。+表示增加权限、-表示取消权限、=表示唯一设定权限。r表示可读取,w表示可写入,x表示可执行。- 权限也可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。
- 为ex1.py文件拥有者增加可执行权限,
chmod u+x ex1.py。 - 将目前目录下的所有文件与子目录皆设为任何人可读取,
chmod -R a+r *。 - 为file文件拥有者增加读写可执行权限和其他人可执行权限,
chmod ug=rwx,o=x file等效于chmod 771 file。
| 权限数字 | 描述 |
|---|---|
0 |
无任何权限,即--- |
1 |
仅有x权限,即--x |
2 |
仅有w权限,即-w- |
3 |
有w和x权限,即-wx |
4 |
仅有r权限,即r-- |
5 |
有r和x权限,即r-x |
6 |
有r和w权限,即rw- |
7 |
有全部权限,即rwx |
chown命令
chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令。普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行。
语法:
1 | chown [-R] 用户[:group] file... |
- 选项,
-R,对文件夹内全部内容应用相同规则。 - 选项,用户,修改所属用户。
- 选项,用户组,修改所属用户组。
:用于分隔用户和用户组。- 将hello.txt所属用户修改为root,
chown root hello.txt。 - 将hello.txt所属用户组修改为root,
chown :root hello.txt。 - 将hello.txt所属用户修改为root,用户组修改为root,
chown root:root hello.txt。 - 将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则。
chown -R root test。
cp命令
cp(英文全拼:copy)命令主要用于复制文件或目录。
语法:
1 | cp [-options] 参数1 参数2 |
-r选项,可选,用于复制文件夹使用,表示递归。-f选项,可选,覆盖已经存在的目标文件而不给出提示。- 参数1,Linux路径,表示被复制的文件或文件夹。
- 参数2,Linux路径,表示要复制去的地方。
- 将一个文件夹复制到另一个文件夹下,以下实例 packageA 文件及其任意层的结构会拷贝到 packageB 中,
cp -r /home/packageA /home/packageB - 将 packageA 下的所有文件(不包含 packageA 文件)拷贝到 packageB 中,
cp -r /home/packageA/* /home/cp/packageB/
scp命令
scp 命令用于Linux之间复制文件和目录。scp 是secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
语法:
1 | scp [可选参数] 参数1 参数2 |
-r选项,可选,用于复制文件夹使用,表示递归。-P选项, port是指定数据传输用到的端口号。- 参数1,Linux路径,表示被复制的文件或文件夹。
- 参数2,Linux路径,表示要复制去的地方。
- 拉取,将异地服务器上/home/lk/目录下所有的文件全部复制到本地的/root目录下,
scp -r root@异地服务器ip:/home/lk /root。 - 推送,在本地服务器上将/root/lk目录下所有的文件传输到异地的/home/lk/cpfile目录下,
scp -r /root/lk root@异地服务器ip:/home/lk/cpfile。 - 如果远程服务器防火墙有为scp命令设置了指定的端口,需使用
-P参数来设置命令的端口号,scp -P 10001 local_file remote_ip:remote_file。 - 参数1或参数2中指定了用户名,命令执行后需再输入密码;若未指定用户名,命令执行后需输入用户名和密码。
mv命令
mv(英文全拼:move)命令用来为文件或目录改名、或将文件或目录移入其它位置。
语法:
1 | mv [options] 参数1 参数2 |
-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。- 参数1,Linux路径,表示被移动的文件或文件夹。
- 参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在。
- 将源文件名 source_file 改为目标文件名 dest_file,效果是仅重命名,
mv a/source_file(文件) a/dest_file(文件)。 - 将源文件名 source_file 改为移动到目标文件夹b中并改目标文件名 dest_file,效果是:移动 + 重命名。
mv a/source_file(文件) a/b/dest_file(文件)。 - 将文件 source_file 移动到目标目录 dest_directory 中,
mv source_file(文件) dest_directory(目录)。 - 目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory,
mv source_directory(目录) dest_directory(目录)。 - 出错,
mv source_directory(目录) dest_file(文件)。 - 将 /usr/runoob 下的所有文件和目录移到当前目录下,
mv /usr/runoob/* .。
rm命令
rm(英文全拼:remove)命令用于删除一个文件或者目录。
语法:
1 | rm [-options] 参数1 参数2 ...... 参数N |
-r选项用于删除文件夹,将目录及以下之档案亦逐一删除。-f表示force,强制删除(不会弹出提示确认信息)。- 参数1、参数2、……、参数N 表示要删除的文件或文件夹路径,按照空格隔开。
- 参数也支持通配符
*,即匹配任意内容(包含空),用以做模糊匹配。test*,表示匹配任何以test开头的内容,*test,表示匹配任何以test结尾的内容,*test*,表示匹配任何包含test的内容。 - 删除当前目录下的所有文件及目录,
rm -rf *。 - 删除目录 test,不管该目录下是否有子目录或文件,都直接删除,
rm -rf test/。 - 注意:以下操作会删除Linux根目录下的所有文件,直接导致服务器瘫痪,
rm -rf /*或rm -rf /,删库跑路。
which命令
which命令用于查找文件。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
语法:
1 | which [文件...] |
- 可以通过which命令,查看所使用的一系列命令的程序文件存放在哪里,
which bash
find命令
find 命令用于在指定目录下查找文件和目录。它可以使用不同的选项来过滤和限制查找的结果。
语法:
1 | find [path] [expression] |
- path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
- expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。
-name pattern:按文件名查找,支持使用通配符 * 和 ?。-type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。-size [+-]size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
- 查找当前目录下名为 file.txt 的文件,
find . -name file.txt。 - 将当前目录及其子目录下所有文件后缀为 .c 的文件列出来,
find . -name "*.c" - 查找 /home 目录下大于 1MB 的文件,
find /home -size +1M。 - find指令为找出500M以上的文件,print0和xargs -0配合使用,用来解决文件名中有空格或特殊字符问题。du -m是查看这些文件的大小,并以m为单位显示。最后sort -nr是按照数字反向排序(大的文件在前),
find / -size +500M -print0|xargs -0 du -m|sort -nr。
ln命令
ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
若链接的路径存在,则无法创建新链接,需删除之后,才能新建。
- 软链接:
- 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式。
- 2.软链接可以 跨文件系统 ,硬链接不可以。
- 3.软链接可以对一个不存在的文件名进行链接。
- 4.软链接可以对目录进行链接。
- 硬链接:
- 1.硬链接,以文件副本的形式存在。但不占用实际空间。
- 2.不允许给目录创建硬链接。
- 3.硬链接只有在同一个文件系统中才能创建。
语法:
1 | ln [-s][源文件或目录][目标文件或目录] |
-s选项,创建软连接。- 参数1:被链接的文件或文件夹。
- 参数2:要链接去的目的地。
- 给文件创建软链接,为a.log文件创建软链接link_a,如果a.log丢失,link_a将失效,
ln -s a.log link_a。 - 给文件创建硬链接,为b.log创建硬链接ln_b,如果b.log丢失,ln_b仍可访问,b.log与ln_b的各项属性相同,
ln b.log ln_b。
文档编辑
grep命令
grep (global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
语法:
1 | grep [options] pattern [files] |
-n选项,可选,表示在结果中显示匹配的行的行号。pattern,关键字,必填, 表示要查找的字符串或正则表达式,带有空格或其它特殊符号,建议使用””将关键字包围起来。files, 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。- 在文件 file.txt 中查找字符串 “hello”,并打印匹配的行,
grep hello file.txt。 - 在文件夹 dir 中递归查找所有文件中匹配正则表达式 “pattern” 的行,并打印匹配行所在的文件名和行号,
grep -r -n pattern dir/。 - 在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行,
grep test *file。
wc命令
wc命令做数量统计,可以通过wc命令统计文件的行数、单词数量等。
语法:
1 | wc [-cmlw][文件...] |
-c选项,统计bytes数量。-m选项,统计字符数量。-l选项,统计行数。-w选项,统计单词数量。- 参数,文件路径,被统计的文件,可作为内容输入端口,多文件按照空格隔开。
- 默认的情况下,wc将计算指定文件的行数、字数,以及字节数并依次显示,
wc testfile。 - 统计字节数,
wc -c testfile,其他同理。 - 统计当前目录下文件的个数(不包括目录),
ls -l | grep "^-" | wc -l - 查看某目录下文件夹(目录)的个数(包括子目录),
ls -lR | grep "^d" | wc -l - 统计文件中带有it关键字的有几行,
cat test.txt | grep it | wc -l - 统计文件中带有it关键字的结果中有多少个单词,
cat test.txt | grep it | wc -w
echo命令
可以使用echo命令在命令行内输出指定内容。
语法:
1 | echo 输出的内容 |
- 无需选项,只有一个参数,表示要输出的内容,复杂内容可以用””包围。
- 普通字符串
echo "It is a test"echo It is a test- 这里的双引号完全可以省略,两条语句效果一致。
- 显示转义字符
echo "\"It is a test\""输出结果为”It is a test”
- 显示命令执行结果
echo `pwd`- 将命令用反引号
`将其包围,被包围的内容,会被作为命令执行,而非普通字符,此处输出的是当前工作目录。
重定向符
功能:将符号左边的结果,输出到右边指定的文件中去。
>,表示覆盖输出。>>,表示追加输出。echo “Hello Linux” > it.txt,使用>覆盖原有内容。echo Hello World >> it.txt,再次执行,使用>>追加新内容。
备份压缩
Linux和Mac系统常用有2种压缩格式,后缀名分别是:
.tar,称之为tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装。.gz,也常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积
tar命令
tar(英文全拼:tape archive )命令用于备份文件。tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
语法:
1 | tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数n |
- 选项
-c,创建压缩文件,用于压缩模式。 - 选项
-v,显示压缩、解压过程,用于查看进度。 - 选项
-x,解压模式。 - 选项
-f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个。 - 选项
-z,gzip模式,不使用-z就是普通的tarball格式。 - 选项
-C,选择解压的目的地,用于解压模式,-C选项单独使用,和解压所需的其它参数分开。 - tar压缩常用组合为:
- 将1.txt 2.txt 3.txt 压缩到test.tar文件内,
tar -cvf test.tar 1.txt 2.txt 3.txt。 - 将1.txt 2.txt 3.txt 压缩到test.tar.gz文件内,使用gzip模式,
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt。
- 将1.txt 2.txt 3.txt 压缩到test.tar文件内,
- tar解压常用组合为:
- 解压test.tar,将文件解压至当前目录,
tar -xvf test.tar。 - 解压test.tar,将文件解压至指定目录(/home/soft),
tar -xvf test.tar -C /home/soft。 - 以Gzip模式解压test.tar.gz,将文件解压至指定目录(/home/soft),
tar -zxvf test.tar.gz -C /home/soft。
- 解压test.tar,将文件解压至当前目录,
zip命令
zip 命令用于压缩文件。zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip。
语法:
1 | zip [-r] 参数1 参数2 ... 参数n |
- 选项
-r,递归处理,将指定目录下的所有文件和子目录一并处理,被压缩的包含文件夹的时候,需要使用-r选项。 - 将a.txt b.txt c.txt 压缩到test.zip文件内,
zip test.zip a.txt b.txt c.txt。 - 将test、soft两个文件夹和a.txt文件,压缩到test.zip文件内,
zip -r test.zip test soft a.txt。
unzip命令
unzip命令用于解压缩zip文件。unzip为.zip压缩文件的解压缩程序。
语法:
1 | unzip [-d] 参数 |
- 选项
-d,指定要解压去的位置,同tar的-C选项。 - 参数,被解压的zip压缩包文件。
- 将test.zip解压到当前目录,
unzip test.zip。 - 将test.zip解压到指定文件夹内(/home/soft),
unzip test.zip -d /home/soft。
系统管理
su命令
su(Switch User)命令就是用于账户切换的系统命令。
语法:
1 | su [-] [USER] |
-符号是可选的,表示是否在切换用户后加载环境变量,建议带上。- 参数:
USER,用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root。 - 切换用户后,可以通过
exit命令退回上一个用户,也可以使用快捷键:ctrl + d。 - 使用普通用户,切换到其它用户需要输入密码,如切换到root用户。
- 使用root用户切换到其它用户,无需密码,可以直接切换。
sudo命令
sudo命令为普通的命令授权,临时以root身份执行。在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权。但是并不是所有的用户,都有权利使用sudo,需要为普通用户配置sudo认证。
语法:
1 | sudo command |
- 为普通用户配置sudo认证:
- 切换到root用户,执行
visudo命令,会自动通过vi编辑器打开:/etc/sudoers - 在文件的最后添加:
用户名 ALL=ALL NOPASSWD:ALL,其中最后的NOPASSWD:ALL 表示使用sudo命令,无需输入密码,通过 wq 保存。
- 切换到root用户,执行
exit命令
exit命令用于退出目前的shell。执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。exit也可用在script,离开正在执行的script,回到shell。
语法:
1 | exit [状态值] |
- 退出终端,
exit。
whoami
whoami命令用于显示自身用户名称。显示自身的用户名称,本指令相当于执行id -un指令。
语法:
1 | whoami |
- 显示用户名,
whoami。
useradd命令
useradd 命令用于建立用户帐号。使用 useradd指令所建立的帐号,实际上是保存在/etc/passwd 文本文件中。
语法:
1 | useradd [-g -d] 用户名 |
- 选项:
-g,指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g。 - 选项:
-d,指定用户HOME路径,不指定,HOME目录默认在:/home/用户名。 - 新建了一个用户gem,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组,为登录名gem产生一个主目录,/home/gem。
useradd –d /home/gem -g group –G adm,root gem。
userdel命令
userdel命令用于删除用户帐号。
语法:
1 | userdel [-r] 用户名 |
- 选项:
-r,删除用户的主目录,不使用-r,删除用户时,用户的主目录保留。
usermod命令
usermod命令用于修改用户帐号。
语法:
1 | usermod 选项 用户名 |
- 常用的选项包括
-c,-d,-g,-G等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。 - 将用户sam的主目录改为/home/z,用户组改为developer,
usermod -d /home/z –g developer sam。
id命令
id命令用于显示用户的ID,以及所属群组的ID。
语法:
1 | id [-gGnru] [用户名] |
- 选项
-g,显示用户所属群组的ID。 - 选项
-G,显示用户所属附加群组的ID。 - 选项
-n,显示用户,所属群组或附加群组的名称。 - 选项
-u,显示用户ID。 - 参数:用户名,被查看的用户,如果不提供则查看自身。
- 显示所有群组的 ID,
id -G。 - 显示指定用户信息,
id newlinux。
groupadd命令
groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
语法:
1 | groupadd [-g gid] group |
- 选项
-g,指定新建工作组的 id。 - 参数:
group,创建的工作组名。 - 向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1,
groupadd group1。 - 向系统中增加了一个新组group2,同时指定新组的组标识号是101,
groupadd -g 101 group2。
groupdel命令
groupdel命令用于删除群组。
语法:
1 | groupdel [群组名称] |
- 从系统中删除组group1,
groupdel group1。
groupmod命令
groupmod命令用于更改群组识别码或名称。
语法:
1 | groupmod [-g <群组识别码>][<新群组名称>][群组名称] |
- 选项
-g,指定修改后的工作组 id。 - 参数:新群组名称,设置欲使用的群组名称。
- 参数:群组名称,要修改的群组名称。
- 将组group2的组标识号修改为102,
groupmod -g 102 group2。 - 将组group2的标识号改为10000,组名修改为group3,
groupmod –g 10000 -n group3 group2。
newgrp 命令
newgrp 命令用于登入另一个群组。如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限,前提条件是其他用户组确实是该用户的主组或附加组。
语法:
1 | newgrp [群组名称] |
- 将当前用户切换到root用户组,
newgrp root。
getent命令
getent(get entries)命令用来查看系统的数据库中的相关记录。其功能是用于查看系统数据库中的记录信息。即便这些数据库不是本地的,类似于LDAP或者NIS也可以使用getent命令进行查看。可用于查看用户信息、域名信息等。
语法:
1 | getent database [参数] |
- 支持的database数据库: group, hosts, networks, passwd,services等,支持的数据库被配置在
/etc/nsswitch.conf中。 - 查看本地的密码文件(/etc/passwd)中所有用户信息,
getent passwd,返回的共有7份信息,分别是:用户名:密码(x):用户ID:组ID:描述信息:HOME目录:执行终端。 - 查看本地的密码文件(/etc/passwd)中包含的指定用户信息,
getent passwd newlinux。 - 查看本地的组文件(/etc/group)中所有组信息,
getent group,返回的共包含3份信息,分别是:组名称:组认证(显示为x):组ID。 - 查看本地的组文件(/etc/group)中包含的指定组信息,
getent root。 - 查看本地的主机文件(/etc/hosts)中包含的指定域名信息:
getent hosts xxx.com。 - 获取所有服务的列表:
getent services。 - 获取指定服务的列表:
getent services 80。
free命令
free命令用于显示内存状态。free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
语法:
1 | free [-h] |
- 选项:
-h,以合适的单位显示内存使用情况。 - 百分比查内存占用率,
free | grep Mem | awk '{print $3/$2 * 100.0}'。
ps命令
ps(英文全拼:process status)命令用于显示当前进程的状态。
语法:
1 | ps [-A -e -f] |
- 选项:
-A,列出所有的进程,显示部分信息PID、TTY、TIME、CMD。 - 选项:
-e,显示出全部的进程。 - 选项:
-f,以完全格式化的形式展示信息(展示全部信息)。 - 显示所有进程信息,连同命令行,
ps -ef。 - 查找指定进程格式,
ps -ef | grep 进程关键字,进程关键字不仅仅过滤名称,进程号,用户ID,端口等,都可以被grep过滤。 - 结果列表显示从左到右分别是:
UID:进程所属的用户ID。PID:进程的进程号ID。PPID:进程的父ID(启动此进程的其它进程)。C:此进程的CPU占用率(百分比)。STIME:进程的启动时间。TTY:启动此进程的终端序号,如显示?,表示非终端启动。TIME:进程占用CPU的时间。CMD:进程对应的名称或启动路径或启动命令。
kill命令
kill命令用于删除执行中的程序或工作。
kill 可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看。
语法:
1 | kill [-s <信息名称或编号>][程序] |
- 选项:
-s <信息名称或编号>,指定要送出的信息。 - 参数:[程序] ,[程序]可以是程序的PID或是PGID,也可以是工作编号。
- 使用
kill -l命令列出所有可用信号。最常用的信号是:1(HUP):重新加载进程。9(KILL):杀死一个进程。15(TERM):正常停止一个进程。
- 强制杀死进程号10101,
kill -KILL 10101效果等同于kill -9 10101。 - 杀死指定用户所有进程:
- 方法一 过滤出newlinux用户进程,
kill -9 $(ps -ef | grep newlinux)。 - 方法二,
kill -u newlinux。
- 方法一 过滤出newlinux用户进程,
top命令
top命令用于实时显示 process 的动态,可查看CPU、内存使用情况,默认每5秒刷新一次。直接输入top即可,按q或ctrl + c退出。
语法:
1 | top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] |
- 选项
-p,只显示某个进程的信息。 - 选项
-d,设置刷新时间,默认是5s。 - 选项
-c,显示产生进程的完整命令,默认是进程名。 - 选项
-n,指定刷新次数,比如top -n 3:刷新输出3次后退出。 - 选项
-b,以非交互非全屏模式运行,以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,比如top -b -n 3 > /tmp/top.tmp。 - 选项
-i,不显示任何闲置(idle)或无用(zombie)的进程。 - 选项
-u,查找特定用户启动的进程。
top命令内容详解:
第一行:
top:命令名称17:02:25:当前系统时间up 1:14:启动了1小时14分钟2 users:2个用户登录load average:1、5、15分钟负载load average:0.34,0.30,0.32:1分钟平均负载0.34,5分钟平均负载0.30,15分钟负载0.32
第二行:描述的是进程的相关信息
Tasks:任务168 total:168个进程1 running:1个进程子在运行167 sleeping:167个进程睡眠0 stopped:0个停止进程0 zombie:0个僵尸进程
第三行:描述的是CPU的相关信息
%Cpu(s):CPU使用率us:用户CPU使用率sy:系统CPU使用率ni:高优先级进程占用CPU时间百分比id:空闲CPU率wa:IO等待CPU占用率hi:CPU硬件中断率si:CPU软件中断率st:强制等待占用CPU率
第四、五行:描述的是内存的相关信息
Kib Mem:物理内存,- `total:总量
free:空闲used:使用buff/cache:buff和cache占用
- `KibSwap:虚拟内存(交换空间)
total:总量free:空闲used:使用buff/cache:buff和cache占用
PID,进程id。USER,进程所属用户。PR,进程优先级,越小越高。NI,负值表示高优先级,正表示低优先级。VIRT,进程使用虚拟内存,单位KB。RES,进程使用物理内存,单位KB。SHR,进程使用共享内存,单位KB。S,进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态)。%CPU,进程占用CPU率。%MEM,进程占用内存率。TIME+,进程使用CPU时间总计,单位10毫秒。COMMAND,进程的命令或名称或程序文件路径。
当top以交互式运行(非-b选项启动),可以用以下交互式命令进行控制:
| 按键 | 功能 |
|---|---|
h |
会显示帮助画面 |
c |
会显示产生进程的完整命令,等同于-c参数,再次按下c键,变为默认展示 |
f |
可以选择需要展示的项目 |
M |
根据驻留内存大小(RES)排序 |
P |
根据CPU使用百分比大小进行排序 |
T |
根据时间/累计时间进行排序 |
E |
切换顶部内存显示单位 |
e |
切换进程内存显示单位 |
l |
切换显示平均负载和启动时间信息 |
i |
不显示闲置或无用的进程,等同于-i参数,再次按下,变为默认显示 |
t |
切换显示CPU状态信息 |
m |
切换显示内存信息 |
systemctl命令
systemctl命令是一个系统管理守护进程、工具和库的集合,用于取代System V、service和chkconfig命令,初始进程主要负责控制systemd系统和服务管理器。该命令主要分为:查询或发送控制命令给systemd服务,管理单元服务的命令,服务文件的相关命令,任务、环境、快照相关命令,systemd服务的配置重载,系统开机关机相关的命令。
Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启,能够被systemctl管理的软件,一般也称之为:服务。
systemctl命令管理的服务在 /usr/lib/systemd/system查看。
语法:
1 | systemctl [start | stop | restart | status | enable | disable] 服务名 |
- 选项
start,启动。 - 选项
stop,关闭。 - 选项
status,查看状态。 - 选项
enable,开启开机自启。 - 选项
disable,关闭开机自启。 - 列出所有可用单元 ,grep可以进行过滤,
systemctl list-unit-files[ | grep 服务名]。
date命令
date命令可以用来显示或设定系统的日期与时间。当以root身份更改了系统时间之后,记得以 clock -w来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续保持最新的正确值。
语法:
1 | date [-d datestr] [-s datestr] [+格式化字符串] |
-d按照给定的字符串显示日期,字符串不能是'now',一般用于日期计算。-s根据字符串设置系统时间。- 参数:格式化字符串:通过特定的字符串标记,来控制显示的日期格式。
%Y,年。%y,年份后两位数字 (00..99)。%m,月份 (01..12)。%d,日 (01..31)。%H,小时 (00..23)。%M,分钟 (00..59)。%S,秒 (00..60)。%s,自 1970-01-01 00:00:00 UTC 到现在的秒数。
- 使用date命令本体,无选项,直接查看时间,
date,输出结果为Tue May 24 00:00:00 CST2022。 - 格式化输出,
date +"%Y-%m-%d",输出结果为2077-02-07。 - 时间格式转换,
date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S",输出结果为2009/12/12 00:00.00。 - 输出昨天日期,
date -d "1 day ago" +"%Y-%m-%d",输出结果为2077-02-06。 - 输出 2 秒后的时间,
date -d "2 second" +"%Y-%m-%d %H:%M.%S",输出结果为2012-11-20 14:21.31。 - 设置当前时间,只有root权限才能设置,其他只能查看,
date -s。 - 设置日期为20770207,这样会把具体时间设置成00:00:00,
date -s 20770207。 - 设置具体时间,不会对日期做更改,
date -s 01:01:01。 - 设置全部时间。
date -s "01:01:01 2012-05-23"。date -s "01:01:01 20120523"。date -s "2012-05-23 01:01:01"。date -s "20120523 01:01:01"。
网络通讯
ifconfig命令
ifconfig命令用于显示或设置网络设备。ifconfig可设置网络设备的状态,或是显示目前的设置。如无法使用ifconfig命令,可以安装:yum -y install net-tools。
语法:
1 | ifconfig [网络设备][down up][<hw<网络设备类型><硬件地址>][IP地址] |
- 显示网络设备信息,
ifconfig。 - 关闭指定网卡,
ifconfig eth0 down。 - 启动指定网卡,
ifconfig eth0 up。 - 关闭网卡并修改MAC地址,
ifconfig eth1 hw ether 00:1D:1C:1D:1E,修改成功之后启动该网卡。 - 给eth0网卡配置IP地址,
ifconfig eth0 192.168.1.117。 - 给eth0网卡配置IP地址,配置子网掩码,,配置广播地址,
ifconfig eth0 192.168.1.117 netmask 255.255.255.0 broadcast 192.168.1.255。
ping 命令
ping 命令用于检测主机。执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
语法:
1 | ping [-c<完成次数>][主机名称或IP地址] |
- 选项:
-c,检查的次数,不使用-c选项,将无限次数持续检查。 - 参数:ip或主机名,被检查的服务器的ip地址或主机名地址。
- 检查到127.0.0.1是否联通,并检查3次,
ping -c 127.0.0.1。
wget命令
wget是非交互式的文件下载器,可以在命令行内下载网络文件。
语法:
1 | wegt [-b] url |
- 选项:
-b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件,通过tail命令可以监控后台下载进度:tail -f wget-log。 - 参数:
url,下载链接。 - 通过wegt后台下载软件安装包,
wegt -b http://xxx.xxx.xxx/xxx.tar.gz。 - 无论下载是否完成,都会生成要下载的文件,如果下载未完成,请及时清理未完成的不可用文件。
curl命令
curl可以发送http网络请求,可用于:下载文件、获取信息等。
语法:
1 | curl [-O] url |
- 选项:
-O,用于下载文件,当url是下载链接时,可以使用此选项保存文件。 - 参数:
url,要发起请求的网络地址。 - curl命令行下直接获取当前IP信息,向cip.cc发起网络请求,
curl cip.cc。 - 通过curl下载软件安装包,
curl -O http://xxx.xxx.xxx/xxx.tar.gz。
netstat命令
netstat 命令用于显示网络状态。利用netstat指令可得知整个Linux系统的网络情况。
语法:
1 | netstat [-anptu] |
- 选项:
-a,显示所有连线中的Socket。 - 选项:
-n,直接使用IP地址,而不通过域名服务器。 - 选项:
-p,显示正在使用Socket的程序识别码和程序名称。 - 选项:
-t,显示TCP传输协议的连线状况。 - 选项:
-u,显示UDP传输协议的连线状况。 - 查看本机指定端口号的占用情况,
netstat -anp | grep 端口号。 - Linux系统可以支持65535个端口,这6万多个端口分为3类进行使用:
- 公认端口:1~1023,用于系统内置或常用知名软件绑定使用,如SSH服务的22端口,HTTPS服务的443端口。
- 注册端口:1024~49151,用于松散绑定使用(用户自定义)。
- 动态端口:49152~65535,用于临时使用(多用于出口)。
其他命令
tail命令
tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。tail -f filename会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
语法:
1 | tail [参数] [文件] |
-n<行数>选项, 显示文件的尾部 n 行内容。-f选项,循环读取。- 显示 notes.log 文件的最后 10 行,
tail notes.log,不使用fn参数,默认显示最后 10 行。 - 查看notes.log文件的尾部3行:
tail -3 notes.log。 - 实时查看notes.log文件末尾100行的内容,
tail -fn 100 notes.log。
iostat命
iostat主要用于监控系统设备的IO负载情况,根据这个可以看出当前系统的写入量和读取量,CPU负载和磁盘负载。
语法:
1 | iostat [-x] [num1] [num2] |
- 选项:
-x,显示更多信息。 - 参数:
num1:数字,刷新间隔。 - 参数:
num2:数字,刷新几次。
sar命令
可以使用sar命令查看网络的相关统计。
语法:
1 | sar -n DEV num1 num2 |
- 选项:
-n,查看网络,DEV表示查看网络接口。 num1:刷新间隔(不填就查看一次结束)。num2:查看次数(不填无限次数)。
man命令
man(英文全拼:Manual,手册)命令会列出一份完整的说明。 其内容包括命令语法、各选项的意义及相关命令 。
语法:
1 | man [命令] |
快捷键:
q,退出。Enter,按行下翻。Space,按页下翻。b,上翻一页。- 查看cp命令的帮助信息,
man cp。 - 查看/etc/passwd文件的信息,
man /etc/passwd。 - 任何命令都支持:
--help选项, 可以通过这个选项,查看命令的帮助。如:ls --help, 会列出ls命令的帮助文档。
hostname命令
可以通过hostname命令来查看本机的hostname。也可以直接cat /etc/hostname查看。
语法:
1 | hostname |
- hostname查看主机名,
hostname。 - 临时修改主机名,关机后失效,
hostname newHostname。 - 永久修改主机名:
- 修改配置文件
/etc/hostname保存退出,vi /etc/hostname,进入vi,删除旧主机名,输入新主机名newHostname,退出保存,reboot重启生效。 - 使用命令
hostnamectl,修改主机名(需root),hostnamectl set-hostname newHostname。
- 修改配置文件
管道符
写法:|
功能:将符号左边的结果,作为符号右边的输入。
- 将cat a.txt的结果,作为grep命令的输入,用来过滤it关键字,
cat a.txt | grep it。 - 可以支持嵌套使用,
cat it.txt | grep keyword | grep it。 - 过滤ls的结果,
ls | grep Desktop - 过滤结果,只找路径带有/usr/lib64的结果,
find / -name “test” | grep “/usr/lib64”。
vi\vim文本编辑器
vi\vim是visual interface的简称, 是Linux中最经典的文本编辑器,vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
- 命令模式:命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。此模型下,不能自由进行文本编辑。
- 输入模式:也就是所谓的编辑模式、插入模式。此模式下,可以对文件内容进行自由编辑。
- 底线命令模式:以
:开始,通常用于文件的保存、退出。
命令模式
如果需要通过vi/vim编辑器编辑文件,通过如下命令任意一个均可:
- 打开或新建文件,并将光标置于第一行首,
vi filename。 - 打开或新建文件,并将光标置于第一行首,
vim filename。 - 打开文件,并将光标置于第n行首,
vim +n filename。 - 打开文件,并将光标置于最后一行首 ,
vim + filename。 - 打开文件,并将光标置于第一个与pattern匹配的串处,
vim +/pattern filename。 - 在上次正用vi编辑时发生系统崩溃,恢复filename,
vim -r filename。 - 打开多个文件,依次进行编辑,
vim filename....filename。
刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。 以下是常用的几个命令:
i切换到输入模式,以输入字符。x删除当前光标所在处的字符。:切换到底线命令模式,以在最底一行输入命令。
命令模式下的一些常见快捷键
- 进入输入或取代的编辑模式
| 命令 | 描述 |
|---|---|
i |
在当前光标位置,进入输入模式 |
a |
在当前光标位置之后,进入输入模式 |
I |
在当行开头,进入输入模式 |
A |
在当行结尾,进入输入模式 |
o |
在当前光标下一行,进入输入模式 |
O |
在当前光标上一行,进入输入模式 |
esc |
返回命令模式 |
- 移动光标的方法和搜索替换
| 命令 | 描述 |
|---|---|
k |
上 |
j |
下 |
h |
左 |
l |
右 |
0 |
移动到当行开头 |
$ |
移动到当行结尾 |
gg |
跳到首行 |
G |
跳到尾行 |
pageup(PgUp) |
向上翻页 |
pagedown(PgDn) |
向下翻页 |
/ |
进入搜索模式 |
n |
向下继续搜索 |
N |
向上继续搜索 |
- 删除、复制与粘贴
| 命令 | 描述 |
|---|---|
dd |
删除当前行 |
ndd |
向下删除n行 |
yy |
复制当前行 |
nyy |
向下复制n行 |
p |
粘贴 |
u |
撤销 |
ctrl + r |
反向撤销 |
dG |
向下删除尾行(向下的所有) |
dgg |
向上删除到首行(向上的所有) |
d0 |
删除到本行开头 |
d$ |
删除到本行结尾 |
输入模式
在命令模式下按下i就进入了输入模式。在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:就进入了底线命令模式。
- 指令行的储存、离开等指令
命令 描述 :wq保存并退出 :q仅退出 :q!强制退出 :w仅保存 :set nu显示行号 set paste设置粘贴模式
软件安装
软件安装,CentOS系统和Ubuntu是使用不同的包管理器。CentOS使用yum管理器,Ubuntu使用apt管理器。yum和 apt均需要root权限,yum和 apt均需联网管理软件安装。
yum命令
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHa 以及SUSE中的Shell前端软件包管理器。
基于RPM包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
语法:
1 | yum [options] [command] [package ...] |
- 选项
options,可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 “yes”),-q(不显示安装的过程)等。 - 选项
command,要进行的操作,install(安装),选项remove(卸载),选项search(搜索)等。 - 参数
package ...,软件名称。 - yum常用命令:
- 列出所有可更新的软件清单命令,
yum check-update。 - 更新所有软件命令,
yum update。 - 仅安装指定的软件命令,
yum install <package_name>。 - 仅更新指定的软件命令,
yum update <package_name>。 - 列出所有可安裝的软件清单命令,
yum list。 - 删除软件包命令,
yum remove <package_name>。 - 查找软件包命令,
yum search <keyword>。 - 清除缓存目录下的软件包,
yum clean packages。 - 清除缓存目录下的 headers,
yum clean headers。 - 清除缓存目录下旧的 headers,
yum clean oldheaders。 - 清除缓存目录下的软件包及旧的 headers,
yum clean, yum clean all (= yum clean packages; yum clean oldheaders)。
- 列出所有可更新的软件清单命令,
- 更换yum源:
- 首先备份
/etc/yum.repos.d/CentOS-Base.repo,mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup。 - 下载对应版本repo文件, 放入
/etc/yum.repos.d/文件夹下。 - 运行以下命令生成缓存,
yum clean all,yum makecache。
- 首先备份
apt命令
apt(Advanced Packaging Tool)是一个在Debian和Ubuntu中的Shell前端软件包管理器。
apt命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
语法:
1 | apt [options] [command] [package ...] |
- 选项
options,可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 “yes”),-q(不显示安装的过程)等。 - 选项
command,要进行的操作,install(安装),选项remove(卸载),选项search(搜索)等。 - 参数
package ...,软件名称。 - apt常用命令:
- 列出所有可更新的软件清单命令,
sudo apt update。 - 升级软件包,
sudo apt upgrade。 - 列出可更新的软件包及版本信息,
apt list --upgradeable。 - 升级软件包,升级前先删除需要更新软件包,
sudo apt full-upgrade。 - 安装指定的软件命令,
sudo apt install <package_name>。 - 安装多个软件包,
sudo apt install <package_1> <package_2> <package_3>。 - 更新指定的软件命令,
sudo apt update <package_name>。 - 显示软件包具体信息,例如,
版本号,安装大小,依赖关系等等,sudo apt show`。 - 删除软件包命令,
sudo apt remove <package_name>。 - 清理不再使用的依赖和库文件: sudo apt autoremove`。
- 移除软件包及配置文件: sudo apt purge
`。 - 查找软件包命令,
sudo apt search <keyword>。 - 列出所有已安装的包,
apt list --installed。 - 列出所有已安装的包的版本信息,
apt list --all-versions。
- 列出所有可更新的软件清单命令,
小技巧
修改Linux时区
系统默认时区非中国的东八区。
使用root权限,执行如下命令,将系统自带的/etc/localtime文件删除,并将/usr/share/zoneinfo/Asia/Shanghai文件链接为/etc/localtime文件即可,修改时区为东八区时区。
1 | rm -f /etc/localtime |
同步时间
可以通过ntp程序自动校准系统时间。安装ntp:yum -y install ntp。
启动并设置开机自启:
systemctl start ntpdsystemctl enable ntpd
当ntpd启动后会定期的联网校准系统的时间。
也可以手动校准(需root权限),通过阿里云提供的服务网址配合ntpdate命令(安装ntp后会附带这个命令)自动校准,执行以下命令ntpdate -u ntp.aliyun.com。
域名解析
可以通过主机名找到对应计算机的IP地址,这就是主机名映射(域名解析)。
先通过系统本地的记录去查找,如果找不到就联网去公开DNS服务器去查找。
系统本地的记录:
- Windows看,
C:\Windows\System32\drivers\etc\hosts。 - Linux看,
/etc/hosts。
强制停止
Linux某些程序的运行,如果想要强制停止它,可以使用快捷键ctrl + c。
命令输入错误,也可以通过快捷键ctrl + c,退出当前输入,重新输入。
退出或登出
可以通过快捷键ctrl + d,退出账户的登录,或者退出某些特定程序的专属页面,但不能用于退出vi/vim。
历史命令搜索
- 可以通过
history命令,查看历史输入过的命令。 - 可以通过
!命令前缀,自动执行上一次匹配前缀的命令,如输入!cr自动执行上一次clear清屏命令。 - 可以通过快捷键
ctrl + r,输入内容去匹配历史命令,如果搜索到的内容是需要的,那么回车键可以直接执行,使用键盘左右键,可以得到此命令(不执行)。
光标移动快捷键
ctrl + a,跳到命令开头ctrl + e,跳到命令结尾ctrl + 键盘左键,向左跳一个单词ctrl + 键盘右键,向右跳一个单词
清屏
通过快捷键ctrl + l,可以清空终端内容,或通过命令clear得到同样效果。


