一、认识linux
linux发行版本
deb派系--桌面版系统
1、Debian(读音:‘debeen 待宾)
2、Ubuntu(读音:u’bʌntu 乌班图)
3、Deepin(读音:diːpin 低评)
……
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#〖安装本地软件包方法〗
sudo dpkg -i xxxx.deb #安装【本地软件包】(dpkg 是 Debian Package /ˈpækɪdʒ/ 简写,即 Debian 软件包)
sudo dpkg -r xxxx #卸载【本地软件包】(保留配置)(不保留配置使用 -P 选项)
sudo dpkg -l xxxx #显示软件的版本
#【安装远程软件包方法】
sudo apt-get install xxxx #安装软件包的最新版本(apt 是 Advanced Package Tool(高级软件包工具)简写,apt-get、apt-cache 是 apt 工具的传统命令行接口,apt 现在被推荐为更现代的用法,例如:apt list --installed 列出已安装的软件包)
sudo apt-get remove xxxx #从系统中删除指定的软件包
sudo apt-get update #检测已安装软件包是否有更新(如果指定软件名则表示指定软件包是否有更新)
sudo apt-get upgrade xxxx #升级指定的软件包(前提:先运行 update 检测)(而使用 dist-upgrade 则以更聪明的方式来解决更新过程中出现的软件依赖问题)
sudo apt-cache list xxxx #从资源库中查询可用的软件包
sudo apt-cache search g++ #搜索单词为g++的软件包
sudo apt-cache show g++ #显示g++软件包详细信息
|
rpm派系--服务器系统
1、RedHat(读音:‘redhæt [红帽])
2、CentOS(读音:sen’tus 圣斗士)
3、Fedora(读音:fɪ’dɔːrə 费多拉帽)
……
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#〖安装本地软件包方法〗
sudo rpm -ivh xxxx.rpm #安装【本地软件包】(其中 v 显示详细信息,h 显示安装进度)
sudo rpm -e xxxx #卸载【本地软件包】
sudo rpm -Uvh xxxx.rpm #升级软件 (其中 v 显示详细信息,h 显示安装进度)
#【安装远程软件包方法】
sudo yum install xxxx #安装软件包的最新版本
sudo yum remove xxxx #从系统中删除指定的软件包
sudo yum update xxxx #升级指定的软件包
sudo yum list #列出所有可安装的软件包(如果指定软件名则表示列出指定可安装的软件包)
sudo yum list installed #列出已安装的软件包
sudo yum list updates #列出所有可更新的软件包
|
linux在线源码
如果想了解 linux 内核源代码,强烈推荐在 Bootlin 上阅读。
Linux 全称 GNU/Linux,是一种免费使用和自由传播的类 UNIX 操作系统,其内核由 Linus Benedict Torvalds(林纳斯·本纳第克特·托瓦兹)于 1991 年 10 月 5 日首次发布,它主要受到 Minix 和 Unix 思想的启发,是一个基于 POSIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux 有上百种不同的发行版,如基于社区开发的 debian、archlinux,和基于商业开发的 Red Hat Enterprise Linux、SUSE、Oracle Linux 等。
linux核心思想
● linux 核心思想
首先记住这个:Linux 的核心思想即一切皆是文件,设备是文件,系统是文件。比如在我们插入一个 USB 设备,/etc 的目录下多一个 USB 设备的文件夹。而对 USB 所有的操作都是通过读写这个文件进行。脚本(Script /skrɪpt/)是存储在文件中的命令的集合,命令(Command /kə'mɑːnd/)是针对计算机的指令,终端/控制台(tty,Termial /'tɜːmɪnl//console /kən'səʊl/)是命令行接口,壳(Shell /ʃel/)是一个命令行解释器,内核(Kernel /'kɜːnl/)是 Linux 操作系统的核心。
● linux 脚本解释器
Bash /bæʃ/是大多数 Linux 系统默认的 shell 脚本解释器(注:我们平时说 Linux 中有多少种 shell 其实指的就是其中存在几种 shell 脚本解释器),可以使用命令cat /etc/shells打开文件查看到系统可用的 shell 。在脚本文件中,我们常看到第一行内容为#!/bin/bash,表示告知系统使用哪个脚本解释器来执行脚本文件,即使用哪一种 shell 。(补充:Bourne Again shell /bʊən/ə'ɡen/ʃel/(简写为 Bash)(标记为#!/bin/bash)是 Bourne shell(标记为#!/bin/sh) 的扩展,与 Bourne shell 完全向后兼容,并且在 Bourne shell 的基础上增加、增强了很多特性。特别说明:#!/bin/bash这些信息在首行且必须使用\n来换行,不能是\r\n之类的来换行,否则会提示 ^M 错误!!!
● linux 环境变量
shell 中环境变量变量分三种:内部变量、系统变量、用户变量。
内部变量:系统提供,不用定义,不可修改;($$ $? $0 $# $* $@ $1 … $SHELL(当前使用的shell(路径)) $HOME(家目录))
系统变量:系统提供,不用定义,可以修改,利用export将用户变量转为系统变量;
用户变量:用户提供,用户定义,可以修改,利用export将用户变量转为系统变量;
环境变量(environment variables /ɪn'vaɪrənmənt/'veəriəbls/)一般是指在操作系统中用来指定操作系统运行环境的一些参数,其中一个目的是告诉系统知道应用程序所在哪个路径下,让系统可直接运行应用程序(如果应用程序已在系统标准位置下,则不需要增加环境变量。linux系统几个标准位置:/bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin 等)(Windown 系统使用分号分隔,而 linux 系统使用冒号分隔)。一般提到的环境变量主要指系统变量。环境变量配置推荐:如果要修改所有用户环境配置的话修改/etc/profile,修改单个用户的话修改~/.bashrc(如:开发板的 /root/.bashrc)。
1.1、export显示包括利用 export 将用户变量转为环境变量的 shell 变量。
1.2、echo $PATH命令为输出当前的 PATH 环境变量的值(以冒号分割不同路径)
1.3、export PATH=$PATH:/home/abc/mysql/bin可临时/永久配置环境变量(例子)。
2.1、/etc/environment整个系统环境变量,不能使用 export PATH,不建议改!
2.2、/etc/profile所有用户环境变量,只在用户登录的时候读取一次。
2.3、/etc/bash.bashrc所有用户环境变量,每次运行 Shell 就会读取一次,影响效率。
2.4、~/.profile只针对当前用户,只在用户登录的时候读取一次(不同系统可能是:~/.bash_profile、~/.bash_login、~/.profile)
2.5、~/.bashrc只针对当前用户,每次运行 Shell 就会读取一次。
2.6、source xxxxxx手动生效上面脚本文件(如:source /etc/profile)。
linux软件安装
所谓命令,其实就是在终端机下调用某个软件(工具)运行。这些软件大部分是系统自带的,但有些需要我们去安装,安装的方式有在线安装、离线安装(离线软件包括:解压版、源码版、安装版)。
在线版:利用系统提供的服务,直接运行命令安装软件;(常规方式)
解压版:直接解压即可使用,建议移到合理目录;(推荐方式)
源码版:先编译源代码,再复制到目标(板)运行;
安装版:执行后按照提示安装;
【补充:通常还需要配置环境变量!】
● 在线版-安装示例:
1
2
|
sudo apt-get update # 更新软件包列表
sudo apt-get install python3 # 安装python3
|
● 解压版-安装示例:
1
2
3
4
5
6
7
|
wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 # 下载交叉编译器压缩包
sudo tar -xjvf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 -C /usr/lib/gcc # 将交叉编译器压缩包解压到:/usr/lib/gcc
sudo gedit /etc/profile # 打开环境变量,在文件最后添加内容:export PATH=$PATH:/usr/lib/gcc/gcc-arm-none-eabi-10.3-2021.10/bin
source /etc/profile # 使能环境变量。
sudo apt-get install lsb-core # 64位操作系统需要安装32位依赖库:lsb-core (arm-none-eabi-gcc 用到)
sudo apt-get install lib32ncurses5 # 64位操作系统需要安装32位依赖库:lib32ncurses5(arm-none-eabi-gdb 用到)
arm-none-eabi-gcc -v # 查看版本(验证是否安装成功)
|
● 源码版-安装示例:
1
2
3
4
5
6
7
8
9
10
|
wget https://cgdb.me/files/cgdb-0.8.0.tar.gz # 下载软件源码
sudo tar -xzvf cgdb-0.8.0.tar.gz # 解压文件
cd cgdb # 进入文件夹
./autogen.sh # 自动生成配置(文件)(前提需要安装依赖:sudo apt-get install autoconf automake libtool-bin)
./configure --prefix=/usr/local/cgdb # 手工修改配置,并设置安装目录
sudo gedit /etc/profile # 打开环境变量,在文件最后添加内容:export PATH=$PATH:/usr/local/cgdb/bin
source /etc/profile # 使能环境变量。
make # 编译CGDB软件,
sudo make install # 安装CGDB软件。
cgdb --version # 查看CGDB版本(验证是否安装成功)
|
● 多版本共存处理方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# 例如系统自带了【gcc-5.4】版,现在又要安装【gcc-9】版。 # 扩展:【apt命令Linux发行商都在推荐】(网文`apt`对比`apt-get`:https://www.sysgeek.cn/apt-vs-apt-get/)
sudo apt install software-properties-common # 安装`PPA`仓库工具(只需要安装一次)
sudo add-apt-repository ppa:ubuntu-toolchain-r/test # 加入`PPA`仓库 (gcc 新版本仓库)
sudo apt update # 更新`PPA`仓库信息
sudo apt install gcc-9 g++-9 # 安装`GCC`和`G++`(安装 gcc g++ 9)
#####加gcc版本优先级方法##### # 注意要把之前在环境变量加入的软件执行文件路径移除,否则可能会冲突!
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 999 --slave /usr/bin/g++ g++ /usr/bin/g++-5
#####选择gcc工作版本方法##### # alternative /ɔːl'tɜːnətɪv/ 可选
sudo update-alternatives --config gcc # 选择gcc工作版本,根据界面提示输入对应数字后回车选择
# ● 原理只是快捷方式链接不同对象 ●
#####移除gcc某优先级方法#####
sudo update-alternatives --remove gcc /usr/bin/gcc-9 # 移除 gcc 9 的优先级(将从优先级列表中移除)
#####移除专用PPA仓库方法#####
sudo add-apt-repository --remove ppa:ubuntu-toolchain-r/test
# 移除上面加入的PPA仓库
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# 又如安装【node】两个版本
####下载软件####
wget https://nodejs.org/dist/latest-v10.x/node-v10.24.1-linux-x64.tar.xz # 在命令窗口直接下载[node-v10.24.1]
wget https://nodejs.org/dist/latest-v10.x/node-v16.19.0-linux-x64.tar.xz # 在命令窗口直接下载[node-v16.19.0]
tar -xf node-v10.24.1-linux-x64.tar.xz # 将压缩包解压到当前目录
tar -xf node-v16.19.0-linux-x64.tar.xz # 将压缩包解压到当前目录
sudo mv node-v10.24.1-linux-x64 /usr/local/node-v10.24.1 # 将文件夹移到/usr/local/目录并重命令为[node-v10.24.1]
sudo mv node-v16.19.0-linux-x64 /usr/local/node-v16.19.0 # 将文件夹移到/usr/local/目录并重命令为[node-v16.19.0]
####加入列表####
sudo update-alternatives --install /usr/bin/node node /usr/local/node-v10.24.1/bin/node 1024 --slave /usr/bin/npm npm /usr/local/node-v10.24.1/bin/npm
sudo update-alternatives --install /usr/bin/node node /usr/local/node-v16.19.0/bin/node 1619 --slave /usr/bin/npm npm /usr/local/node-v16.19.0/bin/npm
#sudo update-alternatives --remove node /usr/local/node-v10.24.1/bin/node # 移除某项列表的方法
####选择版本####
sudo update-alternatives --config node # 选择默认版本,根据界面提示输入对应数字后回车选择
|
linux命令常识
●【命令的基本格式】:
command [options] [arguments]
选项options(/‘ɒpʃnz/)是命令的行为开关,分为短选项和长选项,短选项-例如:-l -a,某些可组合-例如-la,其带子参数为-p 1234(通常中间使用空格),长选项-例如:--help,其带子参数为--size=1G(通常中间使用=)。补充:选项一般在命令右边及作用对象的左边。
参数arguments(/‘ɑːgjʊmənts/)是命令的作用对象,例如:cat 123.txt表示查看 123.txt 文件内容。
●【多条命令方式】:
command_1; command_2; command_3表示如果一件事情需要多行命令运行,无论命令成功与否都会往下一条指令执行,免去等待时间;
command_1 && command_2表示如果一件事情需要多行命令运行,并确保命令【成功】才往下一条指令执行,例如:一些编译命令;
command_1 || command_2表示如果一件事情需要多行命令运行,并确保命令【失败】才往下一条指令执行;
command_1 & command_2表示两行命令【同时】执行(补充:实际优先执行前行命令)
●【在 bash 中的 命令、选项、参数 处理方式】:网文
直接来处理,依次对 $1, $2, ..., $n 进行解析。
getopts来处理,只能处理单个字符选项的情况(如:-n 10 -f file.txt等)。
getopt来处理,既可处理单个字符选项,也可处理长选项(如:–prefix=/home等)。
●【. .. / $ % = - – | > » ~ # 常识】网文
. 一般表示当前位置
.. 一般表示上一级位置
/ 一般表示文件夹或路径
$ 一般表示变量/参数/最尾部
% 一般表示通配符/所有
= 一般表示赋值
- 一般表示短选项
-- 一般表示长选项
| 一般表示管道命令
> 一般表示以覆盖方式输出保存至某文件
>> 一般表示以追加方式输出保存至某文件
~ 一般表示用户 home 目录
# 一般表示注释(在脚本中)
●【-a -l -n -t -r -f -i -v -u -p 常用选项】
-a 一般表示全部
-l 一般表示列表
-n 一般表示行/行号
-t 一般表示类型
-r 一般表示递归/文件夹/重启
-f 一般表示强制/文件
-i 一般表示互动/输入/不区分大小写
-v 一般表示详情
-u 一般表示用户/差异
-p 一般表示密码/进程号
linux命令资料
- Linux 的一些基础命令汇总
- 必知必会的 Linux 命令
- 鸟哥的 Linux 私房菜 - 基础学习篇
- Linux 笔记:核心思想、常用命令以及脚本语法
- 菜鸟教程-shell
- Ubuntu系统环境变量详解
- Linux 环境变量配置汇总
- Linux export、set、env和source作用详解
- 常见编程语言选择
- 作为程序员的你,常用的工具软件有哪些?
- Codelf 帮开发者命名变量的开源搜索服务
- 单片机 -> RTOS -> Linux
二、基本命令
1、常用的快速键
Ubuntu 拥有多个操作终端(使用Ctrl+Alt+F1~F7切换),F7为系统默认启动&加载的图形操作终端,其余都是为纯命令行界面终端。
Ctrl+Alt+F1切换到命令行界面终端。
Ctrl+Alt+F7切换到图形界面终端。
Ctrl+Alt+t在图形界面下打开命令行终端机。
Ctrl+d关闭当前命令行终端机(纯终端则重启)。
Ctrl+c强制退出在当前命令行终端机的程序。
Ctrl+Insert复制选择的文本内容。
Shift+Insert粘贴缓存的文本内容。
Ctrl+a 或 Home转到行的开头。
Ctrl+e 或 End转到行的结尾。
Ctrl+u把光标前面的内容全删掉。
Ctrl+k把光标后面的内容全删掉。
Ctrl+l输入行移到页面顶部(相当清屏)。
↑ 和 ↓方向键调取之前执行过的 Linux 命令。
Tab 自动补全命令,提高输入速度及精准度。
$ 命令行前面显示此字符,表示以用户权限操作。
# 命令行前面显示此字符,表示管理员权限操作。(root 权限)
2、系统权限操作
sudo su chmod chown chgrp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
sudo su # su 仅仅取得 root 权限【Permission】,工作环境不变。
su root # 切换到root
exit # 退出root(前提已进入root)
# 【关于提示符】:
# ~$ 表示处于普通用户权限
# ~# 表示处于 root 权限
sudo passwd # 设置root的密码 (根据提示输入:一般先要经过输入当前用户密码验证,再输入两次设置root新密码)
# 【扩展说明】:
# [su ] 向当前用户授权管理员权限级别许可,但工作环境没有任何变动
# [sudo ] 以管理员身份操作(只在操作过程中变成管理员工作环境,平常还是当前用户工作环境)
# [chmod] 修改文件(夹)操作权限,特别是从Windows拷贝到linux时,经常要改权限,否则不能执行
sudo chmod -R 777 /srv/ftp/upload/ # 修改[该目录里面的所有文件]操作权限:拥有者rwx,用户组rwx,其它用户rwx
sudo chmod 777 /srv/ftp/upload/ # 修改目录[/srv/ftp/upload ]操作权限:拥有者rwx,用户组rwx,其它用户rwx
sudo chmod 751 /srv/ftp/23.txt # 修改文件[/srv/ftp/23.txt ]操作权限:拥有者rwx,用户组r-x,其它用户--x
sudo chmod ug+rw /srv/ftp/upload/ # 修改目录[/srv/ftp/upload ]操作权限:拥有者u和用户组g[增加]读r和写w权限
sudo chmod ug-rw /srv/ftp/upload/ # 修改目录[/srv/ftp/upload ]操作权限:拥有者u和用户组g[移除]读r和写w权限
sudo chmod ug=rw /srv/ftp/upload/ # 修改目录[/srv/ftp/upload ]操作权限:拥有者u和用户组g[设为]读r和写w权限
# 【扩展说明】:
# [u] 表文件拥有者 | [+] 添加某个权限 | [r] 可读
# [g] 表示同组用户 | [-] 取消某个权限 | [w] 可写
# [o] 表示其它用户 | [=] 重设 rwx权限 | [x] 可执行
# [a] 表示全部用户 | |
sudo chown root /var/run/httpd.pid # 改变 /var/run/httpd.pid 文件的拥有者为 root
sudo chown runoob:runoobgroup f.txt # 改变 f.txt 文件的拥有者为 runoob,用户组为 runoobgroup
sudo chown :runoobgroup f.txt # 改变 f.txt 文件的用户组为 runoobgroup
sudo chown xiaoming 123.txt # 改变 123.txt 文件的拥有者为 xiaoming
sudo chown -R xiaoming /home/abc/ # 改变 /home/abc/ 目录及其下面所有文件(夹)的拥有者为 xiaoming(拥有者owner /'əʊnə(r)/)
sudo chgrp -R xiaoming /home/abc/ # 改变 /home/abc/ 目录及其下面所有文件(夹)的用户组为 xiaoming(用户组group /ɡruːp/)
# 【权限总结】:
# 1.文件(夹)的拥有者(用户/用户组)
# 2.拥有者的操作权限(读/写/执行)
# 3.新建用户时,系统会自动创建一个与用户名同名的私有组(称为 “主组”),该用户默认属于这个组。
# 查看所有用户:cat /etc/passwd(系统用户通常 UID < 1000,自建用户 UID ≥ 1000)。
# 查看所有组 :cat /etc/group
# 查看某个用户所属的组:groups <用户名>
|
备注:-R 大写一般用在权限命令这里(还有ls),-r 小写一般用在其它命令那里。
3、根与目录操作
cd ./ ../ pwd ls ll !! tree
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
cd .. # 退回上一级目录
cd ../.. # 退回上两级目录
cd ftp/upload # 进入当前子目录
cd ./ftp/upload # 进入当前子目录(同上)(平常可以省略[./])
cd /usr/local # 进入 绝对目录
# [../] 表示相对路径(上级目录)
# [./] 表示相对路径(当前目录)
# [/] 表示绝对路径
# [~] 表示家目录
cd ~ # 进入当前用户的家目录
cd - # 回到之前所在的目录
pwd # 显示当前工作目录的全路径 (print working directory)
!! # 显示上一条命令及上一条命令的结果
./qt-creator-linux-x86.run # 运行[qt-creator-linux-x86.run]此文件
ls # 查看当前目录下文件
ls upload # 查看当前目录下[upload]目录下文件
ls *.o # 查看当前目录下扩展名为[*.o]的相关文件
ls -l > lsoutput.txt # 以长格式显示文件的详细信息, 直接将打印内容保存到当前目录下lsoutput.txt(创建覆盖内容)
ls -l >> lsoutput.txt # 以长格式显示文件的详细信息, 直接将打印内容保存到当前目录下lsoutput.txt(尾部插入内容)
ls -R # 连同子目录的内容一起列出(递归列出)
ls -a # 显示所有文件(包含以点(.)开头的隐藏文件)
ls -l # 以长格式显示文件的详细信息,可以查看文件权限,所属用户,日期等
ll # 同 ls -l(其它选项:-t 按修改时间列出,-s 显示出大小)
ls -l libmad.so.0 # 以长格式显示文件的详细信息查看 libmad.so.0 文件
ls -l | grep rwxrwxr- # 列出当前目录文件(夹),但只显示经过[grep]筛选含有[rwxrwxr-]的内容(grep是独立命令,|是管道命令)
# 【扩展说明】:
# 文件属性第一个字符表示是什么? 如: -rwxrwxrwx, drwxrwxrwx, ……
# [-] 常规文档(regular file): 纯文本文档(ASCII),二进制文件(binary),数据格式文件(data)
# [d] 目录(directory)
# [l] 连接文件(link),就是类似 Windows 系统底下的快捷方式
# [b] 区块(block)设备文件
# [c] 字符(character)设备文件
# [s] 资料接口文件(sockets)
# [p] 数据输送文件(FIFO, pipe)
tree # 列出指定目录下的所有文件(夹),包括子目录里的文件(夹)
tree -L 1 # 显示一级目录和文件
tree -L 1 -d # 显示一级目录
# 【目录结构】:
# /bin: 常用命令(二进制执行文件)
# /sbin: 系统命令(二进制执行文件)
# /dev: 设备文件目录(设备以档案形态存于本目录)
# /media:可移动媒体设备挂载目录(与/mnt无本质区别)
# /mnt: 存储设备挂载目录(一般为挂载临时的安装目录)
# /etc: 系统配置文件目录
# /home: 用户主目录
# /root: 管理员主目录
# /opt: 可选的附加应用程序(第三方协力软件)
# /boot: 系统内核文件和引导装载程序文件
# /lib: 存放系统的库文件
# /proc: 虚拟机系统,记录进程,网络信息等
# /sys: 虚拟文件系统,记录内核数据
# /var: 系统运行产生的文件
# /usr: 用户程序目录(Unix Software Resource)
# /usr/bin — 众多的应用程序(是对/bin、/sbin的一个补充)
# /usr/sbin — 超级用户的一些管理程序(是对/bin、/sbin的一个补充)
# /usr/doc — linux文档
# /usr/include — linux下开发和编译应用程序所需要的头文件
# /usr/lib — 常用的动态链接库和软件包的配置文件
# /usr/man — 帮助文档--linux在线使用手册
# /usr/src — 源代码,linux内核的源代码就放在/usr/src/linux里
# /usr/local/bin — 本地的程序一般安装在此,这样可以在升级新版本时无须重新安装全部程序
# /usr/local/lib — 本地增加的库
# /usr/local/etc — 本地配置文件和目录
|
4、文件(夹) 操作
mkdir touch cp mv rm find locate ln zip unzip tar 7z
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
mkdir linuxeye # 在当前目录创建[一层目录]:linuxeye
mkdir -p /opt/smart210/linux # 在指定目录创建[多层目录](注:如果此目录已存在则不受影响)
touch a.txt # 新建[a.txt]文件
cp /home/tslib.tar.gz /usr/local/ # 绝对路径 /home/tslib.tar.gz 复制到 /usr/local
cp upload/tslib.tar.gz /srv/ftp/ # 当前目录下的 upload/tslib.tar.gz 复制到 /srv/ftp
cp -r test /mnt # 当前目录下的 【文件夹】 test 复制到 /mnt (-r表示目录拷贝(递归复制))
cp -ra test /mnt # 当前目录下的 【文件夹】 test 复制到 /mnt (包括修改时间、权限、链接等所有属性也拷贝)
cp -rp test /mnt # 当前目录下的 【文件夹】 test 复制到 /mnt (还把其修改时间和访问权限也复制到新文件中)
cp -s 123.txt 321.txt # 创建软链接(具体请查看 ln -s)
cp -l 123.txt 321.txt # 创建硬链接(具体请查看 ln )
mv linux linuxeye # 将linux文件(夹)重命名为linuxeye (相同路径就是改名)
mv vhost.sh upload/ # 将vhost.sh移动到upload目录下 (不同路径就是剪切)
rm init.sh # 删除[init.sh]文件(只能删除文件,不能删除目录)
rm -r upload/ # 删除[upload ]目录(删除目录及其里面所有文件(夹))
rm -i 123.txt # 询问是否删除文件(夹)
rm -rf upload # 递归强制删除文件或目录 (慎用!!!!!!!!!!!!)(f:force/fɔːs/强制)
# [-v] 详情。显示操作详情。
# [-i] 互动。提示用户确认操作(删除/覆盖)。覆盖:就是复制或移动时覆盖目标文件(夹)
# [-f] 强制。不提示并强制操作(删除/覆盖)。加[-i]选项也没用,所以要谨慎使用!!!!!!
# [-r] 递归。对文件夹递归操作(删除/复制)。也说是操作对象为文件夹,而非文件!!!!!
# [-u] 差异。有文件差异才操作(覆盖)。复制:目标文件与源文件有差异时才会复制;移动:源文件比目标文件新才会覆盖。
find /home -name readme.txt # 从 /home 目录开始搜索文件 readme.txt
find /home -user xiaoming # 从 /home 目录开始搜索属于 xiaoming 用户的文件(夹)
find /usr/bin -type f -atime +100 # 搜索【超过100天】未被使用过的【执行文件】
find /usr/bin -type f -mtime -10 # 搜索【 10天以内】被创建或者修改过的文件
locate readme.txt # 快速查找 readme.txt 文件(最新变动文件可能搜索不到,用 updatedb 命令更新数据库(索引))
ln -s /usr/local/lib/libmad.so.0 /usr/lib/libmad.so.0 # 软链接:相当于一个文件增加多个快捷方式(它实际上是一个特殊的文件)
ln /bin/readme.txt /usr/local/bin/readme.txt # 硬链接:相当于一个文件有多个路径及名称(目录不能建立硬链接)
# 1.软链接是可以跨分区的,但是硬链接只能在同一分区内。
# 2.目录不能建立硬链接,但可以建立软链接。
# 3.硬链接可以很好防止“误删”,因为删除操作只删除索引(类似C语言指针);只有最后一个连接被删除,文件内容才会被释放(删除)。
# [ln 源文件 新文件] 等效于 [cp -l 源文件 新文件]
# [ln -s 源文件 新文件] 等效于 [cp -s 源文件 新文件]
zip -r file.zip ./tmp # 压缩[zip ]文件(-r 递归处理,即所有子目录一并处理)
unzip -q file.zip # 解压[zip ]文件(-q 执行时不显示任何信息)
tar -czvf file.tar.gz ./tmp/abc # 压缩[tar.gz ]文件
tar -xzvf /tmp/a.tar.gz -C /home/ab # 解压[tar.gz ]文件,指定目录文件到指定目录,-C 表示指定【解压】路径
tar -xzvf /tmp/a.tar.gz # 解压[tar.gz ]文件,指定目录文件到当前目录
tar -xjvf php-5.tar.bz2 # 解压[tar.bz2]文件到当前文件夹
# -C 指定【解压】路径
# -c 压缩
# -x 解缩
# -z 使用 gzip 算法压缩解压。后缀为[.tar.gz ] 或 [.tgz]
# -j 使用 bzip2 算法压缩解压。后缀为[.tar.bz2]
# -J 使用 xz 算法压缩解压。后缀为[.tar.xz ]
# -v 显示过程信息
# -f 指定压缩包的文件名称(必须放在选项最后,紧跟文件名)
# 注意:z在前面必须加-,即-zxvf;要加f参数必须在最后。
7z x yourfile.7z # 解压[yourfile.7z]文件到当前目录 (备注:[p7zip]软件包安装 sudo apt-get install p7zip-full)
7z x yourfile.7z -o ./tmp/abc # 解压[yourfile.7z]文件到指定目录
|
备注:mv 命令不分文件和文件夹,不用 -r 选项。
备注:tar -f 参数指定【文件名】-C 参数指定【路径】,也不用 -r 选项。
5、文件内容操作
cat head tail more column grep echo gedit vi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
cat -n /home/md.c # 查看 md.c 文件内容 (同时显示行号)
cat /home/md.c # 查看 md.c 文件内容 (连续方式显示)(cat 为 concatenate /kən'kætɪneɪt/ 连续)
head -n 2 desc.txt # 查看desc.txt的头两行(连续方式显示)(/hed/ 头部)
tail -n 2 desc.txt # 查看desc.txt的尾两行(连续方式显示)(/teɪl/ 尾巴)
tail -n +2 desc.txt # 查看desc.txt的第2行到最尾行内容
cat md.c | head -n 30 | tail -n +10 # 查看 md.c 的第10~30行内容(共21行)(操作原理:先截取前部分内容,再截取后部分内容)
cat md.c | tail -n +30 | head -n 10 # 查看 md.c 的第30~39行内容(共10行)(操作原理:先截取后部分内容,再截取前部分内容)
sed 's/aa/bb/g' md.c # 查看 md.c 文件内容,并已将字符[aa]替换为[bb](只是查看,并没有修改文件)
more md.c # 查看 md.c 文件内容 (分页方式显示)
grep "abc" /home/readme.txt # 在文件中搜索符合要求的文本内容[abc],并把匹配的行打印出来(grep的g-globally-全局,re-regular-正则,p-print-打印)
grep -i "abc" readme.txt # 在文件中不区分大小搜索文本内容[abc],并把匹配的行打印出来
ps | column -t # 显示当前shell下的进程,并使用[| column -t]格式化多列显示
ls -l | grep rwxrwxr- # 列出当前目录文件(夹),但只显示经过[grep]筛选含有[rwxrwxr-]的内容(grep是独立命令,|是管道命令)
# 【扩展说明】:
# [-i] 筛选不区分大小写
# [-n] 在每一行首加多显示行号
# [-c] 显示相匹配文本的行总数目(如:20表示有20行内容相匹配)
echo $PATH # 输出当前环境变量的内容
sudo gedit /home/root/read.txt # 使用 gedit 编辑 read.txt 文档
sudo vi /home/root/read.txt # 使用 vi 编辑 read.txt 文档
# 【扩展说明】:
#
#【命令模式】--------------------------------------
#『光标』+++++++
# [h ] 光标左移
# [j ] 光标下移
# [k ] 光标上移
# [l ] 光标右移
# [^ ] 光标移到行首
# [$ ] 光标移到行尾
# [5- ] 光标向上移动5行
# [5+ ] 光标向下移动5行
# [5G ] 光标移动到第5行
#『插入』+++++++
# [i ] 在光标前面插入【进入插入模式】
# [I ] 所在行最前插入【进入插入模式】
# [a ] 在光标后面插入【进入插入模式】
# [A ] 所在行最后插入【进入插入模式】
#『删除』+++++++
# [x ] 删除光标后[一个字符]
# [X ] 删除光标前[一个字符]
# [6x ] 删除光标后[六个字符]
# [8X ] 删除光标前[八个字符]
# [dd ] 删除光标所在的[一行]
# [9dd] 删除光标所在行开始的[九行]
#『复制』+++++++
# [yw ] 复制光标后[一段字段] (以空格或符号分隔开的字段!!)
# [yy ] 复制光标所在的[一行]
# [5yw] 复制光标后[五段字段] (以空格或符号分隔开的字段!!)
# [9yy] 复制光标所在行开始的[九行]
#『粘贴』+++++++
# [p ] 粘贴
#『撤消』+++++++
# [u ] 最后一次修改[撤消&重做]
# [Ctrl + r] 可多次[撤消]
#
#【底行模式】--------------------------------------
#『光标』+++++++
# [:5 ] 光标移动到第5行(要按回车执行,下面操作都一样)
# [:set nu ] 显示行号
# [:set nonu] 不显示行号
#『查找』+++++++
# [/ab] 向下查找"ab"字符串,[n]继续查找下一个
# [?ab] 向上查找"ab"字符串,[n]继续查找上一个
#『替换』+++++++
# [: s/str1/str2/g] 所在行中所有 str1 字符串替换为 str2
# [:% s/str1/str2/g] 从[首行]到[最尾]行中所有"str1"字符串替换为"str2"
# [:1,$ s/str1/str2/g] 第[01]行到[最尾]行中所有"str1"字符串替换为"str2"
# [:6,20 s/str1/str2/g] 第[06]行到第[20]行中所有"str1"字符串替换为"str2"
# [:.,20 s/str1/str2/g] [光标]行到第[20]行中所有"str1"字符串替换为"str2"
# [:.,$-5 s/str1/str2/g] [光标]行到尾[05]行中所有"str1"字符串替换为"str2"
#『退出』+++++++ └→g表示整行内容
# [:q!] 不保存退出
# [:wq] 保存退出
# [:w ] 保存文档(但不退出)
# [:w filename] 另存为叫filename的文件(但不退出)
|
6、远程文件操作
wget ftpget ftpput tftp ftp nfs telnet ssh sftp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
wget http://www.baidu.com # 直接使用wget命令下载,默认是不开启断点续传功能的(超详细网文 https://blog.csdn.net/weixin_42915431/article/details/122339184)
wget -c http://www.baidu.com # 直接使用wget命令下载,[-c]表示开启断点续传功能的
wget -O /home/tmp http://www.baidu.com # 直接使用wget命令下载,[-O]指定存放目录并改文件名,本例/home/tmp(改文件名为tmp)
wget -r -l1 -np http://192.168.3.222/D/img/ # 下载文件夹(但附加有一些参数文件),[-r]递归下载文件夹,[-l1]只递归一层(即不下载其目录子文件夹),[-np]不下载父目录中的文件。其它参数:[-nd]不复制服务器目录路径,[-p]下载网页所需的所有文件,[-k]将绝对链接转为相对链接方便下载整个站点后脱机浏览网页,[-L]递归时不进入其它主机
wget --ftp-user=liao --ftp-password=1234 ftp://10.205.1.18/123.txt
# 使用wget进行FTP下载, FTP用户:liao, FTP密码:1234, 下载:123.txt文件
curl -O http://www.linux.com/hello.sh # 下载HTTP文件,[-O]表示下载文件,Ubuntu系统默认没安装,在线安装命令:sudo apt install curl,网文:https://www.jianshu.com/p/6049f23ee204
# curl和wget比较:https://baijiahao.baidu.com/s?id=1684301142094029552&wfr=spider&for=pc
sudo ftpget -u liao -p 1234 192.168.1.20 abcd.txt # 登录远程FTP服务器"192.168.1.20", 下载"abcd.txt"到当前目录下(可指定目标路径)
sudo ftpput -u liao -p 1234 192.168.1.20 abcd.txt # 登录远程FTP服务器"192.168.1.20", 上传"abcd.txt"到当前FTP根目录上
# [-u] FTP用户; [-p] FTP密码
tftp -g -r 123.txt 192.168.1.2 # 从远程TFTP主机 192.168.1.2 下载 123.txt (●TFTP主机PC软件:Cisco TFTP Server●)
tftp -p -l 123.txt 192.168.1.2 # 向远程TFTP主机 192.168.1.2 上传 123.txt (●TFTP主机PC软件:Cisco TFTP Server●)
# [-g] 表示下载文件 (get)
# [-p] 表示上传文件 (put)
# [-l] 表示本地文件名 (local file)
# [-r] 表示远程主机的文件名 (remote file)
ftp 192.168.1.20 # vsftpd服务:登录远程FTP服务器"192.168.1.20", 接着按提示输入用户和密码
# [ls ]列出目录
# [cd ]进入目录
# [get ]下载文件
# [put ]上传单个文件
# [mput]上传多个文件
# [exit]退出FTP
# [quit]退出FTP
mount -t nfs -o nolock 192.168.2.3:/home/abc /mnt/nfs # 将另一台机的/home/abc目录挂载到本机/mnt/nfs目录下(例如:开发板目录挂接到电脑)
umount /mnt/nfs # 挂载到本机/mnt/nfs目录卸载之
# 如果本机IP就是192.168.2.28,那就是自己挂接自己了
# [-t nfs ] UNIX(LINUX) 文件网络共享。
# [-o nolock] 不使用NFS文件锁(原因:很多嵌入式设备的根文件系统中不带portmap)
telnet 192.168.1.20 # 使用telnet远程登录.
ssh root@192.168.1.20 # 使用SSH远程登录,[root]为用户名, [@]的后面为远程主机IP,登录后就可以像本地操作shell一样操作
sftp -oPort=22 xiaoming@192.168.1.20 # sftp客户端登录服务端(端口:22, 账号:xiaoming, IP:192.168.1.20),登录后可用 put、get、ls、lls、cd、lcd 等基本命令操作
|
7、磁盘硬盘操作
fdisk mount umount cfdisk dd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
df -h # 查看硬盘容量使用情况
sudo fdisk -l # 查看硬盘及分区信息(一般显示 /dev/sda /dev/sdb …)
# 【硬盘】
# /dev/hdb 是指第二个IDE硬盘(如:机械硬盘)
# /dev/sda 是指第一个SCSI硬盘(如:U盘)
# 【分区】
# /dev/hda1 是指第一个IDE硬盘上的第一个分区,IDE硬盘可以最多创建63个分区
# /dev/sdb1 是指第二个SCSI硬盘上的第一个分区,SCSI可以创建15个
# 【扩展说明】:
# /dev/hd[a-h] 指IDE硬盘, /dev/sd[a-p]指SCSI硬盘(如:U盘),
# /dev/ed[a-d] 指ESDI硬盘,/dev/xd[a-b]指XT硬盘。
sudo mkdir -p /mnt/usb # 先创建目录用作挂接点(mount point),为硬盘挂接过来准备;
sudo mount -t vfat /dev/sda1 /mnt/usb # 再将SCSI硬盘(如:U盘)挂接到刚才建的文件夹;(-t vfat 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型)
sudo umount /mnt/usb # 最后退盘前的卸载操作。(卸载前我们可以对此盘像平常操作文件(夹)一样操作即可)
# 【扩展说明】:
# [-t iso9660] 光盘或光盘镜像;
# [-t msdos ] DOS fat16文件系统;
# [-t vfat ] Windows 9x fat32文件系统;
# [-t ntfs ] Windows NT ntfs文件系统;
# [-t smbfs ] Mount Windows文件网络共享;
# [-t nfs ] UNIX(LINUX) 文件网络共享。
sudo cfdisk # 使用cfdisk工具对磁盘硬盘操作(有操作界面,根据其菜单操作即可)
sudo dd if=/dev/hdb of=/dev/hdd # 将/dev/hdb整盘备份(恢复)到/dev/hdd
sudo dd if=/dev/zero of=/swapfile bs=1024 count=32768 # 创建一个大小为32M的文件(数据初化值全为0x00)(/dev/zero空设备)
sudo dd if=/dev/hda of=/dev/hda # 修复硬盘
sudo dd if=/dev/urandom of=/dev/hda1 # 销毁磁盘数据(/dev/urandom随机设备)
sudo dd if=/dev/mem of=/root/mem.bin bs=1024 # 拷贝内存内容到硬盘(指定块大小为1k)(/dev/mem内存)
# 【关于cp与dd的区别】:
# [操作对象] dd 是对块进行操作的,cp 是对文件操作的。
# [操作动作] dd 相当于克隆+覆盖,cp 则是复制+合并。
# 【扩展说明】:
# [if= ] {输入}文件,缺省为标准输入。
# [of= ] {输出}文件,缺省为标准输出。
# [ibs= ] 指定{输入}一个块大小为多少字节。
# [obs= ] 指定{输出}一个块大小为多少字节。
# [bs= ] 同时指定{输入和输出}一个块大小为多少字节。
# [count=] 要操作多少块。
# [skip= ] 从{输入}文件开头跳过多少个块后再开始复制。
# [seek= ] 从{输出}文件开头跳过多少个块后再开始复制。
|
8、系统相关操作
export source ifconfig apt man cat free top ps kill killall logout reboot shutdown set
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
sudo gedit /etc/profile # 打开环境变量,在文件最后添加内容:export PATH=$PATH:/usr/local/cgdb/bin
source /etc/profile # 使能环境变量。备注:source 可用 . 来表示,注意点后面须要加空格!某案例:. ./export.sh
export PATH=$PATH:/home/mysql/bin # 临时配置环境变量
# 更多系统/用户/环境变量知识请查看:linux核心思想/linux 环境变量
ifconfig # 查看网络
ifconfig eth0 192.168.2.10 # 临时配置IP地址(是临时配置,没保存!)
ifconfig eth0 192.168.2.10 netmask 255.255.255.0
ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255
sudo /etc/init.d/networking restart # 重启网络
sudo gedit /etc/network/interfaces # 编辑网络 (不用 gedit 时也可以用 vi 编辑)
# 网络配置最基本内容:
# # The loopback network interface
# auto lo
# iface lo inet loopback
#
# # The primary network interface
# auto eth0
# # iface eth0 inet dhcp ← 如果是自动分配网络IP,否则是下面指定网络IP
# iface eth0 inet static
# address 192.168.0.42
# netmask 255.255.255.0
# gateway 192.168.0.1
# network 192.168.0.0
# broadcast 192.168.0.255
# dns-nameservers 114.114.114.114 8.8.8.8
sudo apt-get install xxxx # 安装软件包的最新版本(apt 是 Advanced Package Tool(高级软件包工具)简写,apt-get、apt-cache 是 apt 工具的传统命令行接口,apt 现在被推荐为更现代的用法,例如:apt list --installed 列出已安装的软件包)
sudo apt-get remove xxxx # 从系统中删除指定的软件包
sudo apt-get update # 检测已安装软件包是否有更新(如果指定软件名则表示指定软件包是否有更新)
sudo apt-get upgrade xxxx # 升级指定的软件包(前提:先运行 update 检测)(而使用 dist-upgrade 则以更聪明的方式来解决更新过程中出现的软件依赖问题)
sudo apt-cache list xxxx # 从资源库中查询可用的软件包
sudo apt-cache search g++ # 搜索单词为g++的软件包
sudo apt-cache show g++ # 显示g++软件包详细信息
sudo update-alternatives --config editor #修改默认的文本编辑器 (根据界面提示输入对应数字后回车选择)/ɔːlˈtɜːnətɪvz/
sudo update-alternatives --config gcc #选择默认的gcc编译工具(根据界面提示输入对应数字后回车选择)/ɔːlˈtɜːnətɪvz/
#设置`gcc`命令的默认工具,同时设置`g++`命令的默认工具(都是由`sudo update-alternatives --config gcc`来选择)
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9
#将[gcc-9]工具从`gcc`命令默认列表中移除
sudo update-alternatives --remove gcc /usr/bin/gcc-9
uname -a # 查看内核基本信息(内核+系统的版本信息)
lsb_release -a # 查看系统基本信息(主要为系统信息)
cat /etc/lsb-release # 查看系统基本信息(主要为系统信息)
cat /proc/version # 查看内核基本信息(内核+编译+系统的版本信息)
cat /etc/issue # 查看系统版本信息(系统的版本)
ls /dev/ttyUSB* # 查看USB转串口(插入USB前后进行对比查看)
man ls # ls命令帮助(查看ls相关的用法)(manual /'mænjuəl/ 说明书)
du -h /opt/test # 查看/opt/test目录的磁盘使用情况
file 123.txt # 文件的类型(因为在Linux下文件的类型并不是以后缀为分的)
cat /proc/cpuinfo # 显示CPU信息 (cat 为 concatenate /kən'kætɪneɪt/ 连续)
cat /proc/meminfo # 显示内存信息
free # 显示内存使用状况
top # 显示所有用户进程信息,并实时更新
top -u liao # 显示liao用户进程信息,并实时更新
# 【扩展说明】:
# [-u] 指定用户名显示
# [-p] 指定进程号显示
# [-n] 循环显示多少次
# --------------------------------------------------
#『交互命令』(在打印信息界面中,直接按下面按键)
# h 显示帮助画面
# s 改变两次刷新之间的延迟时间(单位:秒),可有小数点,默认值是5秒
# q 退出程序
# k 终止一个进程。
# r 重新安排一个进程的优先级别
# c 切换显示命令名称和完整命令行
# i 忽略闲置和僵死进程。这是一个开关式命令。
# P 根据CPU使用百分比大小进行排序
# S 切换到累计模式
# f或者F 从当前显示中添加或者删除项目
# o或者O 改变显示项目的顺序
# l 切换显示平均负载和启动时间信息
# m 切换显示内存信息
# t 切换显示进程和CPU状态信息
# M 根据驻留内存大小进行排序
# T 根据时间/累计时间进行排序
# W 将当前设置写入~/.toprc文件中
ps # 显示当前shell下的进程
ps -l -u liao # 显示用户liao的进程
ps aux # 显示所有进程
ps aux | more # 显示所有进程及其用户+分页方式显示
# 【扩展说明】:
# [-l] 详细显示PID
# [-u] 指定用户显示
# [-A] 显示所有进程
# [a ] 显示{有连接终端机}的所有进程
# [x ] 显示{没连接终端机}的所有进程
# [u ] 显示{用户名、启动时间等}列项信息
# --------------------------------------------------
#『信息解释』
# USER 哪个用户启动了这个命令
# PID 进程ID
# CPU CPU占用率
# MEM 内存使用量
# VSZ 如果一个程序完全驻留在内存的话需要占用多少内存空间
# RSS 当前实际占用了多少内存
# TTY 终端的次要装置号码 (minor device number of tty)
# STAT 进程当前的状态(S:睡眠(sleeping);D:不可被中断的休眠(uninterruptible sleep);R:运行(runnable);T:停止(traced or stopped);Z:僵死(a defunct zombie process)
# START 启动命令的时间点
# TIME 进程执行起到现在总的CPU占用时间
# COMMAND 启动这个进程的命令
kill PID # 杀死PID进程 (PID 为 Process ID)
killall test_app1 test_app2 # 杀死test_app1和test_app2两个进程
logout # 注销
reboot # 重启
shutdown -r now # 重启(r:reboot)
shutdown -h now # 关闭系统(h:halt /hɔːlt/)
shutdown -h 30 # 将在30分钟后关闭系统
shutdown -h 15:30 # 按照预定时间关闭系统
shutdown -c # 取消按预定时间关闭系统(c:cancel)
set -v on # 开启同时打印shell脚本中执行命令本身(平常只打印命令执行结果)
set -e # 在shell脚本中如果执行命令传回值不等于0,则立即退出shell。
# 更多参数请参考网文:https://blog.csdn.net/baiduwenku112/article/details/109811755
|