展示命令
操作命令
其他
ls
语法与示例
ls -lS按大小降序排列ls -lr按文件名降序ls -lrt按时间降序ls -lnt按时间升序ls -l | sort -k9按文件名升序(ls的默认输出方式)ls -l | sort -n -k5按大小升序ls -l | sort -rk9按文件名降序ls -l -d */只显示目录ls -l |grep -v "^d"只显示文件-l列出长数据串,包含文件的属性与权限数据等-a列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)-d仅列出目录本身,而不是列出目录的文件数据-h将文件容量以较易读的方式(GB,kB等)列出来-R连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
ps
ps 命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用 ps 命令了。
语法格式
直接使用 ps,会展示出 PID(进程ID)、TTY(终端名称)、TIME(进程执行时间)、CMD(该进程的命令行输入)四列数据。
-e显示所有进程。-f全格式。-h不显示标题。-l长格式。-w宽输出。a显示终端上的所有进程,包括其他用户的进程。r只显示正在运行的进程。x显示没有控制终端的进程。uuser用户名
比较常使用的是ps aux『查看系统所有的进程数据』 和 ps -ef
awk
语法格式
awk 基本语法是 awk [-F field-separator] 'commands' input-file(s)
其中 command 是实际的命令,[-F 分隔符]是可选项,input-file(s) 是待处理文件。
awk 分析文件的时候,文件的每一行被分隔符分开的每一项称为一个域,默认分隔符是空格。
其中的$1..$n表示第几个行(域)。注$0表示整个行(所有域)
示例
awk '{print $1, $4}' test.txt显示 test.txt 文件里第一列和第四列的所有数据awk '$1=="apple" && $2=="music"' name1.txt输出第一列是 apple,第二列是 music 的行(这种表现形式类似于 if 语句)awk '$1=="apple" {print $2}' name1.txt输出第一列是 apple 的第二列所有数据
ack
ack 是一个搜索工具,于 grep 类似,作者的主要目的就是为了取代 grep
安装与语法示例
- ubuntu 通过
sudo apt-get install ack进行安装
ack 默认搜索当前目录
ack -l keyword只显示文件名ack -i keyword忽略大小写ack -w keyword强制要求 PATTERN 匹配整个单词ack -f filename查找全匹配文件ack -g filename查找正则匹配文件ack-grep --line=1输出所有文件第二行ack-grep -l 'test'包含的文件名ack-grep -L 'test'非包含文件名
find
使用格式
- find <指定目录> <指定条件> <指定动作>指定动作>指定条件>指定目录>
示例
-mtime nn 为数字,意思为在 n 天之前的“一天内”被更改过的文件-mtime +n列出在 n 天之前(不含n天本身)被更改过的文件名-mtime -n列出在 n 天之内(含n天本身)被更改过的文件名find /root -mtime 0在当前目录下查找今天之内有改动的文件-user name列出文件所有者为 name 的文件-group name列出文件所属用户组为 name 的文件-uid n列出文件所有者为用户ID 为 n 的文件-gid n列出文件所属用户组为用户组ID 为 n 的文件find /home/test -user test在目录 /home/test 中找出所有者为 test 的文件-name filename找出文件名为 filename 的文件-perm mode查找文件权限刚好等于 mode 的文件,mode 用数字表示,如0755-perm -mode查找文件权限必须要全部包括 mode 权限的文件,mode 用数字表示-perm +mode查找文件权限包含任一 mode 的权限的文件,mode 用数字表示find . -name 'my*'搜索当前目录(含子目录)中,所有文件名以my开头的文件find / -name passwd查找文件名为 passwd 的文件find . -perm 0755查找当前目录(含子目录)中文件权限的0755的文件find . -size +12k查找当前目录(含子目录)中大于12KB的文件,注意 c 表示 byte
grep
cat name.txt | grep -f name1.txt从 name1.txt 读取内容,在 name.txt 中进行匹配cat name.txt | grep -nf name1.txt从 name1.txt 读取内容,在 name.txt 中进行匹配,得出的结果中显示行号。ps -ef | grep mysql查找指定的进程ps -ef | grep mysql -c制定进程的个数grep 'apple' name.txt在文件中搜索关键字grep 'apple' name1.txt name.txt多个文件中搜索关键字cat name.txt | grep ^a找出文件中 a 开头的行cat name.txt | grep ^[^a]找出文件中不是 a 开头的行cat name.txt | grep app&找出以 app 开头的行内容cat name.txt | grep -E ‘pl|pp’找出包含 pl 或 pp 的内容行
硬盘相关
- df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 8.0G 30G 22% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 409M 3.5G 11% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vdb 296G 47G 234G 17% /data
tmpfs 783M 0 783M 0% /run/user/0
tmpfs 783M 0 783M 0% /run/user/1003
- fdisk -l 获得机器中所有的硬盘的分区
Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 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
Disk label type: dos
Disk identifier: 0x000c5e30
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 104857599 52427776 83 Linux
Disk /dev/vdb: 536.9 GB, 536870912000 bytes, 1048576000 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
- du -h –max-depth=1 查找占空间最大的文件与目录,深度为1
16K ./lost+found
108K ./htdocs
2.0G ./bin
2.0G .
crontab
语法格式
crontab [ -u user ] [ -i ] { -e | -l | -r } file
- -u user用于设定某个用户的 crontab 服务
- file: file 为命令文件名,表示将 file 作为 crontab 的任务列表文件并载入crontab
- -e 编辑某个用户的 crontab 文件内容,如不指定用户则表示当前用户
- -l 显示某个用户的 crontab 文件内容,如不指定用户则表示当前用户
- -r 从 /var/spool/cron 目录中删除某个用户的 crontab 文件
- -i 若目标文件已经存在删除用户的 crontab 文件时给确认提示
示例
| 分 | 时 | 日 | 月 | 星期几 | 年 | |
|---|---|---|---|---|---|---|
| 取值范围 | 0-59 | 0-23 | 1-31 | 1-12 | 1-7 | 2019/2020/2021 |
* * * * * command每一分钟执行一次 command(因 cron 默认每1分钟扫描一次,因此全为*即可) 表达式中的星号,每一个星号代表一个域,一共有5或6个域,每个域的含义如下表所示3,15 * * * * command每小时的第3和第15分钟执行 command0 1 * * * root run-parts /etc/cron.hourly每小时执行 /etc/cron.hourly 目录内的脚本
软链接,硬链接
硬链接:作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止「误删」,理解成 copy。
软链接:软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件,在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
示例
ln f1 f2创建 f1 的一个硬链接文件 f2ln -s f1 f3创建 f1 的一个软链接文件 f3
环境变量
在操作系统中用来指定操作系统运行环境的一些参数,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还会到环境变量的指定的路径去找。用户通过设置环境变量,来更好的运行进程。
- env:env 命令用于列出所有的环境变量
- echo
$PATH:echo$PATH用于列出变量 PATH 的值,里面包含了已添加的目录
对于环境变量分为三种作用域
- 当前终端「终端所添加的环境变量是临时的,只适用于当前终端,关闭当前终端或在另一个终端中,添加的环境变量无效」
export PATH=/usr/local/mysql/bin
- 当前用户
vim ~/.bashrcexport PATH=/usr/local/mysql/binsource ~/.bashrc「使新增环境变量立刻生效」
- 所有用户
sudo vim /etc/profileexport PATH=/usr/local/mysql/binsource /etc/profile「使新增环境变量立刻生效」
cp
- -a 将文件的特性一起复制
- -p 连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
- -i 若目标文件已经存在时,在覆盖时会先询问操作的进行
- -r 递归持续复制,用于目录的复制行为
- -u 目标文件与源文件有差异时才会复制
示例
cp -a file1 file2 连同文件的所有特性把文件file1复制成文件file2
cp file1 file2 file3 dir 把文件file1、file2、file3复制到目录dir中
mv
- -f force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
- -i 若目标文件已经存在,就会询问是否覆盖
- -u 若目标文件已经存在,且比目标文件新,才会更新
mv file1 file2 file3 dir把文件file1、file2、file3移动到目录dir中mv file1 file2把文件file1重命名为file2
该命令可以把一个文件或多个文件一次移动一个文件夹中,但是最后一个目标文件一定要是目录
rm
- -f 就是force的意思,忽略不存在的文件,不会出现警告消息
- -i 互动模式,在删除前会询问用户是否操作
- -r 递归删除,最常用于目录删除,它是一个非常危险的参数
rm -i file删除文件file,在删除之前会询问是否进行该操作rm -fr dir强制删除目录dir中的所有文件
tar
该命令用于对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如 gzip 和 bzip 等)进行压缩和解压。
- -c 新建打包文件
- -t 查看打包文件的内容含有哪些文件名
- -x 解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
- -j 通过 bzip2 的支持进行压缩/解压缩
- -z 通过 gzip 的支持进行压缩/解压缩
- -v 在压缩/解压缩过程中,将正在处理的文件名显示出来
- -f filename filename为要处理的文件
- -C dir 指定压缩/解压缩的目录dir
示例
压缩 tar -jcv -f filename.tar.bz2 压缩的目录
查询 tar -jtv -f filename.tar.bz2
解压 tar -jxv -f filename.tar.bz2 -C 解压到的目录
zip, unzip
zip new my1*.txt将my1开头的文件名,txt格式的文件压缩成new.zip,压缩到当前目录下zip -d new.zip my18.txt总 new.zip 中把 my18.txt 删除zip -g new.zip test.txt将 test.txt 添加到 new.zip 中去。zip -u new.zip test*.txt如果 test 开头的文件中又的文件被更改过,那么这个命令会自动将修改的文件重新打包进 new.zip 中zip -r yasuo.zip abc.html dir1将 dir1 目录与abc.html 压缩到 yasuo.zip 中zip -qr test.zip /data/wms/wms_sync该目录下的所有文件和文件夹打包成test.zip q为安静模式,不显示压缩过程unzip -d /data test.zip将 test.zip 解压到 /data 的目录下unzip -n test.zip解压出来的文件不覆盖已存在的文件unzip -l test.zip查看 test.zip 里面包含的文件,并不进行解压。unzip -v test.zip检查压缩文件是否损坏zip -o test.zip -d /data将 test.zip 中解压到/data目录下
cat
cat text | less 查看text文件中的内容,这条命令也可以使用less text来代替
kill
kill命令用来终止程序,一般通过kill进程号的形式终止。
kill -signal PID 「signal的常用参数」:
- 1SIGHUP,启动被终止的进程
- 2SIGINT,相当于输入ctrl+c,中断一个程序的进行
- 9SIGKILL,强制中断一个进程的进行
- 15SIGTERM,以正常的结束进程方式来终止进程
- 17SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行
chmod
chmod 用来更改权限,涉及到所有者(user),组群(group),其他人(other),基础命令格式为 chmod [who] [+ | - | =] [mode] 文件名
- who
- u 表示
用户(user) - g 表示
同组(group)用户 - o 表示
其他(others)用户 - a 表示
所有(all)用户
- u 表示
+ | - | =+添加某个权限。-取消某个权限=赋予给定权限并取消其他所有权限
- mode
- r 可读,可用数字4代替
- w 可写,可用数字2代替
- x 可执行,可用数字1代替
示例
chmod u+r test.sh 针对 test.sh 增加user的读权限
chmod ug=rwx,o=x test.sh = chmod 771 test.sh
chmod a=rwx test.sh = chmod 777 test.sh
chmod -R 755 tools_command/ -R 表示递归操作
——
chown
更改文件的拥有者,语法为 chown user filename
示例
chown root test.md
chgrp
示例
chgrp mysqlgroup test.mdmysqlgroup 代表权限组
tail
查看内容的命令,方便快速查询大文件的收尾内容,通常用于查看日志内容,语法为tail[必要参数][选择参数][文件]
- -f 循环读取
- -q 不显示处理信息
- -v 显示详细的处理信息
- -c<数目> 显示的字节数数目>
- -n<行数> 显示行数行数>
示例
tail -n 5 2019-05-20.log显示文件末尾五行的内容,如果 5 变成 -5,就展示文件前五行的内容tail -n +5 2019-05-20.log从第五行开始展示文件内容
硬盘挂载
- 格式化硬盘
mkfs.ext4 /dev/vdb,/dev/vdb 为硬盘路径 - 挂在硬盘到 /data 路径下
mount /dev/vdb /data - 设置开机自动挂载
- 编辑
/etc/fstab文件 - 在文件最后一行添加
/dev/vdb /data ext4 defaults,noatime 0 0
- 编辑
硬盘挂在后,以前此路径的文件会找不到,但是没有消失,这时候需要解挂硬盘后即可恢复之前状态。
umount /dev/vdb /data
•