(注:root用户的用户主目录为/root,非root用户的用户主目录为/home)
pwd
该指令可以按绝对路径查看当前所处的目录
其中,第一个“/”指的是根目录,之后的“/”只是文件名的分割符,因此它是从根目录开始的(绝对路径)
tree [选项] [文件名]
当文件名缺省时,就显示当前目录下的文件树状结构
[选项]:
-p 只显示目录而不显示文件(即只显示文件夹)
例:以树状结构显示/root下的文件
注:tree需要安装,用户若没有tree,则可以以下指令下载:
sudo apt-get update
sudo apt install tree
(注:在指令一般格式当中,“[ ]”表示这是可选项,“< >”表示这是必选项)
clear
清屏
fflush (stdin);
清空缓冲区的字符,例如 getchar(); 中所收录的回车键就存放在缓冲区中,该命令可以清空
对每个执行的命令,Linux系统都会自动打开3个文件,并且都有一个小的整数与之对应:
(1)stdin 标准输入文件,一般指键盘输入,用0表示
(2)stdout 标准输出文件,一般指显示器,用1表示
(3)stderr 标准出错处理文件,一般指显示器,用2表示
mkdir [选项] <目录名>
[选项]:
空 默认在当前目录下新建目录
-m 对新建的目录设置权限(见chmod命令)
-p 创建存在中间路径的目录touch <文件名.扩展名>
通过 touch 命令可以创建指定扩展名的文件如 .txt、.c等
- 如果文件不存在,则可以创建一个空白文件
- 如果文件已存在,则可以修改文件的末次修改时间
例:在CLC目录下创建file1目录,再在file1目录下创建file2目录
其中,file1原来是不存在的,加上-p后,就可以链式创建
(注:所选的路径必须是完整的绝对路径或相对路径)
cd [目录名]
cd ~ 进入用户主目录
cd - 返回进入此目录前所在的目录
cd …(这里是两个点)返回当前目录的父目录
另外,“.”表示当前工作目录
rmdir [选项] <目录名>
[选项]:
-p 当子目录被删除后,若其父目录成为空目录,则父目录一并删除
-v 将提示删除操作成功
-pv 前面两条一起使用,其他命令的选项也如此操作即可
ls [选项] [目录或文件]
[选项]:
-a 显示指定目录下的所有目录与文件,包括隐藏文件
-d 将目录名像其他文件一样列出,而不是列出目录里面的内容
-l 采用长格式来显示文件的详细信息
-r 将目录的内容清单以英文字母顺序的逆序显示
-R 若模板目录及子目录中有文件,就列出所有的文件
-t 按时间信息排序
-h 可以配合-l来K、M、G或T等单位来显示文件大小,平常是以字节来显示(注:单独使用无用,要配合-l使用)
注:每个单位之间的关系是1024倍,因为计算机是以二进制的方式来存储的
通配符的使用
通配符 * 可以代表任意长度的字符
通配符 ? 可以代表一个长度的字符
通配符 [] 可以代表一个字符组,如[abc]可以表示a或b或c的三个单字符,不是字符串
例如:
ls want*
ls *want.txt
ls *want*
ls [abc]want*
ls [a-f]want*
ls [1-7]want*
(1)显示后蓝色的文件名为目录,绿色的文件名为普通文件,文件头有“.”的为隐藏文件:
(2)-l 选项列出后,一般开头有几种:
cat [选项] <文件列表>
可以查看文本文件
[选项]:
-E 在每一行的末尾显示符号“$”
-n 显示每一行的行号,包括空行
-b 显示每一行的行号,不包括空行
–help 显示这个命令的用途,简要解释每一个选项的作用
<文件列表>:
若是多个文件,之间由空格分开
more [选项] <文件列表>
[选项]:
+number 从第number行开始显示内容(number是数值)
-number 指定每屏幕要显示number行
-s 把重复的空行,压缩成一个空行
-p 不以卷动的方式显示每一页,而是先清除整个屏幕,再显示文本
+number1 -number2 由于前置符号不同,所以“+”和“-”要分开写
<文件列表>:
若是多个文件,之间由空格分开
(注:分页显示,若打开的文件有多页,则按空格可以翻到下一页)
less [选项] <文件列表>
[选项]:
-N 显示行号
-pwant 在文件中查找匹配want第一次出现位置(注:want可以是数字、字符串等)
即匹配信息寻找所选项目
<文件列表>:
若是多个文件,之间由空格分开
例:选项-pprintf匹配查找a.c文件中的printf,并高亮标出
总结:cat、more、less的区别
(1)cat命令功能用于一次性打印显示整个文件的内容,单独使用没有翻页功能
(2)more命令让画面在显示满一页时暂停,此时可以按空格键继续显示下一个画面,或按Q键停止显示
(3)less命令的用法与more命令类似,也可以原来浏览超过一页的文件,不同的是less命令除了可以按空格键显示文件外,还可以利用上下键来卷动文件。当浏览结束时,只要在less命令的提示符“:”下按Q键即可
gedit <文件名>
du [选项] <路径>
[选项]:
-a 对涉及到的所有文件进行统计,二不只是包含子目录
-b 输出以字节为单位的大小
-k 输出以1024字节为计数单位的大小
-m 输出以兆字节的块为计数单位的大小(就是1,048,576字节)
-c 给出总计,该选项被用给出指定的一组文件或目录使用的空间的总和
<路径>:
路径可以选择绝对路径或相对路径
可以在指定的文件中搜索指定的内容
grep [选项] <要搜索的文本> <文件名>
[选项]:
-n 显示匹配行和行号
-v 显示不包含匹配内容的所有行(相当于求反)
-i 忽略大小写
<要搜索的文本>:
如果要搜索的文本含有空格,则需要用""将其括起来
如:“Hello linux”
此处允许进行模式查找,又称正则表达式:
^want 行首,搜索以want开头的行
want$ 行尾,搜索以want结尾的行
echo可以把指定内容重新显示在屏幕中
echo <文本或表达式> [<重定向> <文件名>]
[<重定向> <文件名>]:
“>” 表示输出,把echo要显示的内容覆盖到<文件名>中(注:会覆盖原内容),若文件不存在,则新建文件
“>>” 表示追加,把echo将要显示的内容追加到<文件名>中,不覆盖原内容command [重定向]
[重定向]:
“>” 表示输出,把command指令要显示的内容覆盖到<文件名>中(注:会覆盖原内容)
“>>” 表示追加,把command指令将要显示的内容追加到<文件名>中,不覆盖原内容
如:显示Hello linux
如:将显示的Hello linux重定向到a.txt文件中
如:将ls -lh指令显示的内容重定向到a.txt文件中
Linux允许将一个命令的输出通过管道作为另一个命令的输入
常用管道 | 的命令有:more 和 grep
command1 | command2
管道符的左端为写入端 | 管道符的右端为读取端
即把comman1指令的输出结果作为command2指令的输入
(注:管道允许连续使用:command1 | command2 | command N…)
如:将当前目录下ls -lh指令显示的结果作为more的输入
ls -lh ~ | more
如:将当前目录下ls -lh指令显示的结果作为grep(grep搜索abc)的输入
ls -lh ~ | grep abc
cp [选项] <文件1> <文件2>
[选项]:
-i 如果目的文件已存在,会在覆盖前提示,要求用户是否覆盖,回答“y”时文件将被覆盖
-p 保留文件的权限属性和修改时间行
-r 递归地复制目录(即复制文件夹)
<文件>:
文件1是被复制的文件
文件2是要复制到的文件或目录(注:最后一项应为复制后的文件名,不写时为原名,故可以给复制文件命名)
(注:复制文件必须具有相应的权限:源文件的读权限、包含文件1的目录执行权限和文件2所在目录的写权限)
mv [选项] <文件1> <文件2>
mv [选项] <文件列表> <目标目录名>[选项]:
-f 在覆盖目的文件前永不提示用户
-i 在覆盖目的文件前提示用户(最好增加,因为在终端中修改后无法恢复)
<文件>:
文件1和文件列表,是要转移的文件
文件2和目录名,是要转移的位置(注:最后一项应为复制后的文件名,不写时为原名,故可以对文件重命名)
例:把file1目录下的file2目录文件,转移到当前工作目录下,并改名为file
例:利用mv指令对文件进行重命名,如下,把a.txt重命名为b.txt
mv a.txt b.txt
rm [选项] <文件列表>
[选项]:
-r 递归的移除目录中的内容及目录本身(文件夹),注:rm本身不可删除文件夹,在加 -r 后就可以删除文件夹
-i 在删除文件列表中的文件前给出提示
-f 强制删除、在删除文件列表的文件前不予以提示、忽略不存在的文件
例:(删库跑路)以root用户的权限,递归删除根文件,且不予以提示
注:rm 指令所删除的内容不会置于回收站中,因此不可恢复,在使用时要注意
diff [选项] [文件1] [文件2]
可比较两个文本文件间的内容
[选项]:
-b 忽略行尾的空,把空白字符串当作相同的字符串来处理
-h 快速比较
[文件]:
文件1和文件2,是要比较的两个文件
例:比较两个C程序文件:a.c 和 lb.c 的内容
红框:5c5和7c7分别指的是对应的行
(1)a 左边文件的第几行被添加右边文件的第几行(相当于左边比右边缺少的内容)
(2)c 左边文件的第几行替换成右边文件的第几行(相当于不同之处)
(3)d 左边文件的第几行被删除(相当于左边比右边多出的内容)
蓝框:开头为“<”表示左边的文件,开头为“>”表示右边的文件,即不同的内容
绿框:用cat指令阅读文件,看看是否正确
指令对应如下:
(注:实质上,diff命令在执行时,一行一行地比较两个文件的内容,并以命令的形式显示它们之间的区别)
即删除文件中所有连续的重复行显示,只留下一行
(注:该命令不改变源文件的内容,只是把结果输出到屏幕或文件中)
uniq [选项] [input-file] [output-file]
[选项]:
-c 在每行之前显示它们重复出现的次数
-d 只显示重复行
-u 只显示未重复的行
[ intput-file ]:
是需要修改的有连续重复行的文件
[ output-file ]:
是删除重复行后得到的文件(即新建文件,而源文件仍然存在),或(不写)删除结果输出在屏幕上
command --help
可以对指定的命令/指令寻找帮助
其中command是命令/指令man command
可以对指定的命令/指令查看man手册,包括传入的参数等,其中command是命令/指令
注意:在使用man手册的时候有如下按键操作:
空格 显示手册的下一页
enter 手册向下滚动一行
b 往回滚动一页
f 向前滚动一页
q 退出
/want 搜索want字符串
通过上述两种方式均可在Linux中查找到相关函数的参数使用资料,增加工作可靠度
find [路径] -name “.txt”
查找指定路径下扩展名是 .txt的文件,包括子目录中的文件
“.txt” 即以 .txt为扩展名(可以是通配符)
例如:
find -name "*l*"
find -name "*.c"
find Desktop/ -name "l*"
Tab
Tab Tab
↑
↓
按1次Tab按键可以自动补全要写入的文件名等
对于具有重复开头的文件名,按1次Tab按键没有响应,但按下2次Tab时,系统会显示以该字符为开头的文件名,即可供选择的文件名
通过↑和↓按键可以快速调出历史使用过的指令
(1)r 可读:允许用户读取其内容,而禁止对其做任何的更改操作
(2)w 可写:表示可以改写该文件的内容、删除文件(要有文件所在目录的写权限)
(3)x 可执行:可执行权限表示允许将该文件作为一个程序执行,如:C程序文件
(4)- 没有该权限:在 rwx 的对应位置为 - 表示没有该权限
(1)可读:表示允许显示该目录中的内容
(2)可写:表示可以在该目录中新建、删除、重命名文件以及修改子目录名
(3)可执行:表示可以进入该目录,可执行基本权限,如果没有该权限,则无法进入该目录,也就无法使用可写的权限
访问权限的用户类别,有三种不同的类型的用户可对文件或目录进行访问:
(1)文件所有者 (2)同组用户 (3)其他用户
通过以下指令可以查看各文件的权限:
ls -l
第1列 | 第2列 | 第3列 | 第4列 | 第5列 | 第6列 |
---|---|---|---|---|---|
文件属性 | 文件所有者权限 | 同组用户权限 | 其他用户权限 | 文件所有者 | 同组组名 |
(注:同组用户的root是组名不是root用户)
chmod +/-rwx <文件/目录名>
+[rwx] 表示增加权限,rwx为可选组合
-[rwx] 表示减少权限,rwx为可选组合
- 但这种修改方式是对文件所有者、同组用户、其他用户同时进行修改,无法精确到指定组
chmod [-R] [OCT] <文件/目录名>
-R 递归地修改文件/目录的权限
[OCT] 表示以八进制的形式来表示3×3的权限,例:755 表示 111 101 101
- 可以精确到指定的组
chown <用户名> <文件/目录名>
可以修改文件的拥有者
提示:
groupadd <组名>
可以添加组
groupdel <组名>
可以删除组
cat /etc/group
确认组信息,组信息存储在 /etc/group,需要有可读权限
chgrp -R <组名> <文件名/目录名>
-R 递归地修改文件/目录的所属组
useradd [-m -g] <组> <新建用户名>
可以添加新用户
[选项]:
-m 自动建立用户家目录
-g 指定用户所在组,否则会建立一个与新建用户名同名的组
- -m 和 -g 这两个选项一般都要选上
- 如果没有指定-m,则在passwd中会指明新建用户的家目录;但该家目录并不存在,需要自建并设置权限
- 如果新建用户时忘记添加-m,最简单的方法就是删除用户重新新建,否则自建家目录并设置权限较麻烦
passwd <用户名>
可以设置用户密码,如果是普通用户,直接用passwd可以修改自己账户的密码
userdel -r <用户名>
删除用户,-r 选项会自动删除用户家目录
cat /etc/passwd | grep <用户名>
可以确认用户信息
- 新用户创建后,用户信息会保存在 /etc/passwd 中
例:通过指令 cat -n /etc/passwd 确认所有用户信息(-n是显示行号)
id [用户名]
缺省时则显示当前用户的信息
查看用户UID(用户代号)和GID(组代号)信息,如图
uid=0(root)是用户代号和用户名,gid=0(root)是组代号和组名
序号 | 代表信息 |
---|---|
1 | 用户名 |
2 | 密码(x表加密) |
3 | UID |
4 | GID |
5 | 用户全名或本地账号 |
6 | 家目录 |
7 | 登录使用的shell(Ubuntu默认使用的是dash) |
who
查看当前所有登录的用户列表
whoami
查看当前登录用户的账户名
提示:即该用户除了拥有主组的权限之外,还可以加以其他权限(附加组的权限)
usermod -g <组> <用户名>
可以修改用户的主组
usermod -G <组> <用户名>
可以修改用户的附加组
usermod -s /bin/bash
可以修改用户的登录shell,如果在SSH中输入一些指令和Ubuntu中的打印方式不一样,或在SSH不带颜色时,可以修改登录shell来使SSH具备颜色
usermod -G sudo <用户名>
默认使用useradd添加的用户是没有sudo的root权限的,可以通过这个方式添加sudo附加组
which command
其中command是指令,可以查看当前指令的执行文件所在位置
例:列出了修改密码指令passwd和列表指令ls程序的所在位置
su [-] [用户名]
(需要密码)可以输入密码后切换到另一用户
[-]:
添加了 “-” 选项之后可以同时将当前目录切换至切换后的用户的家目录
用户名缺省时,则切换至root用户
- 提示:su指令如同(盗梦空间)一样,可以层层切换进入另一用户,并且每一次exit都只是退出一层梦境(用户),因此可以通过掷陀螺(whoami指令)来区分您当前处于哪一层梦境(用户)
exit
通过exit可以退出切换,返回原用户
date
可以查看系统当前的日期和时间
cal [-y]
可以查看系统当前日期所在日历
-y 可以查看当前年份的所有日历
df -h
显示磁盘剩余空间
-h 以人性化的形式显示大小du -h [目录名]
显示目录下的文件大小
[目录名] 缺省时表示当前所在目录的大小
-h 以人性化的形式显示大小
ps [aux]
查看进程的详细状况( 注:不需要加 “-” )
[选项]:
a 即all,显示终端上的所有进程,包括其他用户的进程(Linux是一个多用户的操作系统)
u 显示进程的详细状况
x(用得较少)显示没有控制终端的程序(所为没有控制终端的程序,即不是由终端Terminal来启动的程序)
USER | PID | %CPU | %MEM | START | TIME |
---|---|---|---|---|---|
执行该进程的用户 | 进程号 | CPU占用率 | 内存占用率 | 开始时间 | 执行时间 |
top
动态显示运行中的进程并排序
q
进入top后按q即可退出
kill [-9] < PID >
终止指定PID的进程
-9 表示强制终止
概念:Linux下的链接文件指向已存在的文件,类似Windows下的快捷方式,但不完全相同
(1)软链接:类似于Windows下的快捷方式,路径就是打开源文件
(2)硬链接:创建一个与源文件共享的镜像文件,占用相同的内存
ln [-s] < sourcefile > < newfile >
[-s]:
使用选项“-s”(soft)时,为创建软链接,缺省时为创建硬链接
< sourcefile >:
源文件名
< newfile >:
新创建的链接文件名
(注:由于软链接指向源文件的路径,因此在创建软链接时,源文件名最好带有绝对路径)
ls -l [文件名]
即可显示软连接的链接源文件,其中下面的指令是针对某一链接文件的
cat [文件名]
该指令可以查看软硬链接文件的内容
例:在当前目录下创建一个软链接文件 a.t 并将其链接到 /root/Desktop/a.c
提示:无论是软链接还是硬链接,对其进行读写,都将操作源文件(可执行权限)
在不同的操作系统下,文件的打包压缩方式是不一样的
操作系统 | 打包压缩方式 |
---|---|
Windows | rar |
Mac | zip |
Linux | tar.gz |
tar -cvf <打包后文件名.tar> <被打包的文件/路径列表>
可以实现对指定的文件打包并命名(注:tar只负责打包,不负责压缩)
<被打包的文件/路径列表>:
可以选择多个不同的文件,文件列表之间用空格隔开,也可以直接打包目录,也可以使用通配符
[选项]:
-c 生成档案文件,创建打包文件
-x 解开档案文件
-v 列出归档解档的详细过程,显示压缩进度
-f 指定档案文件名称,-f后面一定是 .tar文件,所以必须放在选项的最后
- 注:-f必须放选项最后,其他位置随意
tar -xvf <打包文件.tar>
可以实现对指定文件的解包
tar -zcvf <打包压缩后文件名.tar.gz> <被打包的文件/路径列表>
可以实现文件的打包压缩
-z 在tar命令中使用 -z 选项可以调用 gzip 来打包文件后同时对文件进行压缩tar -zxvf <打包文件.tar.gz>
可以实现文件的解压解包
tar -zxvf <打文件.tar.gz> -C <目标路径>
可以解压解包到指定路径位置
-C 可以用来指定路径
tar -jcvf <打包压缩后文件名.tar.bz2> <被打包的文件/路径列表>
以bzip2的方式打包压缩
-j 在tar命令中使用 -j 选项可以调用 bzip2 来打包文件后同时对文件进行压缩tar -jxvf <打包文件.tar.bz2>
以bzip2的方式解压解包
tar -jxvf <打文件.tar.bz2> -C <目标路径>
可以解压解包到指定路径位置
apt是Advanced Packaging Tool,是Linux下的一款安装包管理工具
它可以在终端中方便 安装/卸载/更新 软件包
sudo apt install <软件包>
安装软件
sudo apt remove <软件名>
卸载软件
sudo apt upgrade <软件名>
更新已安装的包
例:下面展示两款比较有趣的小软件
1.sl小火车清屏,sl作为清屏指令
sudo apt install sl
2.htop一个比较漂亮的查看当前进程排行的软件
sudo apt install htop
如果希望在Ubuntu中安装软件,更加快速,可以通过设置镜像源,选择一个访问网速更快的服务器,来提高软件 下载/安装 服务
提示:更换服务器之后,需要一个相对比较长时间的更新过程,需要耐心等待,更新完以后,再安装软件都会从新设置的服务器下载软件了
所谓镜像源,就是所有服务器的内容是相同的(镜像),但是根据所在地理位置的不同,国内的服务器速度通常速度会更快一些,所以可以更换镜像源
Ubuntu中图形界面设置镜像源步骤: