Linux - 命令行常用命令

目录

一、常用快捷键

二、通配符

三、帮助命令

四、目录操作

五、文件操作

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

七、用户操作

八、用户组操作

九、变量操作

十、搜索文件

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

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

十三、任务计划 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通过文件类型、文件名、文件属性(如:时间戳、权限…)进行搜索

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

压缩文件格式说明
.zipzip 程序打包压缩的文件
.rarrar 程序压缩的文件

.7z

7zip 程序压缩的文件
.tartar 程序打包的文件(未压缩
.gzgzip 程序压缩的文件
.xzxz 程序压缩的文件
.bz2bzip2 程序压缩的文件
.tar.gztar 打包,gzip 程序压缩的文件
.tar.xztar 打包,xz 程序压缩的文件
.tar.bz2tar 打包,bzip2 程序压缩的文件
.tar.7ztar 打包,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输出到标准输出
参数
bsblock 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修改已经存在的进程的优先级

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值