Linux常用命令总结:(Ubuntu)
1.shell
通过Ctrl+Alt+T进入shell页面。
1.shell提示符的格式:
用户名@主机名:目录名$
username@hostname:direction$
如果用户是root,则$变为#。
目录,根目录是/
,用户主目录是~
。
2.命令格式:
command[option][arguments]
3.快捷方式:
上下方向键:调阅命令历史记录。
Tab键:补全:在输入命令的时刻可以按下Tab键,使系统补齐已经输入的命令。
查阅命令:在命令行下,输入命令开头的字母,连续按两次Tab键,就可以列出所有以该字母开头的命令。
2.帮助命令
man
:查看man手册,如man ls
info
:查看info手册,如info ls
--help
:命令后加此参数,如ls --help
3.目录
1.Linux目录:
Linux中只有一个根目录,不像Windows有盘符的概念。
.
代表该目录自己,..
代表该目录的根目录。对于根目录,这两个都代表自己。
用户在刚登录到系统中时,工作目录就为该用户主目录,用户可以通过cd ~
访问自己的主目录。
2.路径
文件的路径包括绝对路径和相对路径。绝对路径是从根开始的路径,也是完全路径。
相对路径随着用户工作目录的变化而不断变化。
4.ls显示目录内容
类似于DOS下的dir
命令。
1.ls显示结果:
蓝色一般表示目录,绿色是可执行文件,褐色是压缩文件,浅蓝色是链接文件。
2.ls -l详解:
drwxr-xr-x 4 new new 4096 Aug 28 01:35 Desktop
1.第一个字母,-
普通文件,d
目录,l
符号链接,b
块设备硬件,c
字符设备硬件。
2.后9个字符,表示文件的访问权限,分为3组,每组3位。
第一组表示文件属主的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。
3.r
读,w
写,x
执行。x
对于目录表示进入权限。
4.数字表示引用计数,对于文件来说,表示硬链接数。
5.后面两个字符串表示所有者和所属组,一般情况下相同。
6.接下来是大小,创建时间和文件名。
为简化权限的表达,对表示权限的字母进行赋值,r
为4,w
为2,x
为1。如果是rwx
,则可以将其权限写为7。
3.ls其它常用命令:
ls -a
列出所有文件,包含隐含文件
ls -al
在上述基础上,一个文件的信息占一行
ls -d
显示本文件夹,即.
ls -dl
显示本文件夹的属性
ls -R
递归显示子目录的文件
ls /home/hxy
查看hxy
文件中的信息
5.cd 和 pwd 进入和查看目录
cd ..
进入上一级目录
cd ~
进入主目录
pwd
显示当前目录
6.mv移动和修改文件名
mv a.c b.c
重命名文件
重命名目录
mv b.c ../test2
移动文件
移动目录
7.cp命令 拷贝文件
拷贝文件到另一个文件夹中:cp a.c ../test1
将指定文件拷贝到当前目录下:cp ../test1 .
只有加上cd -a
和cd -R
才可以用于拷贝目录。如果不加,则会报错。
两者的区别是,cd -R
拷贝的是最新的目录,而cd -a
拷贝出来的不一定是最新的。
8.mkdir创建目录
mkdir [选项] dirname
要求:创建目录的用户在当前目录中具有写权限,并且dirname不能是当前目录中已有的目录或文件名称。
选项中-m
对新建目录设置存取权限,也可以用chmod
设置。如:mkdir -m777 abc
-p
后加路径,即使路径中的某些目录尚不存在,加上此选项后,系统可以自动创建尚不存在的目录。相当于一次可以建立多个目录。如mkdir -p a/b/c
9.rm删除文件或目录
-r
递归删除,通常和d
结合,删除一个完整目录及子目录。
-i
删除一个文件
-f
不询问,直接删除
可以采用rm -ri
和rm -rf
等组合方式。
rmdir [选项] dirname
删除空目录,只能删除空目录
10.file及文件操作相关指令
file 目标文件
可以识别文件。最重要的是可以查可执行程序是哪一种CPU体系下编译,是静态编译还是动态编译。
1.显示文档内容
cat a.txt
显示文档中内容
cat -n a.txt
显示文档内容,且每行有标号
tac a.txt
倒序显示文档中内容
cat a.txt b.txt > c.txt
将a和b文档中的内容输出到c文档中,如果c文档不存在则创建,c文档中的原始内容会被覆盖。
2.按屏显示文档内容
使用more a.txt
,如果文档内容长度超过了终端的大小,不会一下子全部输出,而是输出一整屏,通过敲回车阅读下面的内容。
而less a.txt
显示文档时,可以通过鼠标上下键来阅读内容。
more
和less
都可以采用:cat a.txt | more
这种方式使用。
3.以固定行数显示文档
head [-num] filename
显示文档的前num行。
tail [-num] filename
显示文档的尾num行。
如果不标注num的话,默认是10行。
4.创建新文件
touch a.txt
用于创建一个新文件。
如果文件已经存在,则改变文件的最后修改日期。
5.以输出行号的方式显示文件
nl filename
11.建立符号链接
ln
为某一个文件在另外一个位置建立一个符号链接,从而可以在不经过拷贝的情况下,在不同目录用到相同文件。
链接分为软链接和硬链接两种。
软链接带-s
参数,只在用户选定的位置生成文件的镜像,不会重复占用磁盘空间。常用。
硬链接不带参数,在用户选定的位置生成一个和源文件大小相同的文件,并增加链接数。rm会减少链接数,一个文件除非链接数为0,否则不会从文件系统中被物理地删除。不能对目录文件进行硬链接。
1.目录软链接:
ln -s /home/new/Desktop/test1 /home/new/Desktop/test2
,在test2中有一个指向test1的软链接,名为test1,目录格式。
new@ubuntu:~/Desktop/test2$ ls -l
total 0
lrwxrwxrwx 1 new new 23 Aug 28 09:08 test1 -> /home/new/Desktop/test1
ln -s /home/new/Desktop/test1 test2/test3
,在test2中有一个指向test1的软链接,名为test3,目录格式。
2.文件软链接:
ln -s /home/new/Desktop/test1/a.txt /home/new/Desktop/test2
,在test2中有一个指向a.txt的软链接,名为a.txt。注意前面的必须写绝对路径,后面要么写绝对路径,要么写相对路径并注意自己目前所处的目录,否则容易出现错误。
new@ubuntu:~/Desktop/test2$ ls -l
total 0
lrwxrwxrwx 1 new new 29 Aug 28 18:05 a.txt -> /home/new/Desktop/test1/a.txt
ln -s /home/new/Desktop/test1/a.txt test2/b.txt
,在test2中有一个指向a.txt的软链接。名为b.txt。
3.文件硬链接:
ln test1/a.txt test2
,在test2中出现了一个名为a.txt的文件,与原a.txt文件内容相同。
new@ubuntu:~/Desktop/test2$ ls -l
total 4
-rw-rw-r-- 3 new new 16 Aug 28 18:15 a.txt
ln test1/a.txt test2/b.txt
,在test2中出现了一个名为b.txt的文件,与原a.txt文件内容相同。
建立硬链接后对比文件信息:
前:-rw-rw-r-- 5 new new 16 Aug 28 18:15 a.txt
后:-rw-rw-r-- 6 new new 16 Aug 28 18:15 a.txt
多了一个链接。
建立软链接后链接数不变。
练习题:
创建一个文件a.txt,写入hello。在当前目录下建立软链接r.txt,硬链接y.txt。
删除a.txt后,r.txt打开后,直接打开内容为空,查看信息时r.txt颜色变成红色,cat r.txt
操作不成功。y.txt打开后,内容仍为hello。
新建一个a.txt,内容写入world,r.txt打开后,内容为world。y.txt打开后,内容仍为hello。
12.其它文件目录命令
1.echo显示字符串
echo [选项] [字符串/变量]
参数-n
表示输出字符串时不要换行
2.grep查找文件内容和命令
grep [关键字] [目录]
查找某个目录下包含关键字的文件。
关键字-r
不仅在当前目录查询,而且在子目录查询。
cat hello.c | grep "printf"
类似例子,通过管道过滤命令输出的结果。
管道,是linux中信息通道的重要方式,它是把一个程序的输出直接连接到另一个程序的输入,不经过任何中间文件。管道线是连接程序管道的通路。
例子:cat a.txt | grep happy
输出文件中的关键字所在行的内容
cat a.txt | wc -c
统计字节数,空格和回车键包含在内
cat a.txt | wc -l
统计行数
cat a.txt | wc -w
统计字数,每个字通过空格和回车键分割,特殊符号不能分割
cat a.txt | sort
排序字符信息
13.进程相关指令
1.ps显示进程列表
ps [选项]
显示当前系统中由该用户运行的进程列表。
-a
显示终端所有进程,包括其他用户的进程。
-u
查看进程所有者及详细信息。
-x
显示所有没有控制终端的进程。
-e
显示所有进程。
对于经过ps -u
之后的结果:
new@ubuntu:~$ ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
new 14142 0.0 0.2 24180 5028 pts/0 Ss 03:32 0:00 bash
new 14196 0.0 0.1 39104 3260 pts/0 R+ 03:36 0:00 ps -u
%CPU
指的是占用的CPU使用率。%MEM
指的是占用的记忆体使用率。
VSZ
占用的虚拟记忆体的大小。RSS
占用的记忆体的大小。
STAT
该进程的状态。START
进程开始时间。TIME
执行的时间。
pstree
列出当前的进程及其树状结构。
2.kill终止进程
kill PID 进程号
kill PID
终止进程
kill -9 PID
强制终止进程
3.top动态显示进程列表
top [-d delay]
参数表示屏幕信息刷新的时间间隔。
14.打包压缩
1.概念
Linux下打包是所有文件照原样合在一个tar文件里。
压缩需要另外的程序gzip, biz2,但是tar可以调用它们,一次性完成打包和压缩的功能。
.tar.gz 由tar程序打包,经过gzip程序压缩。
.tar.bz2由tar程序打包,经过bzip2程序压缩。
.bz2压缩率更高,.gz花费更少的时间。
2.打包和解包
-c
创建tar文件,-f
将文件打包生成到一个文件里,-x
对tar进行解包。
tar -cf new.tar ./home/hxy
tar -x new.tar
3.打包压缩解压
对于zip格式:
tar cvzf soft.tar.gz /home/hxy
tar xvzf soft.tar.gz
解压到当前目录
tar xvzf soft.tar.gz -C /home
解压到指定目录
对于biz2格式:
tar cvjf soft.tar.bz2 /home/hxy
tar xvjf soft.tar.bz2
解压到当前目录
tar xvjf soft.tar.bz2 -C/home
解压到指定目录
15.磁盘相关操作命令
1.fdisk查看硬盘分区情况
fdisk -l
查看硬盘分区。如果不是root账号,需要输入sudo fdisk -l
查看。
查看结果:
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xeb689ed0
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 37750783 37748736 18G 83 Linux
/dev/sda2 37752830 41940991 4188162 2G 5 Extended
/dev/sda5 37752832 41940991 4188160 2G 82 Linux swap / Solaris
2.mount和umount挂载和卸载磁盘
mount [选项] [类型] 设备文件名 挂载点目录
umount 挂载点目录
挂载的含义:linux将所有的设备都看作文件,将整个计算机的资源整合成一个大的目录。如果要访问设备上的文件,必须将所有的分区挂载到一个已经存在的目录上。然后通过这个目录来访问设备。
插入U盘,查看分区:
ew@ubuntu:~/Desktop/test3$ sudo fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xeb689ed0
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 37750783 37748736 18G 83 Linux
/dev/sda2 37752830 41940991 4188162 2G 5 Extended
/dev/sda5 37752832 41940991 4188160 2G 82 Linux swap / Solaris
Disk /dev/sdb: 3.8 GiB, 4026531840 bytes, 7864320 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8064 7864319 7856256 3.8G b W95 FAT32
可以发现多了一个分区。U盘插入后默认是存在/dev/sdb1
中。
通过mount可以实现U盘的挂载:
mkdir test3
sudo mount /dev/sdb1 test3 //需要有root权限
umount实现U盘的卸载:
sudo umount test3
-o options
主要用来描述设备或档案的挂接方式。常用参数:
loop
把一个文件当成硬盘分区挂接上系统,如加载ISO文件mount -o loop /abc.iso /mnt
ro
采用只读方式挂接设备
rw
采用读写方式挂接设备
16.查看磁盘文件位置
1.which查看可执行文件位置
which [文件]
在环境变量$PATH设置的目录里寻找符合条件的文件。
只能查找可执行文件。
一般只查询到第一个匹配的结果。如果将所有匹配的结果全部显示出来需要加上-a
参数。
2.whereis查看文件位置
whereis [文件]
不仅能够找到可执行的命令,而且可以找到帮助文档、源文件。
3.locate查看文件位置
whereis
为全匹配查找,locate
为局部匹配查找,会去文件的数据库内寻找符合条件的文件。
4.find在指定的目录中寻找文件
find [路径] [选项] [描述]
如果缺少路径则在当前目录下搜索。
参数:-name
支持通配符*和?
-user
用户名,搜索文件属主为用户名的文件。
-print
输出搜索结果并打印。
17.信息查看相关命令
1.dmesg显示开机信息
2.uptime显示关于系统相关的时间信息
new@ubuntu:~/Desktop$ uptime
05:02:13 up 3:52, 1 user, load average: 0.00, 0.07, 0.09
现在的时间,系统开机运转到现在经过的时间,连线者的使用数量,最近一分钟、五分钟和十五分钟的系统负载。
3.who查看当前系统用户
who [选项]
显示登陆用户、使用终端设备、登陆到系统的时间。
new tty7 2018-08-28 23:35 (:0)
whoami
只查看当前用户。
4.last
列出目前与过去登入系统的用户相关信息
5.其它
hostname 域名
cal 日历信息
date 时间及日期信息
18.软件包安装
网络安装比较常用:sudo apt-get install [文件名]
也可以通过su root
登录之后,去掉上面的sudo
后安装。