发行版:
常用目录简介:
各个发行版本的操作指令都大同小异,下面介绍一下Linux的常用指令。
关机重启:reboot、shutdown、init
reboot
重新启动操作系统
shutdown –r now
重新启动操作系统,shutdown会给别的用户提示,加-r
shutdown -h now
立刻关机,其中now相当于时间为0的状态
shutdown now
立刻关机
shutdown -h 20:25
系统在今天的20:25 会关机
shutdown -h +10
系统再过十分钟后自动关机
shutdown -c
取消之前的关机计划
clear 或 ctrl + l
ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
-a
列出目录下的所有文件,包括以. 开头的隐含文件。-d
将目录像文件一样显示,而不显示其下的文件。如:ls –d 指定目录-k
以k 字节的形式表示文件的大小。ls –alk 指定文件-l
列出文件的详细信息。-r
对目录反向排序。-t
以时间排序。-R
列出所有子目录下的文件。(递归)ls通配符的使用
*
代表文件名中所有字符ls te*
查找以te开头的文件ls *html
查找结尾为html的文件?
代表文件名中任意一个字符ls ?.c
只找第一个字符任意,后缀为.c的文件ls a.?
只找3个字符,前2字符为a.,最后一个字符任意的文件[]
将字符组括起来,表示可以匹配字符组中的任意一个。“-”
用于表示字符范围。[abc]
匹配a、b、c中的任意一个[a-f]
匹配从a到f范围内的的任意一个字符ls [a-f]*
找到从a到f范围内的的任意一个字符开头的文件ls a-f
查找文件名为a-f的文件,当“-”
处于方括号之外失去通配符的作用。\
如果要使通配符作为普通字符使用,可以在其前面加上转义字符。“?”
和“*”
处于方括号内时失去通配符的作用。ls \*a
查找文件名为*a的文件显示用户当前所在的目录:
pwd
cd 目录名
功能: 将当前工作目录改变到指定的目录下。
cd ..
: 返回上级目录
cd ~或者 cd
:进入用户家目录
cd -
:返回最近访问目录
几个特殊的目录:
/
称为根目录
.
称为当前目录
..
称为当前目录的上级目录
绝对路径和相对路径
/usr/share/tomcat/logs/
以根目录开头的, 称为绝对路径../logs
以.
或者..
开头的, 称为相对路径使用tab 键补全
所有的Linux 命令, 都可以使用tab 键来尝试补全。
使用ctrl + c 重新输入
如果命令或者目录敲错了, 可以ctrl + c
取消当前的命令,重起一行输入。
.
开头的文件为隐藏文件touch [选项]... 文件...
功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
mkdir [选项] 目录名
功能:在当前目录下创建目录
-p
连续创建多个目录
mkdir –p a/b/c
rm [-f-i-r-v] [dirName/dir]
功能:删除文件或目录
常用选项:
复制文件:
cp [选项] 源文件 目标文件
复制目录:
cp -r 源目录 目标目录
常用选项:
-f
强行复制文件或目录-i
覆盖文件之前先询问用户-r
若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。-R
递归处理,将指定目录下的文件及子目录一并处理-v
显示拷贝进度-a
该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。 mv [选项] 源文件 目标文件
功能:移动文件(目录)或者目录(文件),重命名(同一目录下移动)。
常用选项
-f
:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖.-i
:若目标文件(destination) 已经存在时,就会询问是否覆盖.tree [目录名]
功能:以树状图列出文件目录结构
tree -d
:只显示目录
Linux链接文件类似于Windows下的快捷方式。链接文件分为软链接和硬链接。linux中文件名和文件数据是分开保存的。在Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。
注意:
硬链接数:有多少种方式可以访问到当前目录/文件。如:绝对路径 cd . cd …
ln 源文件 链接文件 (硬链接)
ln -s 源文件 链接文件 (软链接)
cat [选项] [文件]
功能:查看目标文件的内容
常用选项:
cat -b
显示内容时对非空输出行编号cat -n
对输出的所有行编号按空格翻页,不能向上翻页,可以显示阅读进度。
more 文件名
功能:分屏显示文件内容(文件内容较多时用more)
less和more类似,可以上下翻页。
less [参数]
功能:查看文件内容. 不会立刻把所有文件内容加载到内存中. 也能进行查找.
常用选项:
j k 或者 方向键
: 向上向下滚动屏幕.N
显示每行的行号/
字符串:向下搜索“字符串”的功能n
:重复前一个搜索(与 / 或 ? 有关)q
: 退出head [参数]... [文件]...
功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
选项:
-n<行数>
显示的行数tail [必要参数] [选择参数] [文件]
功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理,常用于查看日志文件。
选项:
-f
循环读取-n<行数>
显示行数举例:有一个文件共有100行内容,请取出第50行内容
方法1:
head -n50 test > tmp # 将前50行装入临时文件tmp
tail -n1 tmp # 得到test的中间行
方法2:
head -n50 test | tail -n1
Linux 的很多指令, 如cat head tail
等都是默认输出到"标准输出" 中, 也就是显示器上的. 可以通过>
这样的符号把本来要输出到标准输出上的内容写到特定文件中. 这样的操作称为"重定向"
重定向有三种方式:
(1) 标准输入重定向(<
)
先构造一个文件, 里面添加一些内容.
cat < test.txt
(2) 标准输出重定向(>
)
cat test.txt > test2.txt
(3) 标准错误重定向(2>
), 注意2 和> 之间不能有空格.
尝试删除一个不存在的文件
输出结果rm: cannot remove ‘aaa’: No such file or directory
重定向到test.txt 文件中.
rm aaa 2> test.txt
标准输入, 标准输出, 标准错误是三个特殊的文件, 每个进程在启动的时候都会默认打开.
在Java 中, 分别对应到System.in , System.out , System.err
追加重定向:
>
和>>
把将要在终端显示的内容输出到文件中
>
:表示输出,会覆盖文件原有的内容>>
:表示追加,会将内容追加到已有文件的末尾echo
功能:将输入的的内容显示在终端
echo hello >> hello.txt
管道是一种古老的"进程间通信" 方式. 将前一个指令标准输出的内容, 作为第二个指令的标准输入内容.
例:
ls -lha | more
ls -lha | grep Do
管道和重定向原理类似,每一个进程都有System.in,System.out,System.err:
date 指定格式显示时间:date +%Y:%m:%d
date 用法:date [OPTION]... [+FORMAT]
(1) 在显示方面,使用者可以设定格式,格式设定为一个加号后接数个标记
%H
: 小时(00…23)%M
: 分钟(00…59)%S
: 秒(00…61)%X
: 相当于%H:%M:%S%d
: 日(01…31)%m
: 月份(01…12)%Y
: 完整年份(0000…9999)%F
: 相当于%Y-%m-%d(2) 时间戳获取
时间转换为时间戳:date +%s
结果:1589512791
时间戳转换为时间:date -d@1589512791
时间戳(Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
date
#查看系统时间
cal -y
#calendar查看日历, -y 选项可以查看一年的日历
find 路径 -name
find ./ -name test.sh
查找当前目录下所有名为test.sh的文件
find ./ -name '*.sh'
查找当前目录下所有后缀为.sh的文件
find ./ -name "[A-Z]*"
查找当前目录下所有以大写字母开头的文件
find /tmp -size 2M
查找在/tmp 目录下等于2M的文件
find /tmp -size +2M
查找在/tmp 目录下大于2M的文件
find /tmp -size -2M
查找在/tmp 目录下小于2M的文件
find ./ -size +4k -size -5M
查找当前目录下大于4k,小于5M的文件
find ./ -perm 777
查找当前目录下权限为 777 的文件或目录
grep [-选项] ‘搜索内容串’文件名
在grep命令中输入字符串参数时,最好引号或双引号括起来。
grep -n
:显示匹配行及行号
grep -v
:显示不包含匹配文本的所有行
grep -i
: 查找时忽略大小写
示例:
grep as 1123.txt
:查找1123文件中的as
grep “hello python” 123.txt
:查找内容多时用引号括起来
grep -n '^a' 1.txt
行首,搜寻以a开头的行
grep -n 'ke$' 1.txt
行尾,搜寻以Ke结束的行
grep -n '[Ss]igna[Ll]' 1.txt
匹配 [] 里中一系列字符中的一个
grep -n 'e.e' 1.txt
匹配一个非换行符的字符;
(1)which(查看执行命令所在的位置)
which ls
结果:/usr/bin/ls
(2)whereis ls
/etc/passwd
#用于保存用户信息的文件
/usr/bin/passwd
#用于修改用户密码的程序
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) #超级用户的一些管理程序(1) help
[command] --help
(2) man
man [选项] [command]
常用选项:
-k
根据关键字搜索联机帮助num
只在第num章节找man man
能够看到man 手册中的若干个章节及其含义空格键:显示手册的下一屏
Enter键:一次滚动手册页的一行
b:回滚一屏
f:前滚一屏
q:退出
(1)ps
ps aux | grep 8080 捕捉想看的进程信息
ps aux | grep tomcat
ps aux 查看进程的详细状况
ps au 比较常用
ps 只显示通过终端启动的程序
ps aux | less 按页显示内容
a
#显示终端上的所有进程,包括其他用户的进程u
#显示进程的详细信息x
#显示没有控制终端的进程,即所有进程,包括系统ps -eLf
可以查看父进程信息,推荐使用pstree来查看父进程
ps -ef | grep tomcat
(2) pstree
pstree [选项]
,可以更加直观的来看进程信息
(3) top
top
动态显示运行中的进程并且排序, q键退出
kill -9 进程代号
终止指定代号的进程,-9表示强制终止
top
top
free
或vmstat
iostat
netstat 查询端口号占用情况 .
示例
netstat -anp | grep xxx
netstat -nlpt | grep 3306 //netstat 查询端口号占用情况
假设Tomcat接收http请求的端口是8080,则可以使用netstat查看连接占用情况:
netstat -nat | grep 8080
(1) df
df [-ahikHTm] [目录或文件名]
#检查文件系统的磁盘空间占用情况
(2) du
du命令是对文件和目录磁盘使用的空间的查看.
du [-ahskm] 文件或目录名称
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h :以人们较易读的容量格式(G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与-s 有点差别。
-k :以KBytes 列出容量显示;
-m :以MBytes 列出容量显示;
进入根目录下,使用du -sh *
可以逐层查看哪个文件夹占用空间大。
du -sh *
(3) fdisk
fdisk -l
也可以查看磁盘信息
#查看磁盘总大小
fdisk -l |grep Disk
ifconfig
,它会显示所有网卡的信息:
ifconfig | grep inet
测试远程主机连通性:ping
通常用ping来检测网络是否正常.
127.0.0.1本地回环地址,测试本机网卡是否正常
ping IP地址
#检测目标主机是否连接正常
ping 127.0.0.1
#检测本地网卡是否工作正常
Linux 的磁盘挂载使用mount 命令,卸载使用umount 命令
(1)将/dev/hdc6 挂载到/mnt/hdc6 上面
mount /dev/hdc6 /mnt/hdc6
(2)卸载/dev/hdc6
umount /dev/hdc6
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息。
awk处理过程: 依次对每一行进行处理,然后输出
从字符串"you-me-he"中获取he:
echo "you-me-he" |awk -F '[-]' '{print $NF}'
输出:he
-F:指定分隔符
NF:字段数量
print $NF:即打印最后一行
// hello.sh
// hello,world,haha
awk -F '[,]' '{print $NF}' hello.sh
输出:haha
参考博客:awk命令详解
yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat,Centos
等发行版上。
Github 不只能用于分发程序, 也能管理源码并进行协同开发, 而yum 和maven 仅用于分发程序。
(1)查看软件包列表:yum list | grep [软件包关键字]
# 注意, 最好要加上grep, 否则罗列的内容会非常多, 导致机器很卡.
(2)安装软件包(需要管理员权限) yum install [软件包名字]
(3)卸载软件包(需要管理员权限)yum remove [软件包名字]
curl是一个命令行工具,通过指定的URL来上传或下载数据,并将数据展示出来。
curl 'http://...hellp.zip' -O down.zip
wget是Linux中的一个下载文件的工具
-O 文件名
将文档写入文件。
wget http://...hellp.zip -O down.zip
1). 打包压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...
2). 解包解压缩文件
tar -zxvf 打包文件.tar.gz
3). 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
文件压缩解压:zip、unzip
通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
压缩文件:zip [-r] 目标文件(没有扩展名) 源文件
解压文件:unzip -d 解压后目录文件 压缩文件
1)三种角色
u
g
o
2)文件类型
d:
文件夹
-:
普通文件
l:
软链接(类似Windows的快捷方式)
b:
块设备文件(例如硬盘、光驱等)
p:
管道文件
c:
字符设备文件(例如屏幕等串口设备)
s:
套接口文件
3)基本权限
r/4(110)
:Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。w/2(010)
:Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。x/1(001)
:execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。-
” 表示不具有该项权限ls -l
即可查看文件的权限信息:
drwxr-xr-x 2 root root 4096 May 14 21:17 mydownload
./01.java
1)修改文件9个属性
chmod [-R] xyz 文件或目录
递归 test 目录下所有文件加 777 权限:chmod -R 777 test/
+/-=权限字符
+
:向权限范围增加权限代号所表示的权限
-
:向权限范围取消权限代号所表示的权限
=
:向权限范围赋予权限代号所表示的权限
用户符号:
u
:拥有者
g
:拥有者同组用
o
:其它用户
a
:所有用户
实例:
chmod u+w /home/abc.txt
chmod 664 /home/abc.txt
2)修改文件属主,也可以同时更改文件属组
chown [–R] 属主名文件名
chown [-R] 属主名:属组名文件名
3)修改文件属组
chgrp [-R] 属组名文件名
Linux下有两种用户:
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
注意:
超级用户的命令提示符是“#
”,普通用户的命令提示符是“$
”。
useradd [用户名]
useradd -m -g 用户名
注意:
增加的用户信息可以在/etc/passwd
文件中查看
userdel -r 用户名
usermod
可以用来设置用户的主组/附加组和登录Shell。
主组:新建用户时用-g指定
附加组:用于指定用户的附加权限
usermod -g 组 用户名
#修改用户的主组
usermod -G 组 用户名
#修改用户的附加组
usermod -s /bin/bash 用户名
#修改用户登录的shell, dash(默认)或者bash(好用)
su [用户名]
要从root用户切换到普通用户user,则使用su user
。
要从普通用户user切换到root用户则使用su root
(root可以省略),此时系统会提示输入root用户的口令(密码).
sudo
:用来以其他身份执行命令,默认是root身份
exit
退出当前用户
超级用户root可以用passwd
为自己和其他用户指定口令,普通用户只能用修改自己的口令。
passwd 选项 [用户名]
注意
Linux在输入密码的时候, 在控制台中不会有提示.
添加组:groupadd 选项 组名
删除组:groupdel 组名
修改组: groupmod 选项 组名
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换
切换组:$ newgrp root
注意:
用户组信息都在/etc/group
文件中
id 用户名
#查看用户UID(/etc/passwd)和GID(/etc/group)信息
who
#查看当前所有登录的用户列表
whoami
#查看当前登录用户的账户名