Ubuntu系统常用命令
Ubuntu
常用命令
文件列表
ls
ls,即list
列出目录下的所有项
参数
-l 以详细模式查看
-a 查看所有文件
-h 配合-l以人性化的方式显示文件大小
- 在
Linux下,以.开头的文件为隐藏文件
通配符
* 代表任意个数个字符
? 代表任意一个字符,至少一个
[] 表示可以匹配字符组中的任意一个
[abc] 匹配a,b,c中的任意一个
[a-f] 匹配从a到f范围内的任意一个
- 例
在/home/l/desktop/下 有文件:123.txt,223.txt,323.txt,423.txt,111.txt,1abc1.txt
1 | ls |
示例
查看当前目录
1 | ls |
查看/home/l
1 | ls /home/l |
pwd
pwd,即print working directory
显示当前工作目录
切换目录
cd
cd,即change directory
切换目录
几个特殊的目录
~ 代表当前用户的主目录
. 代表当前目录
.. 代表上一级目录
切换到主目录
1 | cd ~ |
切换到主目录下的example目录
1 | cd ~/example |
切换到上级目录、再到www子目录
1 | cd ../www |
示例
切换到当前用户主目录
1 | cd |
切换到某个目录
1 | cd /home/l/example |
目录操作
tree
可以以树状图列出文件目录结构
参数
-d 只显示目录
mkdir
mkdir,即make directory
创建目录
参数
-p 将路径的层次目录全部创建
rmdir
rmdir,即remove directory
删除空目录
- 如果目录非空,则删除失败
创建与删除操作
rm
rm,即remove
删除文件或者目录
参数
-rf
r表示recursive,强制删除,忽略不存在的文件,无需提示
f表示force,递归的删除目录下的内容,删除文件夹时必须加此参数
示例
删除abc目录
1 | rm -rf abc |
touch
touch,即touch
若文件不存在,新建文件
拷贝和移动文件
cp
cp,即copy
复制文件或者目录
参数
-f 已经存在的目标文件直接覆盖,不会提示
-i 覆盖文件前提示
-r 若给楚的源文件是目录文件,则复制,将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
示例
复制example至example2
1 | cp -rf example example2 |
mv
mv,即move
移动文件或目录(重命名)
参数
-f 已经存在的目标文件直接覆盖,不会提示
-i 覆盖文件前提示
示例
重命名hello为helloworld
1 | move hello helloworld |
查看文件内容
cat
cat即concatenate,查看文件内容、创建文件、文件合并、追加文件内容等功能
参数
-b 对非空输出行编号
-n 对输出的所有行编号
- 命令
-nl与命令-cat -b等效果等价
more
可以用于分屏显示文件内容, 每次只显示一页内容
- 适用于查看文件较多的文本文件
操作
空格键 显示手册页的下一屏
Enter键 一次滚动手册页的一行
b 回滚一屏
f 前滚一屏
q 退出
/word 搜索word字符串
grep
文本搜索工具
参数
-n 显示匹配行及行号
-v 显示不包含匹配文本的所有行(相当于求反)
-i 忽略大小写
- 常用的两种模式查找
^a 行首,搜索以a开头的行
ke$ 行尾,搜索以ke结束的行
归档压缩
tar
tar,即tape archive
创建档案包
参数
-cvf
其中,
c,表示create创建档案
v,表示verbose显示详情
f,表示file
创建档案包
-xvf 还原档案包
-C 指定目标目录,默认解压到当前目录下(目标路径必须存在)
压缩
1.gzip
-z 压缩(自动调用gzip)
拓展名为tar.gz
2.bzip2
-j 压缩(自动调用bzip2)
拓展名为tar.bz2
示例
1 | tar -cvf example.tar example |
打包多个目录
1 | tar -cvf xxx.tar file1 file2 file3 |
并档并压缩
1 | tar -czvf example.tar.gz example |
解压缩
1 | tar -xzvf example.tar.gz |
软链接
ln
ln,即link
创建软链接
参数
-s 表示soft软链接(默认为硬)
示例
1 | ln -s 被链接的源文件 链接文件 |
- 源文件最好使用绝对路径
软件包
apt
apt即Advanced Packaging Tool软件包管理器
安装一个软件包
1 | apt install net-tools |
移除一个软件包
1 | apt remove net-tools |
搜索
1 | apt search xxx |
更新
1 | apt upgrade |
列表
1 | apt list |
软件源
- 如果希望在
Ubuntu中安装软件,更加快速,可以通过设置镜像源,选择一个访问网速更快的服务器,来提供软件下载/安装服务。 - 提示:更换服务器之后,需要一个相对比较长时间的更新过程,需要耐心等待。更新完成后,再安装软件都会从信社之的服务器下载软件了。
- 所谓镜像源,就是所有服务器的内容是相同的(镜像),但根据所在位置不同,国内服务器通常速度会更快一些。
关机/重启
shutdown
可以安全 关闭或重新启动系统
参数
-r 重新启动
- 不指定选项和参数,默认表示1分钟之后关闭电脑
- 远程维护服务器时,最好不要关闭系统,而应该重新启动系统
示例
1 | # 重新启动操作系统,其中now表示现在 |
查找命令位置
which
可以查看执行命令所在位置
示例
1 | which ls |
bin和sbin
- 在
Linux中,绝大多数可执行文件都是保存在/bin、/sbin、/usr/bin、/usr/sbin /bin(binary)是二进制执行文件目录,主要用于具体应用/sbin(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理/usr/bin(user commands for applications)后期安装的一些软件/usr/sbin(super user commands for applications)超级用户的一些管理程序
查找文件位置
find
在特定的目录 搜索符合条件的文件
用法
1 | find [路径] -name "文件名" |
- 如果省略路径,表示在当前文件夹下查找
- 可使用通配符
系统信息
日期与时间
#####data
查看系统时间
cal
cal即calendar查看日历
参数 -y 可查看一年的日历
磁盘和目录空间
df
df即disk free显示磁盘剩余空间
du
du即disk usage显示目录下的文件大小
参数
-h 以人性化的方式显示问件大小
其他
echo
在终端中显示参数指定的文字,通常会和重定向联合使用
clear
清屏
重定向 > 和 >>
- 将本应该显示在终端上的内容 输出/追加 到指定文件中
其中
>表示输出,会覆盖文件原有的内容>>表示追加,会将内容追加到已有的文件的末尾
管道 |
- 将一个命令的输出可以通过管道做为另一个命令的输入
常见的管道命令:more,grep
- 小技巧
ctrl + shift + = 放大终端窗口的字体显示
ctrl + -*缩小终端窗口的字体显示
用户管理
用户
sudo,表示以管理员身份运行
添加用户 useradd
1 | useradd -m test1 |
参数
-m 在/home下添加用户目录
-g 指定用户所在的组,否则会建立在一个同名的组
修改用户密码 passwd
1 | passwd test1 |
删除用户 userdel
1 | userdel test1 |
参数
-r 自动删除用户家目录
- 1.在登录系统时,默认不允许以
root用户登录 - 2.只有特殊的用户,才能执行
sudo
Linux下,把能执行sudo命令的用户叫sudoer
修改用户信息 usermod
用法
1 | usermod [选项] 登录名 |
- 主组 通常在新建用户时指定,在
etc/passwd第4列**GID对应的组** - 附加组 在
etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限
重新登录生效
选项
-c用户说明:修改用户的说明信息,即修改/etc/passwd文件目标用户信息的第5个字段;-d主目录:修改用户的主目录,即修改/etc/passwd文件中目标用户信息的第 6 个字段,需要注意的是,主目录必须写绝对路径;-e日期:修改用户的失效曰期,格式为YYYY-MM-DD,即修改/etc/shadow文件目标用户密码信息的第8个字段;-g组名:修改用户的初始组,即修改/etc/passwd文件目标用户信息的第 4 个字段(GID);-uUID:修改用户的UID,即修改/etc/passwd文件目标用户信息的第 3 个字段(UID);-G组名:修改用户的附加组,其实就是把用户加入其他用户组,即修改/etc/group文件;-l用户名:修改用户名称;-L:临时锁定用户(Lock);-U:解锁用户(Unlock),和-L对应;-sshell:修改用户的登录Shell,默认是/bin/bash。
切换用户 su exit
1 | 切换至用户 |
查看用户信息
| 命令 | 作用 |
|---|---|
| id | 查看用户UID和GID信息 |
| who | 查看当前所有用户的用户列表 |
| whoami | 查看当前登录用户的登录名 |
passwd文件
/etc/passwd文件存放的是用户的信息,由6个分号组成的7个信息,分别是
1.用户名
2.密码(x,表示加密的密码)
3.UID(用户表示)
4.GID(组标识)
5.用户全名或本地账号
6.家目录
7.**登录使用的Shell**,就是登录之后,使用的终端命令,Ubuntu默认是dash
超级用户
超级用户 root
切换到root用户,有全部权限,可以直接useradd等命令。
设置密码
首次使用时,需要给root设置密码
1 | sudo passwd root |
切换到root用户
1 | su root |
其中,su表示switch user
退出
1 | exit |
su root仅仅对当前会话(终端)有效 不影响当前桌面环境root权力太大,需要小心使用
以root登录桌面
登录root
1 | su root |
更改/etc/pam.d/gdm-autologin
1 | gedit /etc/pam.d/gdm-autologin |
在这一行前面加一个#
1 | # auth required pam_succeed_if.so user !root quiet_success |
保存并关闭
更改/etc/pam.d/gdm-password
1 | gedit /etc/pam.d/gdm-password |
在这一行前面加一个#
1 | #auth requiredpam_succeed_if.so user !=root quiet_success |
保存并关闭,重启后生效
用户组
Linux下可以创建多个用户,可以用组进行管理用户
创建组
1 | groupadd test1 |
移除组
1 | groupdel test1 |
- 当组中存在用户时,无法删除,若删除,需移除组内用户
创建用户
1 | useradd -m -g test1 ming |
其中,-g表示在添加用户,同时将用户加到test1组
修改现有用户到新的组
1 | usermod -g test1 ming |
其中,usermod表示修改用户信息
用户和组
查看用户
1 | cat /etc/passwd |
每一行表示一个用户的信息
查看组
1 | cat /etc/group |
用户不多时,管理的时候并不适用组的概念
1 | useradd a1 |
一个root用户,两个普通用户a1,b1
默认地,会给a1用户建立一个同名的组a1,也就是说这个组里只有他一个人
程序与进程
程序Program:指一个程序文件,如notepad.exe
进程Process:当一个程序运行起来,在操作系统内创建一条记录,用于描述和控制他的运行
比如,打开多个notepad.exe,则得到多个进程
查看进程
1 | ps -ef |
其中,
a 显示终端上的所有进程,包括其他用户的进程
u 显示进程的详细状态
x 显示没有控制终端的进程
其中,各个字段的含义:
User:执行者
PID:进程ID
PPID:父进程ID
STIME:启动时间
CMD:启动时调用的命令行
按名称 查找某个进程
1 | ps -ef | grep java |
其中,将前者输出的信息,重定向给grep命令过滤处理
进程监视
top命令,相当于Windows的任务管理器
查看所有进程
1 | top |
区别于ps -ef,top可动态查看
- 按上下键翻阅
- 按
q或CTRL+C中止退出
查看某个进程
1 | top -p XXX |
其中,XXX为目标进程的PID
所以,可以先用ps命令查找目标进程的PID
杀死进程
使用kill命令,杀死一个进程
1 | kill -9 XXX |
或
1 | pkill name_of_progress |
其中,XXX表示为PID
前台进程与后台进程
前台进程:运行在前台
后台进程:运行在后台
1 | ./run_Program run 以前台方式运行(Ctrl+C 中止) |
区别
1.有无控制台
前台进程:有控制台,输出至当前终端
后台进程:无控制台,看不到输出
2.有无父进程
前台进程:有父进程,父进程即为当前终端,当终端关闭时,前台进程被一同关闭
后台进程:父进程为系统进程(1号进程),当终端关闭时,后台进程不受影响
3.强行终止
前台进程:使用Ctrl+C强行终止
后台进程:使用kill -9 XXX强行终止
文件权限
文件的权限
owner文件的属主ownerr文件是否可读readw文件是否可写writex文件是否可执行excute
权限可分为三部分:自己|同组|别人
每三项为一组
例如:
1 | r w x | r w x | r w x |
在文件夹属性窗口里,文件|属性|权限 查看
修改文件权限
chmod即change file mode修改文件的访问权限
比如,一个文件simple.txt,想让别人也能修改
1 | chmod o+w simple.txt |
其中,
o,表示other别人
+w,表示增写write权限
-w,表示减去write权限
-R,表示递归
chmod在设置权限时,可以简单地使用三个数字分别对应拥有者/组/其他用户的权限
| 拥有者 | 拥有者 | 拥有者 | 组 | 组 | 组 | 其他 | 其他 | 其他 |
|---|---|---|---|---|---|---|---|---|
| r | w | x | r | w | x | r | w | x |
| 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
例
1 | chmod a+w simple.txt |
所有人all添加w权限
1 | chmod a-w simple.txt |
所有人减去w权限
1 | chmod u+w simple.txt |
仅用户user自己的权限+w
1 | chmod o-w simple.txt |
修改别人other的权限-w
- 只有文件的属主或者
root可以修改文件权限 - 省略写法
1 | chmod +w simple.txt |
默认是修改自己和本组的权限
修改文件属主
chown,即change owner修改文件的属主
一般来说,每个用户只能操作自己的用户目录,所以chown命令并不常用
参数
-R 表示递归
示例
1.在/opt目录下简历一个文件夹test1
2.将/opt/test1目录分配给用户l
1 | su root |
- 只有文件的
owner和root才有权更改属主
修改文件的属组
chgrp即change group修改文件的属组
参数
-R 表示递归
用法
1 | chgrp -R 组名 文件/目录名 |
可执行脚本
脚本Script,一种解释执行的程序
Linux下常见的三种脚本程序
Shell脚本*.shPerl脚本*.plPython脚本*.py
脚本程序,本质是一个文本文件
1.它是一个文本文件
2.他具有可执行权限
脚本程序都是由解释器来执行的
Shell脚本解释器:/bin/shPerl脚本解释器:/bin.plPython脚本解释器:/bin.python3
执行一个脚本时,以下两种方式等效
1 | ./hello.py |
Shell脚本
Shell脚本,按Shell的语法写出来的脚本,是Linux自带的脚本语言
相当于Windows下的DOS批处理脚本
1.编辑一个文本文件,保存为hello.sh
2.添加可执行权限
3.执行程序
1 | #!/bin/sh |
- 第一行必须声明解释器
- 必须有
x权限,才能够执行
比如,一个程序只有作者可执行,别人不能执行
rwxr--r--
- 执行程序时,必须加上路径
环境变量
环境变量
定义环境变量
1 | export OUTDIR=/opt |
显示环境变量
1 | echo ${OUTDIR} |
查看所有环境变量
1 | printenv |
环境变量的使用
- 可以在当前终端中使用
- 可以在
SHELL脚本中调用
用户环境变量
用户环境变量:定义在~/.profile中
1.用文本编辑器打开~/.profile
1 | geidt ~/.profile |
2.添加
1 | export JAVA_HOME=/opt/jdk1.8 |
保存后关闭
3.注销,重新登录后生效
1 | echo $JAVA_HOME |
- 此配置只对当前用户有效
- 有的
Linux系统上,使用.bash_profile
系统环境变量
系统环境变量:定义在/etc/profile中
此中的环境变量对 所有用户 有效
以root身份执行
1 | gedit /etc/profile |
但是,一般不直接修改/etc/profile
而是在/etc/profile.d/创建一个自定义的脚本
1.用gedit创建一个脚本
1 | gedit /etc/profile.d/myprofile.sh |
2.定义环境变量
1 | export TOMCAT=/opt/tomcat |
3.注销并重新登录
重新登录后,环境变量生效
PATH环境变量
默认地,系统从以下目录中搜索可执行程序
1 | /usr/bin #比如,/usr/bin/tar |
其中,sbin为超级用户root才能执行的程序
/usr/下系统自带的程序,/usr/local/使用户安装的程序
修改PATH环境变量
1.编辑/etc/profile.d/myprofile.sh,设定PATH环境变量
1 | export PATH=$PATH:/opt/tomcat/bin |
2.注销,重启登录后生效
网络配置
网卡 和 IP地址
网卡
网卡是一个专门负责网络通讯的硬件设备
IP地址是设置在网课上的地址信息
IP 地址
- 每台联网的电脑上都有**
IP地址**,是保证电脑之间正常通讯的重要设置
ipconfig
默认地,Ubuntu下面不带ifconfig命令,需手动安装
查看网络配置
1 | ifconfig |
其中,if表示interface网络接口
会列出所有的网络接口,及各个接口的状态
开启/禁用网络
1 | sudo ifconfig xxx up |
ping
一般用于检测当前计算机到目标计算机之间的网络是否通畅,数值越大,速度越慢
1 | # 检测到目标主机是否正常连接 |
SSH服务
配置SSH服务
Ubuntu默认是不安装SSH服务
安装SSH服务
1 | sudo apt install ssh |
启动SSH服务
1 | sudo /etc/init.d/ssh start |
- 通过
-p参数可指定登录端口
修改SSH配置文件
可以通过SSH配置文件更改包括端口、是否允许root登录等设置,配置文件位置:
1 | /etc/ssh/sshd_config |
默认是不允许root远程登录的,可以再配置文件开启。
1 | sudo vim /etc/ssh/sshd_config |
找到PermitRootLogin without-password修改为PermitRootLogin yes
- 默认情况下,端口号为
22,登录是不需增加-p参数
重启SSH服务
1 | service ssh restart |
SSH高级
- 有关ssh配置信息都保存在用户家目录下的
.ssh目录下
免密码登录
步骤
- 配置公钥
执行ssh-keygen即可生成 SSH钥匙
- 上传公钥到服务器
执行
1 | ssh-copy-id -p port user@remote |
可以让远程服务器记住我们的公钥
配置别名
在~/.ssh/config中,追加
1 | Host example |
保存之后,就可以使用ssh example实现远程登录,scp同样可以使用
文本编辑(vim)
vi/vim,一个基于控制台的文本编辑器
gedit,一个基于GUI的文本编辑器
其中,vim是vi的升级版
- 若不存在
vim,则使用sudo apt install vim安装
切换模式
编辑模式Insert Mode:按i键
命令模式Command Mode:按ESC键
退出编辑
1.按ESC键,进入命令模式
2.输入:
:wq保存并退出
:q 退出
:q! 强制退出(放弃保存)
- 须输入冒号
(:)!!!!!
换行符
在Windows上编辑SHELL脚本时,记得设置换行符
Windows:\r\n
Linix:\n
- 仅在
shell脚本中需要改动
Java环境
安装
JRE:
1 | openjdk-8-jre-headless |
JDK:
1 | openjdk-8-jdk-headless |
其中,openjdk是JDK的免费版本,推荐JDK8
环境变量
默认放在/usr/bin下,不需要额外设置PATH
- 若放在自定义位置,需要设置
PATH
1 | export PATH=${PATH}:opt/jdk8/bin |
运行
1 | java -cp example.jar example.MainClass |
- 权限问题
程序中 需要访问系统文件,如/etc/,须使用root运行
程序中 需要开启TCP端口,如80,须使用root运行
Java GUI的程序不能在终端里运行
Java启动脚本
- 设置工作目录
- 设置必要的环境变量
- 设置
JVM鱼腥参数 - 运行程序
注意:需将脚本转换为UNIX风格





