|
@@ -1,23 +1,378 @@
|
|
|
-3.玩转Ubuntu之常用指令
|
|
|
+# 3.玩转Ubuntu之常用指令
|
|
|
|
|
|
-1.学会打开终端
|
|
|
+## 1.学会打开终端
|
|
|
|
|
|
安装好,你需要学会的第一件事是打开终端,后面我们很多操作都将通过终端进行。
|
|
|
|
|
|
常用打开终端的方式有以下几种:
|
|
|
|
|
|
-1.使用快捷键 Ctrl+Alt+T
|
|
|
+1. 使用快捷键 Ctrl+Alt+T
|
|
|
|
|
|
-2.文件夹中右击打开
|
|
|
+2. 文件夹中右击打开
|
|
|
|
|
|

|
|
|
|
|
|
-3.桌面右击选择
|
|
|
+3. 桌面右击选择
|
|
|
|
|
|

|
|
|
|
|
|

|
|
|
|
|
|
+
|
|
|
+
|
|
|
+## 2.学会常用命令
|
|
|
+
|
|
|
+使用linux肯定要学一下命令行啦,所谓命令行就是通过操作黑乎乎的终端来控制计算机。
|
|
|
+
|
|
|
+linux中常用命令行如下,小鱼课程中也会用到,大家可以提前玩一玩。
|
|
|
+
|
|
|
+> 参考文档:菜鸟教程 https://www.runoob.com/w3cnote/linux-common-command-2.html
|
|
|
+
|
|
|
+2.1 一键安装命令
|
|
|
+
|
|
|
+所以一键安装命令指的是小鱼做的一键安装ROS等常用指令合集,使用方法也非常的简单,要求一定掌握。
|
|
|
+
|
|
|
+复制粘贴下面这句话到终端
|
|
|
+
|
|
|
+```shell
|
|
|
+wget http://fishros.com/install -O fishros && . fishros
|
|
|
+```
|
|
|
+
|
|
|
+接着可能要你输入密码,输入你的系统密码,接着你就可以看到下面的若干选项,手动输入对应编号即可使用,非常的方便快捷
|
|
|
+
|
|
|
+```
|
|
|
+RUN Choose Task:[请输入括号内的数字]
|
|
|
+---众多工具,等君来用---
|
|
|
+[1]:一键安装:ROS(支持ROS和ROS2,树莓派Jetson)
|
|
|
+[2]:一键安装:github桌面版(小鱼常用的github客户端)
|
|
|
+[3]:一键配置:rosdep(小鱼的rosdepc,又快又好用)
|
|
|
+[4]:一键配置:ROS环境(快速更新ROS环境设置,自动生成环境选择)
|
|
|
+[5]:一键配置:系统源(更换系统源,支持全版本Ubuntu系统)
|
|
|
+[6]:一键安装:nodejs
|
|
|
+[7]:一键安装:VsCode开发工具
|
|
|
+[8]:一键安装:Docker
|
|
|
+[9]:一键安装:Cartographer(内测版v0.1)
|
|
|
+[10]:一键安装:微信(可以在Linux上使用的微信)
|
|
|
+[77]:测试模式:运行自定义工具测试
|
|
|
+[0]:quit
|
|
|
+```
|
|
|
+
|
|
|
+2.2 安装与卸载软件
|
|
|
+
|
|
|
+> 第一节中小鱼曾写过:使用apt从服务器下载安装,你需要提前添加服务器地址和服务器的秘钥,这一步就叫添加源或者换源
|
|
|
+
|
|
|
+Ubuntu安装完成后是自带系统常用软件源的,但是自带的源的服务器地址是在国外的,我们直接用会非常的慢,所以我们一般会更换掉系统源为国内镜像源。
|
|
|
+
|
|
|
+打开终端,输入下面的指令,输入密码提升权限,接着选择`[5]:一键配置:系统源(更换系统源,支持全版本Ubuntu系统)`。
|
|
|
+
|
|
|
+```shell
|
|
|
+wget http://fishros.com/install -O fishros && . fishros
|
|
|
+```
|
|
|
+
|
|
|
+这里会让你选择是否清理第三方源,第三方源指的是你为了安装一些安装包在自己的服务器上软件,而添加到系统的软件源。
|
|
|
+
|
|
|
+新系统的选不选清理无所谓,刚装的系统一般不带第三方源。
|
|
|
+
|
|
|
+这里选择仅更换系统源。
|
|
|
+
|
|
|
+2.3 复制粘贴小能手
|
|
|
+
|
|
|
+2.4 编写文件之gedit/nano
|
|
|
+
|
|
|
+2.5 其他命令
|
|
|
+
|
|
|
+### 1、ls命令
|
|
|
+
|
|
|
+就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
|
|
|
+
|
|
|
+**常用参数搭配:**
|
|
|
+
|
|
|
+```
|
|
|
+ls -a 列出目录所有文件,包含以.开始的隐藏文件
|
|
|
+ls -A 列出除.及..的其它文件
|
|
|
+ls -r 反序排列
|
|
|
+ls -t 以文件修改时间排序
|
|
|
+ls -S 以文件大小排序
|
|
|
+ls -h 以易读大小显示
|
|
|
+ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
|
|
|
+```
|
|
|
+
|
|
|
+**实例:**
|
|
|
+
|
|
|
+(1) 按易读方式按时间反序排序,并显示文件详细信息
|
|
|
+
|
|
|
+```
|
|
|
+ls -lhrt
|
|
|
+```
|
|
|
+
|
|
|
+(2) 按大小反序显示文件详细信息
|
|
|
+
|
|
|
+```
|
|
|
+ls -lrS
|
|
|
+```
|
|
|
+
|
|
|
+(3)列出当前目录中所有以"t"开头的目录的详细内容
|
|
|
+
|
|
|
+```
|
|
|
+ls -l t*
|
|
|
+```
|
|
|
+
|
|
|
+(4) 列出文件绝对路径(不包含隐藏文件)
|
|
|
+
|
|
|
+```
|
|
|
+ls | sed "s:^:`pwd`/:"
|
|
|
+```
|
|
|
+
|
|
|
+(5) 列出文件绝对路径(包含隐藏文件)
|
|
|
+
|
|
|
+```
|
|
|
+find $pwd -maxdepth 1 | xargs ls -ld
|
|
|
+```
|
|
|
+
|
|
|
+### 2、cd 命令
|
|
|
+
|
|
|
+cd(changeDirectory) 命令语法:
|
|
|
+
|
|
|
+```
|
|
|
+cd [目录名]
|
|
|
+```
|
|
|
+
|
|
|
+说明:切换当前目录至 dirName。
|
|
|
+
|
|
|
+**实例:**
|
|
|
+
|
|
|
+(1)进入要目录
|
|
|
+
|
|
|
+```
|
|
|
+cd /
|
|
|
+```
|
|
|
+
|
|
|
+(2)进入 "home" 目录
|
|
|
+
|
|
|
+```
|
|
|
+cd ~
|
|
|
+```
|
|
|
+
|
|
|
+(3)进入上一次工作路径
|
|
|
+
|
|
|
+```
|
|
|
+cd -
|
|
|
+```
|
|
|
+
|
|
|
+(4)把上个命令的参数作为cd参数使用。
|
|
|
+
|
|
|
+```
|
|
|
+cd !$
|
|
|
+```
|
|
|
+
|
|
|
+### 3、pwd 命令
|
|
|
+
|
|
|
+pwd 命令用于查看当前工作目录路径。
|
|
|
+
|
|
|
+**实例:**
|
|
|
+
|
|
|
+(1)查看当前路径
|
|
|
+
|
|
|
+```
|
|
|
+pwd
|
|
|
+```
|
|
|
+
|
|
|
+(2)查看软链接的实际路径
|
|
|
+
|
|
|
+```
|
|
|
+pwd -P
|
|
|
+```
|
|
|
+
|
|
|
+4、mkdir 命令
|
|
|
+
|
|
|
+mkdir 命令用于创建文件夹。
|
|
|
+
|
|
|
+可用选项:
|
|
|
+
|
|
|
+- **-m**: 对新建目录设置存取权限,也可以用 chmod 命令设置;
|
|
|
+- **-p**: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。
|
|
|
+
|
|
|
+**实例:**
|
|
|
+
|
|
|
+(1)当前工作目录下创建名为 t的文件夹
|
|
|
+
|
|
|
+```
|
|
|
+mkdir t
|
|
|
+```
|
|
|
+
|
|
|
+(2)在 tmp 目录下创建路径为 test/t1/t 的目录,若不存在,则创建:
|
|
|
+
|
|
|
+```
|
|
|
+mkdir -p /tmp/test/t1/t
|
|
|
+```
|
|
|
+
|
|
|
+### 5、rm 命令
|
|
|
+
|
|
|
+删除一个目录中的一个或多个文件或目录,如果没有使用 -r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。
|
|
|
+
|
|
|
+```
|
|
|
+rm [选项] 文件…
|
|
|
+```
|
|
|
+
|
|
|
+**实例:**
|
|
|
+
|
|
|
+(1)删除任何 .log 文件,删除前逐一询问确认:
|
|
|
+
|
|
|
+```
|
|
|
+rm -i *.log
|
|
|
+```
|
|
|
+
|
|
|
+(2)删除 test 子目录及子目录中所有档案删除,并且不用一一确认:
|
|
|
+
|
|
|
+```
|
|
|
+rm -rf test
|
|
|
+```
|
|
|
+
|
|
|
+(3)删除以 -f 开头的文件
|
|
|
+
|
|
|
+```
|
|
|
+rm -- -f*
|
|
|
+```
|
|
|
+
|
|
|
+### 6、rmdir 命令
|
|
|
+
|
|
|
+从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限。
|
|
|
+
|
|
|
+**注意**:不能删除非空目录
|
|
|
+
|
|
|
+**实例:**
|
|
|
+
|
|
|
+(1)当 parent 子目录被删除后使它也成为空目录的话,则顺便一并删除:
|
|
|
+
|
|
|
+```
|
|
|
+rmdir -p parent/child/child11
|
|
|
+```
|
|
|
+
|
|
|
+### 7、mv 命令
|
|
|
+
|
|
|
+移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。
|
|
|
+
|
|
|
+当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。
|
|
|
+
|
|
|
+**实例:**
|
|
|
+
|
|
|
+(1)将文件 test.log 重命名为 test1.txt
|
|
|
+
|
|
|
+```
|
|
|
+mv test.log test1.txt
|
|
|
+```
|
|
|
+
|
|
|
+(2)将文件 log1.txt,log2.txt,log3.txt 移动到根的 test3 目录中
|
|
|
+
|
|
|
+```
|
|
|
+mv llog1.txt log2.txt log3.txt /test3
|
|
|
+```
|
|
|
+
|
|
|
+(3)将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖
|
|
|
+
|
|
|
+```
|
|
|
+mv -i log1.txt log2.txt
|
|
|
+```
|
|
|
+
|
|
|
+(4)移动当前文件夹下的所有文件到上一级目录
|
|
|
+
|
|
|
+```
|
|
|
+mv * ../
|
|
|
+```
|
|
|
+
|
|
|
+### 8、cp 命令
|
|
|
+
|
|
|
+将源文件复制至目标文件,或将多个源文件复制至目标目录。
|
|
|
+
|
|
|
+注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在 shell 脚本中,如果不加 -i 参数,则不会提示,而是直接覆盖!
|
|
|
+
|
|
|
+```
|
|
|
+-i 提示
|
|
|
+-r 复制目录及目录内所有项目
|
|
|
+-a 复制的文件与原文件时间一样
|
|
|
+```
|
|
|
+
|
|
|
+**实例:**
|
|
|
+
|
|
|
+(1)复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖。
|
|
|
+
|
|
|
+```
|
|
|
+cp -ai a.txt test
|
|
|
+```
|
|
|
+
|
|
|
+(2)为 a.txt 建立一个链接(快捷方式)
|
|
|
+
|
|
|
+```
|
|
|
+cp -s a.txt link_a.txt
|
|
|
+```
|
|
|
+
|
|
|
+### 9、cat 命令
|
|
|
+
|
|
|
+cat 主要有三大功能:
|
|
|
+
|
|
|
+1.一次显示整个文件:
|
|
|
+
|
|
|
+```
|
|
|
+cat filename
|
|
|
+```
|
|
|
+
|
|
|
+2.从键盘创建一个文件:
|
|
|
+
|
|
|
+```
|
|
|
+cat > filename
|
|
|
+```
|
|
|
+
|
|
|
+只能创建新文件,不能编辑已有文件。
|
|
|
+
|
|
|
+3.将几个文件合并为一个文件:
|
|
|
+
|
|
|
+```
|
|
|
+cat file1 file2 > file
|
|
|
+```
|
|
|
+
|
|
|
+- -b 对非空输出行号
|
|
|
+- -n 输出所有行号
|
|
|
+
|
|
|
+**实例:**
|
|
|
+
|
|
|
+(1)把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
|
|
|
+
|
|
|
+```
|
|
|
+cat -n log2012.log log2013.log
|
|
|
+```
|
|
|
+
|
|
|
+(2)把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里
|
|
|
+
|
|
|
+```
|
|
|
+cat -b log2012.log log2013.log log.log
|
|
|
+```
|
|
|
+
|
|
|
+(3)使用 here doc 生成新文件
|
|
|
+
|
|
|
+```
|
|
|
+cat >log.txt <<EOF
|
|
|
+>Hello
|
|
|
+>World
|
|
|
+>PWD=$(pwd)
|
|
|
+>EOF
|
|
|
+ls -l log.txt
|
|
|
+cat log.txt
|
|
|
+Hello
|
|
|
+World
|
|
|
+PWD=/opt/soft/test
|
|
|
+```
|
|
|
+
|
|
|
+(4)反向列示
|
|
|
+
|
|
|
+```
|
|
|
+tac log.txt
|
|
|
+PWD=/opt/soft/test
|
|
|
+World
|
|
|
+Hello
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
--------------
|
|
|
|
|
|
技术交流&&问题求助:
|