Linux常用命令
我从2021年4月份开始才开始真正意义上接触Linux,最初学习时是一脸蒙圈,啥也不会,啥也不懂,做了很多乱七八糟,没有条理的笔记。不知不觉现在已经过去两年的时间了,回头翻看自己曾经的笔记,个人觉得有必要对过去所学进行一次梳理,这也是写本篇博客的初衷,也算是对自己的一种激励吧。好了,废话不多说,直接步入正文吧。
备注:很多命令可能有很多参数,但是我在介绍各种命令的时候,仅列出了我平时经常用的一些参数,若想了解某个命令全部信息,可在"终端"中使用 man 命令进行查看。
./
也许 ./ 符号本身不是命令,但在这个列表中值得一提。它允许shell直接从终端运行可执行文件,并在系统中安装任何解释器。不再双击图形文件管理器中的文件!
运行可执行文件时,请确保它具有可执行(x)权限,您可以使用chmod命令修改该权限。
cat
说明 :用于连接文件并打印到标准输出设备上。英文全拼:concatenate
格式 :cat [para] fileName
参数:
- -n :由 1 开始对所有输出的行数编号
- -b :和 -n 相似,只不过对于空白行不编号
举例:
- 将文件textfile1 的内容添加上行号,然后输出到文件textfile2中
bash
jack@fw02:~$ cat -n textfile1 > textfile2
- 把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里
bash
jack@fw02:~$ cat -b textfile1 textfile2 >> textfile3
cd 命令
说明 :用于切换当前工作目录。cd的英文全拼为 change directory。 其中,dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。
格式 :cd [dirname]
举例:
bash
jack@fw02:~$ cd /usr/bin /* 跳到 /usr/bin/目录 */
jack@fw02:~$ cd ~ /* 切换到自己的home目录 */
jack@fw02:~$ cd /* 切换到自己的home目录 */
jack@fw02:~$ cd ../../ /* 切换到上两级目录 */
(1)~ :表示为 home 目录 的意思
(2). 则是表示目前所在的目录
(3)... 则表示目前目录位置的上一层目录。
chmod
说明 :用于修改文件权限,Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
如下图所示,每一个组占个bit, 分别表示"读、写、执行"
格式 :chmod [para] mode file...
参数:
- mode : 权限设定字串,格式为:
[ugoa...] [+ - =] [rwx]
- u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是
- +表示增加权限、- 表示取消权限、= 表示唯一设定权限
- r 表示可读取,w 表示可写入,x 表示可执行
- -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
举例:
bash
jack@fw02:~$ chmod 777 test1.c /* 赋予test1.c最大的权限,所有用户均可读、可写、可执行 */
jack@fw02:~$ chmod ugo+r test2.c /* 设置所有用户都可读 */
jack@fw02:~$ chmod a+x test3.c /* 设置所有用户可执行该文件 */
jack@fw02:~$ chmod -R a+r * /* 将目前目录下的所有文件与子目录皆设为任何人可读取 */
clear
格式 :
说明 :清除终端(terminal)上的内容
参数 :无
举例:
bash
jack@fw02:~$ clear /* 清除当前终端屏幕上的内容 */
cp
说明 :用于复制文件或者文件夹,可以实现单个文件的复制,也可以实现多文件或者文件夹的复制
格式 :cp [option] source dest
参数:
-f
:覆盖已经存在的目标文件而不给出提示-p
:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中-i
:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖-r
:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件
举例:
history
如果你正在努力记住一个命令,history就会派上用场。此命令显示一个枚举列表,其中包含您过去使用过的命令:
htop
htop是一种交互式流程查看器,可让您直接从终端管理计算机的资源。在大多数情况下,默认情况下它并没有安装。关于htop更详细的使用说明,详见文章:https://blog.csdn.net/KXue0703/article/details/130398926
ln
ln是Linux系统中非常常用且重要的一个命令,用于创建硬链接或者软链接(符号链接)。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
关于ln命令的详细说明详见文章:https://blog.csdn.net/KXue0703/article/details/145009468
mkdir
说明 :该命令用于创建一个目录,英文全拼为:make directory
格式 :mkdir [-p] dirName
参数:
- -p 确保目录名称存在,不存在的就建一个
举例:
bash
jack@fw02:~$ mkdir jack_test /* 创建一个名为 jack_test 的文件夹 */
jack@fw02:~$ mkdir jack/test /* 创建一个名为 test 的文件夹,若jack目录不存在则首先会创建jack文件夹 */
mv
说明 :mv(move file)命令可以用来修改文件或者文件夹的名字(即重命名)、也可以用于将文件或者文件夹移动到其它的位置、也可以在移动文件或文件夹位置的时候同时对其重命名
格式 :mv [options] src dst
参数:
- -b:当文件或者文件夹存在时,在执行覆盖前会为其创建一个备份
- -i:如果待移动的文件(或文件夹)与目标目录中的文件(或者文件夹)重名时,则会首先询问是否覆盖旧的文件,输入y表示直接覆盖,输入n表示取消该操作
- -f:如果待移动的文件(或文件夹)与目标目录中的文件(或者文件夹)重名时,不会询问,直接覆盖旧的文件
- -n:不要覆盖任何已经存在的文件(或文件夹)
举例:
bash
/* 将文件 bibake.sh 重命名为 bitbake.exe */
jack@fw02:~$ mv bitbake.sh bitbake.exe
/* 将 bitbake.exe 移动到 test文件中 */
jack@fw02:~$ mv bitbake.exe test/
jack@fw02:~$ cd test/
jack@fw02:~/test$ ls
bitbake.exe
/* 将 bitbake.exe 移动到 ../ 目录中,并同时重命名为 bitbake.sh */
jack@fw02:~/test$ mv bitbake.exe ../bitbake.sh
pwd
说名 :Linux pwd(英文全拼:print working directory)命令用于打印当前工作目录,pwd始终是以绝对路径的方式打印工作目录,即从根目录(/)开始到当前目录的完整路径。
格式 :pwd [option]
,一般情况下,该命令不需要加任何参数,直接写pwd即可。
参数:
L
:打印逻辑上的工作目录(默认选项)P
:打印物理上的工作目录
举例:
bash
/* 查询engine文件夹的目录 */
jack@fw02:~/engine$ pwd
/home/jack/engine
rm
说明 :删除一个文件或者目录,英文全拼:remove
格式 :rm [para] name...
参数:
- -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认
- -r 将目录及以下之档案亦逐一删除
举例:
bash
jack@fw02:~$ rm test1.c /* 删除test1.c */
jack@fw02:~$ rm -rf test2 /* 删除test2文件夹及文件夹中的所有内容 */
tail
说明 :tail命令用于查看文件的内容,特别是参数-f
特别常用,用于查看正在变化的日志文件信息。tail -f filename
会把filename文件里最尾部的内容显示在屏幕上,并且不断刷新,只要filename文件产生更新,就可以实时看到最新地文件内容。
格式 :tail [参数] [文件]
参数:
- -f:循环读取,只要文件有更新,就会显示出来
- -c <数目> 显示的字节数
- -n <行数> 显示文件尾部地n行内容
举例:
bash
tail printf.log // 这种情况,仅默认显示printf.log的最后10行
tail -f printf.log // 实时显示printf.log文件的变化
tail -n 100 printf.log // 显示printf.log文件的最后100行数据
tail -c 100 printf.log // 显示printf.log文件的最后100字节
uname
说明 :用于打印系统的某些信息。当不带参数时,与带参数 -s 效果是一样的(简而言之,就是uname默认查询的是内核的名字)
格式 :uname [OPTION]...
参数:
- -a:打印所有的信息
- -s:显示内核名称
- -n:显示网络节点主机名
- -r:显示内核的版本信息
- -v:显示内核版本
- -m:显示硬件架构名称
- -p:打印处理器的类型
- -i:打印硬件平台类型
- o:打印操作系统类型
举例:
bash
jack@jack-G480:~$ uname
Linux
jack@jack-G480:~$ uname -s
Linux
jack@jack-G480:~$ uname -r
5.15.0-91-generic
jack@jack-G480:~$ uname -m
x86_64
jack@jack-G480:~$ uname -p
x86_64
jack@jack-G480:~$ uname -o
GNU/Linux
jack@jack-G480:~$ uname -a
Linux jack-G480 5.15.0-91-generic #101~20.04.1-Ubuntu SMP Thu Nov 16 14:22:28 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
wc
说明 :用于计算字数,利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
格式 :wc [参数][文件...]
参数 :
举例:
bash
jack@fw02:~$ wc u-boot.bin bitbake.sh /* 读取这两个文件的行数,字数 ,字节数,名完成了汇总 */
2193 12392 424008 u-boot.bin
7 21 103 bitbake.sh
2200 12413 424111 total
whoami
格式 :whoami
说明 :该命令(who am I的缩写)显示当前操作的用户名
举例:
bash
jack@fw02:~$ whoami
jack /* 指明了当前用户名为 jack,但是我觉得此命令用处不大呢 */
边学习,边更新。。。
边学习,边更新。。。
边学习,边更新。。。