Linux - 命令行常用命令

目录

一、常用快捷键

二、通配符

三、帮助命令

四、目录操作

五、文件操作

六、复制 / 删除 / 移动 / 重命名

七、用户操作

八、用户组操作

九、变量操作

十、搜索文件

扫描二维码关注公众号,回复: 14585507 查看本文章

十一、文件打包、压缩、解压

十二、文件操作与磁盘管理

十三、任务计划 crontab

十四、命令执行顺序控制

十五、管道

十六、简单文本处理

十七、数据流重定向

十八、软件下载与安装

十九、进程管理


一、常用快捷键

按键 说明
Tab 补全提示(命令/目录/参数/…)
Ctrl + c 强行终止当前程序(但不会使终端退出)
Ctrl + d 键盘输入结束 或 退出终端(或者使用命令 exit
Ctrl + s 暂停当前程序(再次按下任意键恢复运行)
Ctrl + z 当前程序放到后台运行(fg 恢复到前台)
Ctrl + a 光标移到输入行头(= Home 键)
Ctrl + e 光标移到输入行尾(= End 键)
Ctrl + k 删除从光标到行末内容
Alt + Backspace 向前删除一个单词
Shift + PgUp 终端显示向上移动
Shift + PgDn 终端显示向下移动
↑(方向键上) 恢复之前输入过的命令

二、通配符

 2.1  通配符的作用

        使用通配符可以代替一个多个字符,对字符串进行模糊匹配。通配符可代替 文件夹名/文件名,不能替代命令字符(忘记命令字符使用 Tab 键)。

 2.2  通配符的原理

        终端内输入的通配符由 Shell 处理,Shell 会将其当作路径或文件名在磁盘上搜寻可能的匹配:若有符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,再由命令进行处理。

字符

说明

? 匹配 1 个字符
* 匹配 0 个或多个字符
[list] 匹配 list 中任意一个字符
[^list] 匹配 除了【list 中任意字符】以外的字符
[c1-c2] 匹配 c1~c2 中任意一个字符,如:[1-9]、[a-z]
{str1,str2,…} 匹配 str1 或 str2 或 … 中的任意字符串
{c1..c2} 匹配 c1~c2 中全部字符,如:{1..9}

三、帮助命令

 3.1  Linux 命令行下的不同命令

① 内建命令

        shell 程序的一部分,包含一些比较简单的 Linux 系统命令。这些命令写在 bash 源码的 builtins 中,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。

        解析内建命令 shell 不需要创建子进程,因此内建命令的执行速度比外部命令快。如:cd、exit、history 等。

② 外部命令

        Linux 系统中的实用程序部分。因为实用程序的功能通常都比较强大,所以包含的程序量也很大。外部命令在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。

        外部命令不包含在 shell 中,但是命令执行的过程还是由 shell 程序控制。外部命令是在 bash 之外额外安装的,通常位于 /bin、/usr/bin、/sbin、/usr/sbin 等目录下。如:ls、vi 等。

命令 说明
type <command> 区分 command 命令是内建的还是外部
help <command> 显示 shell 内建命令简要帮助信息
<command> --help 显示外部命令简要帮助信息
man <command> 获取 command 命令的详细介绍:使用方式/参数…(不区分内建和外部命令
info <command>    获取 command 命令的详细介绍(比 man 更详细)
sudo apt-get install info 安装 inf
  • 信息量:info > man > help

四、目录操作

命令 说明
cd <路径> 切换目录(change directory)
cd . 切换到当前目录
cd .. 切换到上一级目录
cd ~ 切换到 home 目录
pwd 打印当前所在目录(print working directory)
ls 列出并显示当前目录下文件(list)
ls <路径> 列出并显示目标路径下文件
ls -a 列出所有文件,包括隐藏文件
mkdir d1 创建一个空目录 d1
mkdir -p d1/d2/d3 创建多级目录(安装软件、配置安装路径时非常有用)

五、文件操作

命令 说明
touch f1 创建一个名为 f1 的空文件
ls -l 使用较长格式列出当前目录下文件(可查看文件各种信息:权限、大小…)
cat f1 读取文件 f1 内容并打印到终端输出
cat -n f1 读取文件 f1 内容并显示行号
nl f1 打印文件 f1 内容并添加行号
tac f1 倒序显示文件 f1 内容
tail f1 查看文件 f1 的后面几行
tail -n 1 f1 查看文件 f1 的最后 1 行(数字 1 可根据需要修改)
head f1 查看文件 f1 的前面几行
head -n 1 f1 查看文件 f1 的前面 1 行(数字 1 可根据需要修改)
file f1 查看文件 f1 的文件类型

六、复制 / 删除 / 移动 / 重命名

命令 说明
cp f1 d1/d2/d3 将 f1 文件复制到 d1/d2/d3 目录下
cp -r d1 D1 将 d1 文件夹复制到 D1 目录下(r/R:递归复制)
rm f1 删除文件 f1
rm -f f1 强制删除
rm -r d1 删除目录 d1
rm -rf d1 强制删除
mv f1 d1 将文件 f1 移动到 d1 目录下
mv <路径>f1 <路径>f2 将文件 f1 重命名为 f2
rename 可以批量重命名

七、用户操作

 7.1  查看用户信息

命令 说明
who am i who mom likes 查看当前伪终端的用户、伪终端序号、伪终端启动时间
whoami 查看当前登录的用户
who -a 打印能打印的全部
who -d 打印死掉的进程
who -m 等于 am i 和 mom likes
who -q 打印当前登录用户的数量及用户名
who -u 打印当前登录用户的登录信息
who -r 打印运行等级

 7.2  新建 / 切换 / 删除 用户

命令 说明
sudo adduser u1 创建新用户 u1,并在 home 目录下创建一个该用户的工作目录
sudo useradd u1 创建新用户 u1,但不会创建用户密码和工作目录
passwd u1 设置新用户 u1 的密码
su u2 切换到用户 u2,需要输入目标用户密码(su - switch user)
su - u2 切换到用户 u2,同时用户的环境变量和工作目录也会跟着切换
sudo deluser u2 删除用户 u2(保留工作目录
sudo deluser u2 --remove-home 删除用户 u2(删除工作目录

八、用户组操作

 8.1  什么是用户组

        Linux 中每个用户都归属于一个用户组,用户组就是一个或多个用户的集合,同一个用户组的用户共享组内的资源和权限,但同时也拥有自己的私有资源。

命令 说明
groups u1 查看用户 u1 所属用户组
sudo usermod -G sudo u1 将用户 u1 加入 sudo 用户组
groupdel g1 删除用户组 g1(需要先删除组内用户)

九、变量操作

 9.1  什么是变量

        变量就是计算机中用于记录一个值(数值/字符/字符串/…)的符号,这些符号用于不同的运算处理中。大部分的编程语言会区分变量的类型,如:数值、字符、字符串…

 9.2  环境变量

      环境变量是指在操作系统中用来指定系统运行的一些参数,环境变量的作用域比自定义变量作用域大,如 Shell 的环境变量作用于自身和它的子进程。

      在所有 UNIX 和类 UNIX 系统中,每个进程都有各自的环境变量设置。默认情况下,当一个进程被创建时,除创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。

 9.3  环境变量 PATH

      保存了 Shell 中执行的命令的搜索路径

命令 说明
declare tmp 创建一个名为 tmp 的变量(变量名只能是英文字母、数字或_,但不能以数字开头)
unset tmp 删除变量 tmp
tmp=linux '=' 为赋值符号,将右边的值(这里是字符串 linux)赋给左边的变量
$ 引用一个变量的值
tmp=$tmp2 将变量 tmp2 的值给 tmp 变量
echo $tmp 读取变量 tmp 的值,并在终端输出
set 显示当前 Shell 所有变量:内建环境变量、用户自定义变量、导出的环境变量
env 显示与当前用户相关的环境变量
export 显示从 Shell 中导出成为环境变量的变量
export tmp 将自定义变量 tmp 导出成为环境变量
PATH=$PATH:/home/d1/d2 添加自定义路径 /home/d1/d2 到 PATH 环境变量(PATH 里的路径以 : 作为分隔符)
source .zshrc 修改配置文件 zshrc 后使其立即生效
修改已有变量:
${ 变量名#匹配字符串} 从前向后匹配,删除符合匹配字符串的最短数据
${ 变量名##匹配字符串} 从前向后匹配,删除符合匹配字符串的最长数据
${ 变量名%匹配字符串} 从后向前匹配,删除符合匹配字符串的最短数据
${ 变量名%%匹配字符串} 从后向前匹配,删除符合匹配字符串的最长数据
${ 变量名/旧字符串/新字符串} 将符合旧字串的第一个字串替换为新字串
${ 变量名//旧字符串/新字符串} 将符合旧字串的全部字串替换为新字串

十、搜索文件

命令 说明
whereis

不从硬盘中查找,从数据库中查询(只能搜索二进制文件 -b、man 帮助文件 -m、源代码文件 -s)

locate 查找指定目录下的不同文件类型
which 从环境变量 PATH 指定的路径中搜索命令并返回第一个搜索到的结果
find 通过文件类型、文件名、文件属性(如:时间戳、权限…)进行搜索

十一、文件打包、压缩、解压

压缩文件格式 说明
.zip zip 程序打包压缩的文件
.rar rar 程序压缩的文件

.7z

7zip 程序压缩的文件
.tar tar 程序打包的文件(未压缩
.gz gzip 程序压缩的文件
.xz xz 程序压缩的文件
.bz2 bzip2 程序压缩的文件
.tar.gz tar 打包,gzip 程序压缩的文件
.tar.xz tar 打包,xz 程序压缩的文件
.tar.bz2 tar 打包,bzip2 程序压缩的文件
.tar.7z tar 打包,7z 程序压缩的文件

 11.1  zip 压缩工具

① 使用 zip 打包压缩

#压缩包默认放到当前目录下
zip xxx.zip <需压缩文件的路径>

参数

说明
-r  递归打包,打包文件夹需要添加该参数

-9 

设置压缩级别(1~9)

-q 

安静模式(不向屏幕输出信息)

-o 

输出文件,后面必须跟着打包输出的文件名

-x 

排除文件夹内其它 zip 文件,避免其它 zip 文件也被打包进本次压缩文件内

-e 创建加密压缩包

② 使用 zip 解压

#默认解压到当前目录下 
unzip xxx.zip
参数 说明
-q 安静模式
-d 指定解压目录,后面必须跟着目标解压目录(如: -d /home)
-l 不解压,仅查看压缩包内容

 11.2  tar 打包工具

① 使用 tar 打包

# tar包默认放到当前目录下 
tar -cf xxx.tar <需打包文件的路径>
参数 说明
-c 创建一个 tar 包文件
-f 指定创建的文件名,后面必须跟着打包输出文件名
-P 保留绝对路径

② 使用 tar 解包

#默认解包到当前目录下
tar -x -f xxx.tar
参数 说明
-x 解包一个 tar 文件
-f 指定解包文件名,后面必须跟着需要解包的文件名
-C 指定解包目录,后面必须跟着目标解包目录(如 -C /home)
-t 不解包,仅查看 tar 包内容

③ 使用 tar 压缩、解压   

        tar 原本只是一个打包工具,但同时还支持 7z、gzip、xz、bzip2 等工具,这些压缩工具本身只能实现对文件或目录的压缩(目录压缩:单独压缩目录中的文件),但没有实现对文件的打包压缩。

        由于 tar 支持 7z、gzip、xz、bzip2 等压缩工具,所以在创建 tar 文件和解包 tar 文件的基础上添加不同参数,就能使用不同的压缩工具来压缩和解压文件,例:

tar -c -z -f xxx.tar.gz /home
参数 对应压缩文件格式
-z .tar.gz
-j .tar.bz2
-J .tar.xz

 11.3  查看打包后文件大小

du -h xxx.zip

十二、文件操作与磁盘管理

命令 说明
df 查看磁盘容量 report file system disk space usage
du 查看目录容量 estimate file space usage
dd 转换复制文件
fdisk 为磁盘分区
mkfs 格式化磁盘
mount 挂载
unmount 卸载

 12.1  dd 命令

        dd 命令用于转换复制文件,但 dd 的复制不同于 cp 在 Linux 内一切即文件。无论是硬件的设备驱动(如 硬盘)还是特殊设备文件(如 /dev/zero 和 /dev/random)都像普通文件一样,只是在各自的驱动程序中实现对应的功能。dd 命令可以读取或写入这些文件。所以,dd 命令可以用于备份硬件的引导扇区、获取一定数量的随机数据或空数据等。

       dd 的命令行选项格式为 选项=值。dd 默认从标准输入中读取,写入到标准输出中,但可以使用选项 if(input file - 输入文件)和 of(output file - 输出文件)改变。

 12.2  使用 dd 命令从标准输入读入用户输入,再输出到标准输出或一个文件中

命令 说明
dd of=test bs=10 count=1 输出到文件 test
dd if=/dev/stdin of=/dev/stdout bs=10 count=1 输出到标准输出
参数
bs block size,用于指定块大小(缺省单位为 Byte,也可指定 K M G 等单位)
count 指定块数量

十三、任务计划 crontab

 13.1  什么是 crontab

        crontab 命令常见于 Unix 和类 Unix 操作系统中,用于设置周期性被执行的指令。通过 crontab 命令,可以在固定的间隔时间执行指定的系统指令或 shell 脚本。

        crontab 命令从输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。通常,crontab 储存的指令被守护进程激活,crond 为其守护进程,crond 常在后台运行,每分钟检查一次是否有预定的作业需要执行。

命令 说明
sudo cron -f & 启动 crontab
crontab -e 添加一个计划任务
crontab -r 删除任务
crontab -l 查看添加的任务

十四、命令执行顺序控制

命令 说明
命令1;命令2;命令3 顺序执行多条命令
命令1 && 命令2

选择性执行命令:

如果 命令1 的执行结果返回 0 则执行 命令2 ,否则不执行

命令1 || 命令2

选择性执行命令:

如果 命令1 的执行结果返回 ≠0 则执行 命令2 ,否则不执行

echo $? 获取上一次命令的返回结果

  • 执行结果不是终端输出的内容,而是命令执行状态的结果。可通过 $? 环境变量获取上一次命令的返回结果
  • || 和 && 控制效果相反,两者可结合使用

十五、管道

 15.1  什么是管道

        管道是一种通信机制,通常用于进程间的通信(也可通过 socket 进行网络通信)。管道表现出的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。

        管道分为匿名管道和具名管道(这里将不会讨论在源程序中使用系统调用创建并使用管道的情况,它与命令行的管道在内核中实际都是采用相同的机制)。匿名管道在命令行中用 | 表示;具名管道简单来说就是有名字的管道,通常只会在源程序中用到具名管道。

  • 经常使用管道的命令:
命令 说明
cut 打印每一行的某一字段
grep 在文本或 stdin 中查找匹配字符串
wc 统计并输出一个文件中行、单词和字节的数目
sort 将输入按照一定方式排序,然后再输出
uniq 过滤或输出重复行
history 查看最近执行过的命令

十六、简单文本处理

 16.1  tr 命令

#删除或转换一段文本信息中的某些文字
tr <option>…set1 <set2>
命令 说明
tr -d 'abc' 删除一段文本信息中所有的 'a' 'b' 'c'
tr -s 'a' 删除一段文本信息中连续并重复的 'a'
tr '[:lower:]' '[:upper:]' 将一段文本全部转换为大写

  16.2  col 命令

# Tab 和 空格键 转换
col <option>
命令 说明
col -x 将 Tab 转换为 空格
col -h 将 空格 转换为 Tab

  16.3  join 命令

#将两个文件中包含相同内容的那一行合并在一起
join <option>… f1 f2	
option 说明
-t 指定分隔符,默认为空格
-i 忽略大小写的差异
-1 指明第一个文件要用哪个字段来对比,默认对比第一个字段
-2 指明第二个文件要用哪个字段来对比,默认对比第一个字段

  16.4  paste 命令

#与 join 命令类似,但 paste 是在不对比数据的情况下,简单地将多个文件合并在一起,默认以Tab隔开
paste <option> file…	
命令 说明
paste -d 指定合并的分隔符,默认为 Tab
paste -s 不合并到一行,每个文件为一行

十七、数据流重定向

命令/操作 说明
> 将标准输出导向一个文件
>> 将标准输出追加到一个文件
tee 同时重定向到多个文件
exec 永久重定向

十八、软件下载与安装

 18.1  Linux 系统下软件安装的四种方式

  • 在线安装
  • 从磁盘安装 deb 软件包
  • 从二进制软件包安装
  • 从源代码编译安装(略~)

 18.2  在线安装 - apt 工具

apt-get 命令 说明
sudo apt-get update 更新本地软件包数据库
sudo apt-get install <软件名> 安装软件包
sudo apt-get --reinstall install <软件名> 重新安装软件包,如:系统被破坏、一些错误的配置导致软件无法正常工作…
sudo apt-get upgrade 升级所有已安装的软件包
sudo apt-get full-upgrade 完全升级已安装的软件包
sudo apt-get remove <软件名> 移除已安装的软件包(包括与被移除软件包有依赖关系的软件包,但不包含软件包的配置文件)
sudo apt-get autoremove 移除之前被其他软件包依赖,但现在不再被使用的软件包
sudo apt-get purge <软件名> 完全移除软件包(包括软件包的配置文件
sudo apt-get clean 移除下载到本地的已经安装的软件包,默认保存在 /var/cache/apt/archives/
sudo apt-get list 生成软件包列表
sudo apt-get search <软件名> 搜索软件包
sudo apt-get show <软件名> 显示软件包具体信息,如:版本号、安装大小、依赖关系等
source ~/.zshrc 如果安装一个软件后,无法立即使用 Tab 键补全该命令,可执行该命令后再进行尝试
apt-get 参数 说明
-y 自动回应是否安装软件包的选项,在一些自动化安装脚本中非常有用
-s 模拟安装
-q 安静安装方式,指定多个 q  -q=##表示数字,用于设定静默级别),在不想要安装过程中屏幕输出过多内容时非常有用
-f 修复损坏的依赖关系
-d 下载,不安装
--reinstall 重新安装已经安装但可能存在问题的软件包
--install-suggests 同时安装 APT 给出的建议安装的软件包

 18.3  从磁盘安装 deb 软件包 - dpkg 工具

命令 说明
sudo dpkg -i xxx.deb 安装指定 deb 包
sudo dpkg -R /d1 后面接目录名,安装该目录下的所有 deb 包
sudo dpkg -r xxx 移除某个已安装的软件包
sudo dpkg -I xxx.deb 显示 deb 包文件的信息
sudo dpkg -s xxx 显示已安装软件的信息
sudo dpkg -S xxx 搜索已安装的软件包
sudo dpkg -L xxx 显示已安装软件包的目录信息

 18.4  从二进制包安装

① 将下载的二进制包解压后放到合适的目录下

② 将包含【可执行的主程序文件】的路径添加到环境变量 PATH

安装完成!

十九、进程管理

命令 说明
top 实时查看进程的状态
ps 静态查看当前进程的信息
pstree 查看当前活跃进程的树形结构
kill 操作进程的结束或者重启
renice 修改已经存在的进程的优先级

猜你喜欢

转载自blog.csdn.net/Amentos/article/details/129225051