Ubuntu

常用命令

文件列表

ls

ls,即list

列出目录下的所有项

参数

-l 以详细模式查看

-a 查看所有文件

-h 配合-l以人性化的方式显示文件大小

  • Linux下,以.开头的文件为隐藏文件

通配符

* 代表任意个数个字符

? 代表任意一个字符,至少一个

[] 表示可以匹配字符组中的任意一个

[abc] 匹配a,b,c中的任意一个

[a-f] 匹配从af范围内的任意一个

/home/l/desktop/下 有文件:123.txt,223.txt,323.txt,423.txt,111.txt,1abc1.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ls
111.txt 123.txt 1abc1.txt 223.txt 323.txt 423.txt

ls 1*
111.txt 123.txt 1abc1.txt

ls 1*1*
111.txt 1abc1.txt

ls ?2*
123.txt 223.txt 323.txt 423.txt

ls [12345]*
111.txt 123.txt 1abc1.txt 223.txt 323.txt 423.txt

ls [1-3]23.txt
123.txt 223.txt 323.txt

示例

查看当前目录

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

catconcatenate,查看文件内容、创建文件、文件合并、追加文件内容等功能

参数

-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
2
3
tar -cvf example.tar example
tar -xvf example.tar
tar -xvf example.tar -C outdir

打包多个目录

1
tar -cvf xxx.tar file1 file2 file3

并档并压缩

1
2
tar -czvf example.tar.gz example
tar -jcvf example.tar.bz2 example

解压缩

1
2
tar -xzvf example.tar.gz
tar -xzvf example.tar.gz -C outdir

软链接

ln

ln,即link

创建软链接

参数

-s 表示soft软链接(默认为硬)

示例

1
2
3
ln -s 被链接的源文件 链接文件

ln -s example example2
  • 源文件最好使用绝对路径

软件包

apt

aptAdvanced 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
2
3
4
5
6
7
8
9
10
# 重新启动操作系统,其中now表示现在
shutdown -r now
# 立刻关机
shutdown now
# 系统在今天的 20:25 会关机
shutdown 20:25
# 系统再过十分钟后自动关机
shutdown +10
# 取消之前指定的关机计划
shutdown -c

查找命令位置

which

可以查看执行命令所在位置

示例

1
2
3
4
5
6
7
8
9
which ls

# 输出
# /bin/ls

which useradd

# 输出
# /usr/sbin/useradd

binsbin

  • Linux中,绝大多数可执行文件都是保存在/bin/sbin/usr/bin/usr/sbin
  • /binbinary)是二进制执行文件目录,主要用于具体应用
  • /sbinsystem binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理
  • /usr/binuser commands for applications)后期安装的一些软件
  • /usr/sbinsuper user commands for applications)超级用户的一些管理程序

查找文件位置

find

特定的目录 搜索符合条件的文件

用法

1
find [路径] -name "文件名"
  • 如果省略路径,表示在当前文件夹下查找
  • 可使用通配符

系统信息

日期与时间

#####data

查看系统时间

cal

calcalendar查看日历

参数 -y 可查看一年的日历

磁盘和目录空间

df

dfdisk free显示磁盘剩余空间

du

dudisk usage显示目录下的文件大小

参数

-h 以人性化的方式显示问件大小

其他

echo

在终端中显示参数指定的文字,通常会和重定向联合使用

clear

清屏

重定向 > 和 >>

  • 将本应该显示在终端上的内容 输出/追加指定文件中

其中

  • >表示输出,会覆盖文件原有的内容
  • >>表示追加,会将内容追加到已有的文件的末尾

管道 |

  • 一个命令的输出可以通过管道做为另一个命令的输入

常见的管道命令:more,grep

  • 小技巧

ctrl + shift + = 放大终端窗口的字体显示

ctrl + -*缩小终端窗口的字体显示

用户管理

用户

sudo,表示以管理员身份运行

添加用户 useradd

1
2
useradd -m test1
useradd -m -g test1 xiaoming

参数

-m/home下添加用户目录

-g 指定用户所在的组,否则会建立在一个同名的组

修改用户密码 passwd

1
passwd test1

删除用户 userdel

1
userdel test1

参数

-r 自动删除用户家目录

  • 1.在登录系统时,默认不允许以root用户登录
  • 2.只有特殊的用户,才能执行sudo

Linux下,把能执行sudo命令的用户叫sudoer

修改用户信息 usermod

用法

1
2
3
4
5
6
7
8
9
10
usermod [选项] 登录名

# 修改用户的主组(passwd 中的 GID)
usermod -g 组 用户名

# 修改用户的附加组
usermod -G 组 用户名

# 修改用户登录 Shell
usermod -s /bin/bash
  • 主组 通常在新建用户时指定,在etc/passwd4列**GID对应的组**
  • 附加组etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限

重新登录生效

选项

  • -c 用户说明:修改用户的说明信息,即修改 /etc/passwd文件目标用户信息的第5个字段;
  • -d 主目录:修改用户的主目录,即修改/etc/passwd文件中目标用户信息的第 6 个字段,需要注意的是,主目录必须写绝对路径;
  • -e 日期:修改用户的失效曰期,格式为YYYY-MM-DD,即修改 /etc/shadow 文件目标用户密码信息的第8个字段;
  • -g 组名:修改用户的初始组,即修改/etc/passwd文件目标用户信息的第 4 个字段(GID);
  • -u UID:修改用户的UID,即修改/etc/passwd文件目标用户信息的第 3 个字段(UID)
  • -G 组名:修改用户的附加组,其实就是把用户加入其他用户组,即修改/etc/group文件;
  • -l 用户名:修改用户名称;
  • -L:临时锁定用户(Lock)
  • -U:解锁用户(Unlock),和 -L 对应;
  • -s shell:修改用户的登录 Shell,默认是 /bin/bash

切换用户 su exit

1
2
3
4
5
6
切换至用户
su [用户名]
su - [用户名] # 可切换到此用户的工作目录

退出
exit

查看用户信息

命令 作用
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
2
useradd a1
useradd b1

一个root用户,两个普通用户a1,b1

默认地,会给a1用户建立一个同名的组a1,也就是说这个组里只有他一个人

程序与进程

程序Program:指一个程序文件,如notepad.exe

进程Process:当一个程序运行起来,在操作系统内创建一条记录,用于描述和控制他的运行

比如,打开多个notepad.exe,则得到多个进程

查看进程

1
2
ps -ef
ps -aux

其中,

a 显示终端上的所有进程,包括其他用户的进程

u 显示进程的详细状态

x 显示没有控制终端的进程

其中,各个字段的含义:

User:执行者

PID:进程ID

PPID:父进程ID

STIME:启动时间

CMD:启动时调用的命令行

按名称 查找某个进程

1
ps -ef | grep java

其中,将前者输出的信息,重定向给grep命令过滤处理

进程监视

top命令,相当于Windows的任务管理器

查看所有进程

1
top

区别于ps -eftop可动态查看

  • 按上下键翻阅
  • qCTRL+C中止退出

查看某个进程

1
top -p XXX

其中,XXX为目标进程的PID

所以,可以先用ps命令查找目标进程的PID

杀死进程

使用kill命令,杀死一个进程

1
kill -9 XXX

1
pkill name_of_progress

其中,XXX表示为PID

前台进程与后台进程

前台进程:运行在前台

后台进程:运行在后台

1
2
./run_Program run 以前台方式运行(Ctrl+C 中止)
./run_Program start 以后台方式运行

区别

1.有无控制台

前台进程:有控制台,输出至当前终端

后台进程:无控制台,看不到输出

2.有无父进程

前台进程:有父进程,父进程即为当前终端,当终端关闭时,前台进程被一同关闭

后台进程:父进程为系统进程(1号进程),当终端关闭时,后台进程不受影响

3.强行终止

前台进程:使用Ctrl+C强行终止

后台进程:使用kill -9 XXX强行终止

文件权限

文件的权限

  • owner 文件的属主 owner
  • r 文件是否可读 read
  • w 文件是否可写 write
  • x 文件是否可执行 excute

权限可分为三部分:自己|同组|别人

每三项为一组

例如:

1
2
3
r w x | r w x | r w x
r w x | r w x | r - -
r - - | - - - | - - -

在文件夹属性窗口里,文件|属性|权限 查看

修改文件权限

chmodchange file mode修改文件的访问权限

比如,一个文件simple.txt,想让别人也能修改

1
2
3
chmod o+w simple.txt
chmod o-w simple.txt
chmod -R 755 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
2
chmod +w simple.txt
chmod -w simple.txt

默认是修改自己和本组的权限

修改文件属主

chown,即change owner修改文件的属主

一般来说,每个用户只能操作自己的用户目录,所以chown命令并不常用

参数

-R 表示递归

示例

1.在/opt目录下简历一个文件夹test1

2.将/opt/test1目录分配给用户l

1
2
3
4
5
su root
mkdir /opt/test1
chown -R l /opt/test1
#查看
ls -l /opt/test1
  • 只有文件的ownerroot才有权更改属主

修改文件的属组

chgrpchange group修改文件的属组

参数

-R 表示递归

用法

1
chgrp -R 组名 文件/目录名

可执行脚本

脚本Script,一种解释执行的程序

Linux下常见的三种脚本程序

  • Shell脚本*.sh
  • Perl脚本*.pl
  • Python脚本*.py

脚本程序,本质是一个文本文件

1.它是一个文本文件

2.他具有可执行权限

脚本程序都是由解释器来执行的

  • Shell脚本解释器: /bin/sh
  • Perl脚本解释器: /bin.pl
  • Python脚本解释器: /bin.python3

执行一个脚本时,以下两种方式等效

1
2
3
./hello.py

/bin/python3 hello.py

Shell脚本

Shell脚本,按Shell的语法写出来的脚本,是Linux自带的脚本语言

相当于Windows下的DOS批处理脚本

1.编辑一个文本文件,保存为hello.sh

2.添加可执行权限

3.执行程序

1
2
3
4
5
6
#!/bin/sh
echo "hello,world"

chmod +x hello.sh

./hello.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
2
3
4
/usr/bin	#比如,/usr/bin/tar
/usr/sbin #比如,/usr/sbin/useradd
/usr/local/bin
/usr/loacl/sbin

其中,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
2
sudo ifconfig xxx up
sudo ifconfig xxx down

ping

一般用于检测当前计算机到目标计算机之间的网络是否通畅数值越大速度越慢

1
2
3
4
5
# 检测到目标主机是否正常连接
ping IP地址

# 检测本地网卡工作正常
ping 127.0.0.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
2
3
4
Host example
HostName IP地址
User 用户名
Port 端口

保存之后,就可以使用ssh example实现远程登录,scp同样可以使用

文本编辑(vim)

vi/vim,一个基于控制台的文本编辑器

gedit,一个基于GUI的文本编辑器

其中,vimvi的升级版

  • 若不存在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

其中,openjdkJDK的免费版本,推荐JDK8

环境变量

默认放在/usr/bin下,不需要额外设置PATH

  • 若放在自定义位置,需要设置PATH
1
export PATH=${PATH}:opt/jdk8/bin

运行

1
2
java -cp example.jar example.MainClass
java -jar your_program.jar
  • 权限问题

程序中 需要访问系统文件,如/etc/,须使用root运行

程序中 需要开启TCP端口,如80,须使用root运行

  • Java GUI的程序不能在终端里运行

Java启动脚本

  • 设置工作目录
  • 设置必要的环境变量
  • 设置JVM鱼腥参数
  • 运行程序

注意:需将脚本转换为UNIX风格