文章目录
- 基本概念
- 1 Linux终止命令
- 2 Linux常用指令
- 2.1 pwd (Print current working directory)
- 2.2 ls (List directory contents)
- 2.3 cd (change directory)
- 2.4 mkdir (make directories)
- 2.6 touch (change file timestamps)
- 2.7 rm (remove files or directories)
- 2.8 cp (copy files and directories)
- 2.9 mv (move (rename) files)
- 2.10 man (an interface to the system reference manuals)
- 2.11 reboot (reboot the machine)
- 2.12 shutdown (power-off the machine)
- 2.13 source
- 2.14 ln
- 其他简单命令
- alias
- 3 软件管理
- 4 文件编辑
- tty终端
基本概念
常用快捷键 | 作用 |
---|---|
Ctrl + Alt + T | 打开终端 |
- 指令格式:
- 完整指令的标准格式:命令(空格) [选项](空格) [操作对象]
- 选项和操作对象都可以没有,也可以是多个
# 指令示例:以下两条指令等价
ls -l-a-h /home ./
ls -lah /home ./
- 权限用户
$ 普通权限
# Root权限
\ :一般出现在行尾,是因为当前行中字符太多,在行尾尚有未写完的字符串,加上该符号后就可以下行行首的字符相连,相当于替换\n的作用
– :至于’–'符号,在命令行中,每个参数前边都会加上–表示该参数的开始,相当于参数间的分隔符。
1 Linux终止命令
命令名称 | 作用 | 详细描述 | 附加 |
---|---|---|---|
Ctrl+c | 强制中断程序的执行 | ||
Ctrl+z | 任务暂停 | 任务并没有结束,仍然在进程中,只是维持挂起的状态 | fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行 |
Ctrl+d | 相当于exit命令,退出当前shell | Ctrl+d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF | |
Ctrl+s | 挂起当前shell | ||
Ctrl+q | 解冻挂起的shell | ||
Ctrl+L | 清屏 |
2 Linux常用指令
2.1 pwd (Print current working directory)
# 打印当前目录
pwd
2.2 ls (List directory contents)
- 用法1:ls
# 列出当前工作目录下的文件/文件夹的名称
ls
- 用法2:ls [路径]
# ls 相对路径
ls ./ #【表示当前目录下】
ls ../ #【上一级目录下】
# ls 绝对路径
ls /home
- 用法3:ls [选项] [路径]
# ls 选项路径
ls -lah /home
# 选项解释:
-l:表示list,表示以详细列表的形式进行展示
-a:表示显示所有的文件/文件夹(包含了隐藏文件/文件夹)
-h:表示以可读性较高的形式显示
# ls -l 列出的 “-”表示对应的文档类型为文件,“d”表示文档类型为文件夹。
# 在Linux中隐藏文档一般都是以“.”开头
# 列出的内容更详细
ll
2.3 cd (change directory)
- 用法1:cd ; cd ~; cd -
# 以下两条命令等价,示直接进入当前用户的home目录下
cd
cd ~
# 返回上次操作的文件夹
cd -
- 用法2:cd [相对路径]
# 进入到上级目录下
cd ..
# 进入到上级目录中的local目录下
cd ../local
- 用法3:cd [绝对路径]
# 进入到/usr/local目录下
cd /usr/local
2.2.1 chown & chmod 修改文件权限
- chown (change owner) : 修改所属用户与组
- chmod (change mode) : 修改用户的权限
- 通过 chown 来授权用户,通过 chmod 为用户设置可以开门的权限。
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所属组的同组用户和其他用户。因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
对于 root 用户来说,一般情况下,文件的权限对其不起作用。
# 我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4
w:2
x:1
# 每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
- chmod:数字设置文件属性
# 用法:chmod [-R] xyz 文件或目录
# 选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更
chmod -R 777 myfolder
- chmod:符号设置文件属性
命令 | 用户身份 | 设定方式 | 权限 | 文件或目录 |
---|---|---|---|---|
chmod | u | +(加入) | r | |
g | -(除去) | w | ||
o | =(设定) | x | ||
a |
# 可以使用 u, g, o 来代表三种身份的权限
# chmod u=rwx,g=rx,o=r 文件名
chmod u=rwx,g=rx,o=r test1
chmod a-x test1
# 一般刚从U盘上拷贝下来,或者从网络上下载下来的可执行文件,没有可执行(x)权限,因此需要使用指令赋予其权限:
chmod +x myfile # 给myfile文件的所有用户加入execute
字体有不同的颜色
- 蓝色:文件夹(绿底蓝字表示这个文件夹有写入权限)
- 绿色:可执行文件
- 红色:压缩文件
- 白色:普通文件
chmod -R 777 myfolder
如果你是将U盘插入服务器的情况下,直接对U盘文件是没有执行权限的,必须将U盘里的文件拷贝到一个目录中去。
首先使用mkdir 命令创建一个目录 并且记住这个名字 并且用cp命令将U盘中的文件夹复制到目标目录中去,再去目标目录中去执行文件即可。
2.4 mkdir (make directories)
- mkdir 路径
# 在当前路径下创建出目录“myfolder”
mkdir myfolder
- 用法2:mkdir -p 路径
# 创建 ~/a/b/c 目录
mkdir -p ~/a/b/c
- 用法3:mkdir 路径1 [路径2] [路径3]
# 在当前目录分别创建a、b、c三个文件夹
mkdir a b c
2.6 touch (change file timestamps)
为什么创建新文件是touch?
- touch的作用本来不是创建文件,而是将指定文件的修改时间设置为当前时间。就是假装“碰”(touch)了一下这个文件,假装文件被“修改”了,于是文件的修改时间就是被设置为当前时间。
- 这带来了一个副作用,就是当touch一个不存在的文件的时候,它会创建这个文件。然后,由于touch已经可以完成创建文件的功能了,就不再需要一个单独的create了。
- 用法1:touch [路径]
# 在当前目录下创建linux.txt文件
touch linux.txt
# 在上级目录下创建linux文件
touch ../linux
# 在/home/bing/目录下创建myfile文件
touch /home/bing/myfile
- 用法2:touch [路径1] [路径2]
# 在当前目录下创建file file.txt 两个文件
touch file file.txt
2.7 rm (remove files or directories)
- 用法1:rm [选项] 需要移除的文件路径
# 删除当前路径下的myfile文件
rm myfile
# 删除/usr路径下的myfile文件
rm /usr/myfile
- 用法2:rm [选项] 需要移除的目录
# 删除当前路径下的abc文件
rm -rf myfolder
# 删除/usr路径下的abc文件
rm -rf /usr/myfolder
# rm -rf / 切勿在Linux中尝试! 删除电脑中全部文件
2.8 cp (copy files and directories)
- 用法1:cp [被复制的文件路径] [文件被复制到的路径]
# cp命令来复制一个文件
cp /home/bing/myfile ./
- 用法2:cp -r [被复制的文件夹路径] [文件夹被复制到的路径]
- 含义:-r 表示递归复制,复制文件夹的时候需要加 -r (recursion)
# 复制/home/bing/myfolder文件夹到根目录/下
cp -r /home/bing/myfolder /
2.9 mv (move (rename) files)
-
作用:移动文件到新的位置,或者重命名文件
-
用法:mv [需要移动的文件路径] [需要保存的位置路径]
# 移动当前目录下myfile文件到根目录/下
mv myfile /myfile
# 移动当前目录下myfolder文件夹到根目录/下
mv myfolder /myfolder
# 移动当前目录下myfile到根目录/下,并重命名为
myfile007mv myfile myfile007
2.10 man (an interface to the system reference manuals)
- 作用:包含了Linux中全部命令手册
- 用法:man [命令]
- 含义:查看命令使用手册,按 q 退出
# 查看ls命令的手册
man ls
# 查看cd命令的手册
man cd
# 查看man命令的手册
man man
2.11 reboot (reboot the machine)
- 作用:重启linux系统
- 用法:reboot
# 立即重启
reboot
2.12 shutdown (power-off the machine)
- 作用:关机
- 用法:shutdown -h [时间]
# 立即关机
shutdown -h now
2.13 source
source filename [arguments] # arguments可选,传递给文件的参数
. filename
- 执行文件并从文件中加载变量及函数到执行环境
- 作用是在当前bash环境下读取并执行Filename中的命令。该命令可以用“.”来替代,例如
- 作用就是把一个文件的内容当成是shell来执行
先在/usr/src/linux-2.4.20目录下建立一个文件,取名为make_command,在其中输入如下内容:
make mrproper &&
make menuconfig &&
make dep &&
make clean &&
make bzImage &&
make modules &&
make modules_install &&
cp arch/i386/boot/bzImge /boot/vmlinuz_new &&
cp System.map /boot &&
vi /etc/lilo.conf &&
lilo -v
文件建立好之后,以后每次编译核心,只需要在/usr/src/linux-2.4.20下输入source make_command 就行了。这个文件也完全可以做成脚本,只需稍加改动即可。
source filename 与 sh filename 及./filename执行脚本的区别
-
当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有”.”是用来表示当前目录的。
-
sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell。
-
source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。sourse会使被执行文件的变量和函数加载进当前终端环境中(除去函数中local修饰的变量)
ubuntu(linux)下 source、sh、bash、./ 执行脚本的区别是什么?
- source命令用法:
source FileName
作用:在当前 bash 环境下读取并执行 FileName 中的命令。该 filename 文件可以无 “执行权限”。
注:该命令通常用命令 . 来替代。
- sh、bash的命令用法:
sh FileName
或
bash FileName
作用:打开一个子 shell 来读取并执行 FileName 中命令。该 filename 文件可以无 “执行权限”。
注:运行一个shell脚本时会启动另一个命令解释器。
3、./的命令用法:
./FileName
作用: 打开一个子 shell 来读取并执行 FileName 中命令,该 filename 文件需要 “执行权限”。
注:运行一个 shell 脚本时会启动另一个命令解释器。
2.14 ln
- 英文全称是“link”,即链接的意思
- 功能是为某一个文件在另外一个位置建立一个同步的链接。 一种是hard link,又称为硬链接;另一种是symbolic link,又称为符号链接。
通俗一点理解,可以把硬链接当成源文件的副本,他和源文件一样的大小,但是事实上却不占任何空间。符号链接可以理解为类似windows一样的快捷方式。
符号链接 :
- 符号链接以路径的形式存在,类似于Windows操作系统中的快捷方式。
- 符号链接可以跨文件系统 ,硬链接不可以。
- 符号链接可以对一个不存在的文件名进行链接,硬链接不可以。
- 符号链接可以对目录进行链接,硬链接不可以。
硬链接:
1.硬链接以文件副本的形式存在,但不占用实际空间。
2. 硬链接不允许给目录创建硬链接。
3.硬链接只有在同一个文件系统中才能创建。
语法格式: ln [参数] [源文件或目录] [目标文件或目录]
-b 为每个已存在的目标文件创建备份文件
-d 此选项允许“root”用户建立目录的硬链接
-f 强制创建链接,即使目标文件已经存在
-n 把指向目录的符号链接视为一个普通文件
-i 交互模式,若目标文件已经存在,则提示用户确认进行覆盖
-s 对源文件建立符号链接,而非硬链接
-v 详细信息模式,输出指令的详细执行过程
# 为源文件file.txt创建硬链接file_1:
ln /root/dir/file.txt ./file_1
# 使用ln命令的“-s”参数来创建目录的符号链接,并使用ls命令来查看链接文件的详细信息:
ln -s dir file
ls -l
总用量 4
-rw-------. 1 root root 1138 3月 11 14:48 anaconda-ks.cfg
drwxr-xr-x. 2 root root 36 4月 3 08:47 test
lrwxrwxrwx. 1 root root 4 4月 3 08:54 file -> dir
# 使用ln命令的“-v”参数来输出命令的详细执行过程:
ln -v /root/dir/file.txt ./file_1
'./file_1' => '/root/dir/file.txt'
其他简单命令
命令名称 | 作用 |
---|---|
reset | 重新初始化终端/清屏 |
clear | 清屏 |
history | 查看命令历史 |
help | 帮助 |
exit | 退出 |
tree | 树状图 |
cat | 显示文件内容 |
alias | 设置指令的别名 |
alias
- 使用alias时,用户必须使用单引号 ‘ ‘ 将原来的命令引起来,防止特殊字符导致错误。
- alias:命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件 /etc/bashrc中。
# 设置指令的别名
-p 打印已经设置的命令别名
3 软件管理
3.1 apt软件安装、卸载、解压
- aptitude命令与apt-get命令一样,都是Debian Linux及其衍生系统中功能极其强大的包管理工具。与apt-get不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。它通过文本操作菜单和命令两种方式管理软件包。
aptitude update #更新可用的包列表
aptitude upgrade #升级可用的包
aptitude dist-upgrade #将系统升级到新的发行版
aptitude install pkgname #安装包
aptitude remove pkgname #删除包
aptitude purge pkgname #删除包及其配置文件
aptitude search string #搜索包
aptitude show pkgname #显示包的详细信息
aptitude clean #删除下载的包文件
aptitude autoclean #仅删除过期的包文件
# 更新软件列表
sudo apt-get update
# 更新已安装的包
sudo apt-get upgrade
# 安装软件
sudo apt-get install SoftwareName
# 卸载软件
sudo apt-get remove SoftwareName
# 解压
tar zxvf FileName.tar.gz 解压
tar xvf FileName.tar.xz 解压
jar -xvf hello.jar 解压
# 安装软件包
sudo dpkg -i /var/cache/apt/archives/fdisk_2.34-0.1ubuntu9.1_amd64.deb
# 选项:
-i:安装软件包
-r:删除软件包
-P:删除软件包的同时删除其配置文件
-L:显示于软件包关联的文件
--unpack:解开软件包
-c:显示软件包内文件列表
-configure:配置软件包
- Ubuntu卸载软件
# 1.使用Synaptic软件包管理器进行卸载
sudo apt-get install synaptic # 安装Synaptic
# 2.使用终端进行卸载
dpkg --list # 要查看已安装的软件包列表
sudo apt-get --purge remove <programname> # 卸载程序和所有配置文件
3.2 cmake
# 用cmake命令将CMakeLists.txt文件转化为make所需的makefile文件及很多编译的中间文件(存放在同一新建目录下)
cmake .
cmake .. 上一层目录中
# 用make命令编译源码生成可执行程序或共享库(编译链接)
make -j8 (八核)
# 执行可执行程序,安装到系统
sudo make install
- CMakeLists.txt文件示例:
#指定cmake版本(很重要,我的是3,5的)
cmake_minimum_required(VERSION 3.5)
#指定项目的名称,一般和项目的文件夹名称对应
project(pcl_test)
#找到运行所需的包
find_package(PCL 1.7 REQUIRED)
#包含的文件
include_directories(${PCL_INCLUDE_DIRS})
#连接到该文件
link_directories(${PCL_LIBRARY_DIRS})
#添加定义
add_definitions(${PCL_DEFINITIONS})
#添加要编译的可执行文件
add_executable(pcl_test pcl_test.cpp)
#添加可执行文件所需要的库(点云库pcl)
target_link_libraries (pcl_test ${PCL_LIBRARIES})
#加载目标执行文件
install(TARGETS pcl_test RUNTIME DESTINATION bin)
4 文件编辑
- vim
- gedit
- nano
tty终端
ctrl + alt + F1~F6
top # 查看进程
kill 4795(PID) # 结束掉僵尸进程
sudo pkill Xorg # 注销桌面重新登录
- 查看进程并关闭进程
#查看全部进程信息:
ps -aux
#根据关键字查看具体的某个进程:
s -aux | grep 进程关键字
#杀死进程:
sudo kill 进程号(PID)