linux基础命令
1.APT
是ubuntu中功能最强大的命令行软件包管理工具,用于获取、安装、编译、卸载和查询软件包,
以及检查软件包依赖关系
工作原理:
/etc/apt/sources.list
sources.list用来指定ubuntu的软件源服务器的地址
修改源:
自己从网上找一个适合的sources.list,对应版本,替换掉就可以了
也可以在应用程序了里面软件和更新里面自行设置
我已经找到一个sources.list:/mnt/hgfs/share
sudo cp /mnt/hgfs/share/sources.list /etc/apt/sources.list
关于apt有几个常用命令:
sudo apt-get update
下载更新软件包列表的信息
服务器上有哪些软件我是不知道的,但是我们可以通过这个指令去查看
sudo apt-get install 要安装的软件名
sudo apt-get install make
sudo apt-get upgrade:将系统中的所有软件包升级到最新版本
sudo apt-get remove 要卸载的软件名字
2.vi/vim
vi和vim是linux里面最基本、最常用、功能最强大的命令行编辑器。
vim是vi的升级版
vi有两种模式:
命令模式:键盘所输入的字符都当做是命令
输入模式:键盘输入的字符都当做是文本内容
2.1命令模式-》输入模式:
i/I: insert
i:进入输入(Insert)模式后,光标不动
I:进入输入(Insert)模式后,光标出现在行首
a/A: append
a:进入输入模式后,光标往后移一个字符
A:进入输入模式后,光标移动到行末
o/O: open
o:进入输入模式后,会新开一行,开在光标的下一行
O:进入输入模式后,会新开一行,开在光标的上一行
退出输入模式:输入模式-》命令模式
ESC键
2.2vi的退出命令:
:q quit
不保存的退出–》可能会询问是否保存
:q!
强制退出–》不保存的退出
:w write
写入、保存
:w filename
:w 2.txt 另存为
:wq
保存并退出
:x
保存并退出
2.3vi的删除与修改指令
x
删除光标所在的字符
dd delete
删除光标所在的行
ndd
删除光标及以下的n行
dd和ndd是剪切
r replace
替换光标所在的单个字符
r + 要替换的单个字符
R
替换光标及后面的多个字符,替换多少个随便你,直到你按ESC退出替换
2.4vi的拷贝与粘贴指令
yy
将当前行的内容复制到剪贴板中去
p(小写)
将剪贴板的内容粘贴到当前行的后面
P(大写)
将剪贴板的内容粘贴到当前行的前面
2.5vi的撤销指令
u(小写)
撤销指令
2.6vi的搜索命令
/要搜索的内容
n next
找下一个要匹配的内容
N
反向搜索下一个要匹配的内容
2.7vi的替换命令
s 替换
格式–》 :{作用范围}s/{目标}/{替换}/{替换标志}
作用范围:
不指定 就是当前行
% 全文
选区 5,12 5-12行
.,+2 当前行到接下来的两行
替换标志:
g:全局替换,所有出现的目标都替换
i : 忽略大小写
2.8vi的其他的指令
:set nu 显示行号
:set nonu 不显示行号
j 光标往下移动
h 光标往左移动
k 光标往上移动
l 光标往右移动
:行号 光标跳转到那一行
:$ 光标跳转到文件末尾
:sp filename 上下分割并打开一个新文件
:vsp filename 左右分割并打开一个新文件
ctrl+z 挂起 --》fg回到vi界面
ctrl+s 锁定 —》解除锁定 ctrl + alt + q
ctrl + alt + t 快捷打开终端
3.文件系统相关命令
文件系统:
用来管理文件的一套组织方法及软件系统
文件:由两部分组成
文件属性 —》 inode
inode是唯一标识一个文件存在的东西
文件名、文件大小、文件类型、最近修改时间、创建时间…
文件内容
linux文件系统树状结构:
linux下面的文件组织方式是以“根目录” – / 开始的
根目录下面也可以有目录,也可以有文件
目录下面也有目录,也可以有文件
…
上述这种结构,树状结构
绝对路径:
以根目录 / 开始的路径,称之为绝对路径
如: cd /mnt/hgfs/share
第一个/ 代表根目录
后面的/ 代表分隔符
相对路径:
不是以根目录 / 开始,以当前的路径为参照,称之为相对路径
如:cd ./test
.代表当前目录
如果你没有这个 . 或者 … 默认是当前路径
linux基础指令:
pwd:把当前的绝对路径显示出来
cd:
change directory 切换目录
语法:
cd 要切换到的目录
cd 什么也不接
用户的主目录
ls: list 列举的意思
ls用来列举一个目录下面的所有文件/目录名
语法:
ls {带路径的目录名} [options]
options:
-a:all 列举所有的文件名 包括隐藏文件 . …
-l:list 列举所有的文件的详细信息
如果你省略–带路径的目录名 : 就默认显示当前目录下的文件信息
注意:某些目录下你是没有权限去查看/创建目录/文件
一般来说你在home目录下是有绝对的权限
mkdir: make directory 创建空目录
语法:
mkdir {-p} 带路径的目录名
示例:
mkdir ./lsq //在当前目录下创建一个名字叫lsq的目录
mkdir /mnt/hgfs/share/lsq //在/mnt/hgfs/share目录下创建一个名字叫lsq的目录
p: parent
如果要创建的目录上面的某一级目录不存在,则一并创建,只要有权限
示例:
mkdir lsq/ls/q //假设lsq下面的ls目录不存在
那么你不想一个一个创建可改成— mkdir lsq/ls/q -p
rmdir:删除一个空目录
rm:删除一个目录/文件
语法: rm [options] [DEST]
DEST:要删除的目标文件,既可以是普通文件,也可以是目录
options:
-r:递归删除
如果DEST是个目录, rm -r就是递归删除 删除该目录及目录下所有文件
-f: force 强制
不会去询问你是否删除该目录,直接删除,非交互
示例:
rm lsq -rf
最有名的rm指令: sudo rm /* -rf
cp: copy拷贝
cp [options] [source] [DEST]
source:源 拷贝的源文件
DEST:目标 拷贝出来的文件
源和目标既可以是普通文件也可以是目录
options:
-r/R 递归拷贝 如果你拷贝的是目录就需要用
-f 非交互模式拷贝
示例:
cp ./1.txt ./2.txt
cp ./lsq …/ -r //拷贝当前目录下的lsq目录到上一级目录
skills:
通配符 *
./*.c ==》代表当前目录下所有的以.c结尾的文件
mv : move 移动
语法:
mv source dest
你要把source指代的那个文件移动到dest
示例:
mv ./1.txt …/1.txt 移动文件
mv ./lsq …/lsq 移动目录
mv 1.txt 2.txt //把1.txt文件的名字改成2.txt
文件的归档与压缩:
归档:将一组文件/目录保存在一个文件中(打包),最终文件的大小等于打包前全部文件的和
压缩:经过一定的压缩算法,把打包好的文件压缩成一个压缩包
tar
语法: tar [options] tarfile filelist
options:
-x:释放一个归档文件
-c:创建一个归档文件
-v:显示归档/释放的过程信息
-f:指定归归档文件的名称
-j:由tar生成归档文件,bzip2压缩
-z:由tar生成归档文件,gzip压缩
压缩指令:
tar -zcvf xxx.tar.gz filelist
将filelist指定的文件列表用gzip这种压缩算法生成一个压缩文件,名字:xxx.tar.gz
tar -jcvf xxx.tar.bz2 filelist
将filelist指定的文件列表用bzip2这种压缩算法生成一个压缩文件,名字:xxx.tar.bz2
解压指令:
tar -xvf xxx.tar.gz/(xxx.tar.bz2) {-C 指定你要解压到哪个目录下}
chmod: change mode 修改文件的权限
文件权限对于某个组/用户来说:
r:read 可读
w:write 可写
x:execute 可执行
每个文件都会针对三组不同的用户:
user:文件属主用户
group:文件用户组内的用户
other:其他用户
在描述一个文件的权限时: ls -l可以查看文件的权限
rwx rwx rwx
user group other
rw- r-- r–
这个权限:对于user用户来说,具备可读可写 但是不可执行
对于同组用户来说,具备可读权限,但是不可修改以及不可执行
对于other用户来说,具备可读权限,但是不可修改以及不可执行
rwx 可以看成一组八进制数
7 ===》 111 ==》 rwx
6 ===》 110 ==》 rw-
4 ===》 100 ==》 r–
0 ===》 000 ==》 —
chmod语法:
chmod 用户 +/- rwx 文件名
示例:
chmod u+x 1.txt 将1.txt中的user用户加上可执行权限
chmod g-r 1.txt 将1.txt中的组用户减去可读权限
chmod +x 1.txt 给1.txt的所有用户加上可执行权限
我们也可以用八进制的形式给文件赋予权限:
chmod 0777 1.txt
相当于将1.txt中的所有用户以所有权限
touch:用来创建一个普通文件
示例:touch 1.txt
stat 查看某个文件的具体属性信息:比ls -l更详细
示例:stat 文件名
cat:将文件中的信息打印到终端
示例:cat 1.txt
echo: 打印对应的字符串
示例:echo “123”
echo 123
echo ‘123’
echo “$HOME 123” //HOME为环境变量
echo “123\n”
echo 后面可以接两个选项:
-e:将双引号内的字符串中\字符当做转义字符, 没有-e,则\n视为普通字符
-n:将echo后面的换行符去掉
链接:软链接和硬链接
文件属性: inod 作为文件存在与否的唯一标识
文件内容
硬链接:
为文件新创建一个inode,inode指向对应的文件内容
如果一个文件的所有硬链接都没有,那么这个文件再也就不会被识别到了—身死道消
如果一个文件有多个硬链接,只要留下一个那么他依然是满血的,还存在还可以找到它
语法:
ln target link_name
为target这个目标创建一个link_name的硬链接
ln 1.txt 2.txt
软链接:(符号链接)
语法:
ln -s target link_name
为target这个目标创建一个名字为link_name的软链接,软链接的形式有点像快捷方式,
软链接里面保存的是目标文件的路径名,他并没有为目标文件创建一个硬链接
如果删除软链接对指向文件本身并没有影响,但是如果删除的是软链接指向的硬链接
则该软链接无效
注意:不能在共享文件夹中使用链接
4.基本的系统命令
man manual手册
linux系统会为每个命令、每个系统函数、标准库函数,写一个文档(手册),方便用户查找
手册分为很多章节,不同的分类
man 用来查询一个指定 名字 相关的手册/信息
语法:
man -f 你要查询的名字
可以将该名字所在的章节信息输出到终端
man 章节数 要查询的名字
可以进入man手册的那个章节那个名字处查看对应的信息
进入man手册之后按q退出
shutdown 关机命令
shutdown -h 0 关机
reboot 重启
sudo
sudo rm lsq -r //以超级用户的权限去删除lsq这个目录
用超级管理员用户权限去执行命令
sudo -s 进入root用户 输入指令之后就是最高权限用户
退出超级用户:exit
su username 切换到username对应的目录
root用户:
linux/UNIX系统下至高无上的用户,对一切文件拥有最高权限
passwd [username] 为username对应的用户修改密码,如果没有指定用户名,默认为当前用户
clear 清屏指令 ctrl + l 快捷键也是清屏
上下左右键调回你之前使用过的指令
5.用户管理
/etc/passwd
用来保存用户信息的
用户名/口令(密码)/用户ID(UID)/用户主目录(HOME)/用户shell
/etc/group
用户组信息
组名/加密的口令/组ID(GID)/成员列表
添加一个普通用户:
adduser username 创建一个名字为username的普通用户
userdel username 删除一个名字为username的普通用户
groupadd groupname 创建一个名字为groupname的组用户
groupdel groupname 删除一个名字为groupname的组用户
useradd -g 组名 用户名 将用户加入组
6.进程管理
ps process status 列出系统中进程的信息
如:ps
-e: everyone 每一个进程
-f:full 全部
ps -ef :列出每一个进程的全部信息
kill 发送 //干掉某个进程
kill -9 pid
killall 进程名: 杀死同一进程组的所有进程
killall madplay
top 动态显示cpu的实时占有率