shell 基本命令
shell 基本命令
CLI: 命令行界面(command line interface)
目录与文件
-
cd : 切换目录,单点符(.) 表示当前目录,双点符(…)表示当前目录的父目录
-
pwd : 查看当前工作目录
-
ls : 显示当前目录下的文件和目录
$ ls -a # 列出目录下的所有目录及文件(包括隐藏文件) $ ls -l # 列出目录和文件的详细信息(包括文件和目录的权限) total 20 drwxr-xr-x 2 yy yy 4096 Mar 12 20:38 d2 -rw-r--r-- 1 yy yy 61 Mar 13 01:11 test1.c # -用户-用户组-其他用户- $ ls -l my_script # 过滤单个文件 $ ls -l my_scr?pt # ?代表一个字符 $ ls -l my* # * 代表零或多个字符 $ ls -l my_scr[ai]pt # 元字符通配符,只匹配a,i两种字符 $ ls -l f[a-i]ll # 匹配某个范围 $ ls -l f[!a]ll # !排除不需要的内容
-
touch : 创建文件,文件大小是0为空文件
-
chmod :改变文件或目录权限
角色: u (user)用户(文件所有者) g (group)用户组(同一组中除了当前用户的其他用户) o (other)其他用户(其他用户组下的所有用户) a (all)所有用户 操作符: + 增加权限 - 撤销权限 = 设置权限 权限值: r 可读,权限值4 w 可写,权限值2 x 可执行,权限值1 - 无任何权限,权限值0 $ chmod u+r test.txt # 增加用户可读 $ chmod u-w test.txt # 撤销用户可写 $ chmod u=rw test.txt # 重置用户权限(可读可写) $ chmod u=- test.txt # 重置用户权限(无任何权限) $ chmod g=rw test.txt # 重置用户组权限(可读可写)
-
cp : 复制文件 (cp 源对象 目标对象)
-
ln : 链接文件
$ ln -s # 软链接:符号链接,一个实实在在的文件,指向存放在虚拟目录结构中某个地方的另一文件,这两个通过符号链接在一起的文件,彼此的内容并不相同。 $ ln # 硬链接:会创建独立的虚拟文件,包含原始文件的信息和位置,但从本质上是同一个文件。
-
mv : 重命名文件/移动文件
-
rm : 删除文件
-
rm -r : 递归删除目录 (-rf:无提示删除)
-
mkdir : 创建目录,若目录已存在,则会提示File exists,不会再创建
-
rmdir : 删除目录(只允许删除空目录)
-
rmdir -p : 递归删除路径中的所有空的父目录和子目录,显示详细删除过程, -v 如果非空则报错。
$ rmdir -p -v d3/d4/d5 rmdir: removing directory, 'd3/d4/d5' rmdir: removing directory, 'd3/d4' rmdir: removing directory, 'd3'
-
tree : 显示目录层级结构
-
file : 查看文件类型
-
cat : 查看整个文件(-n 查看行号)
-
more : 分页查看文件
-
less : 一次查看一屏
-
tail : 默认查看文件后10行
# -n 指查看文件后3行数 $ tail -n 3 logname.log # 查看实时日志文件(默认查看最后十行,但是是动态刷新的) $ tail -f logname.log
-
head : 默认查看文件头10行 (-n 指定行数)
处理数据文件
-
sort : 将文件内容排序,默认按照字符
-n : 按照数字进行识别,按值排序 -M : 识别三字符的月份名,按照月份进行排序 -t : 指定字段分隔符 -k : 指定排序的字段
-
grep : 搜索数据
-v : 反向搜索,输出不匹配该模式的行 -n : 显示行号, 输出包含某个关键词的行和行号 -c : 显示多少行含有匹配的模式 -l : 输出包含某个关键词的文件名,不输出具体的行 -e : 指定多个匹配模式 [] : 可使用正则表达式来匹配模式,比如grep [tf] # 搜索 $ grep girl test*.c test1.c:yuanyuan is a good girl test2.c:yuanyuan is a pretty girl test3.c:yuanyuan is a girl and student # 显示行号 $ grep -n girl test*.c test1.c:1:yuanyuan is a good girl test2.c:1:yuanyuan is a pretty girl test3.c:1:yuanyuan is a girl and student # 反向搜索 $ grep -v girl test*.c test1.c:hahhahah test2.c:yesyesyes!!! test3.c:she works hard # 输出包含关键词的数量 $ grep -c girl test*.c test1.c:1 test2.c:1 test3.c:1 # 查找空行数量 $ grep -c ^$ test1.c # 查找非空行的数量 $ grep -c ^[^$] test1.c # 输出包含某个关键词的文件名 $ grep -l girl test*.c test1.c test2.c test3.c # 输出两个文本中的相同内容 $ grep -f test1.c test2.c yuanyuan is a good girl # 输出两个文本中的不同内容 -vf $ grep -vf test2.c test1.c i'm test11111
-
echo命令 : 输出字符串或提取Shell变量的值
# 把字符串导入文件test中(源文件会被覆盖) $ echo "ooooooooo" > test.c # 用$来提取变量的值,再配合echo命令将变量值输出 $ echo $PATH /opt/jvm/jdk1.8.0_221/bin:/opt/jvm/jdk1.8.0_221/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
-
sed命令 : 处理编辑文本文件
# 截取指定时间段日志并输出到指定文件 $ sed -n '/2020-01-01 00:00:/,/2020-12-12 24:00:/p' xxx.log > xxx.txt -n:仅显示script处理后的结果。 p:print,打印输出。 注意:日期时间格式要和日志文件中的保持一致。
-
gzip : 压缩文件
-
gzcat : 查看压缩后的文件
-
gunzip : 解压文件
-
tar : 归档数据
-c : 创建一个tar归档文件 -v : 在处理时显示文件 -f : 输出结果到文件 -t : 列出已有的归档文件 -x : 提取归档文件 $ tar -cvf test.tar test/ test2/ # 创建来test.tar 文件,包含 test和 test2目录内容 $ tar -tf test.tar # 列出test.tar 的内容 $ tar -xvf test.tar # 提取test.tar 文件内容
系统管理
-
find命令 : 查找和搜索文件
# 列出当前目录下的所有文件和子文件 $ find . . ./d4 ./d2 ./d2/test1.c ./d2/test2.c ./test.c ./test5.c # 查看d2目录下所有后缀名为.c的文件 $ find ./d2 -name "*.c" ./d2/test1.c ./d2/test2.c # 找出d2目录下不为test1.c的文件(包括目录本身) $ find ./d2 ! -name "test1.c" ./d2 ./d2/test2.c
-
ps : 查看进程
$ ps -ef # 查看系统上所有进程 $ ps -l # 长模式,查看更多信息 $ ps -d # 指定屏幕刷新的延迟时间
-
top : 实时显示进程信息,默认10s更新一次
# top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析。 $ top Processes: 323 total, 2 running, 321 sleeping, 1358 threads 18:55:46 Load Avg: 1.36, 1.61, 1.62 CPU usage: 4.7% user, 4.7% sys, 91.84% idle SharedLibs: 155M resident, 46M data, 28M linkedit. MemRegions: 93635 total, 2540M resident, 78M private, 687M shared. PhysMem: 7933M used (2198M wired), 258M unused. VM: 1674G vsize, 1112M framework vsize, 25092448(0) swapins, 26273811(0) swapout Networks: packets: 6926277/8004M in, 5741131/2508M out. Disks: 5514267/162G read, 3415020/130G written. PID COMMAND %CPU TIME #TH #WQ #PORTS MEM PURG CMPRS PGRP 39081 top 3.1 00:00.48 1/1 0 23 3020K+ 0B 0B 39081 39062 bash 0.0 00:00.02 1 0 19 940K 0B 0B 39062 39061 login 0.0 00:00.04 2 1 30 1164K 0B 0B 39061 39060 iTerm2 0.0 00:00.02 2 1 30 2796K 0B 0B 39060 39058 iTerm2 16.2 00:01.63 10 4 310 42M- 2556K 0B 39058 39055 mdworker 0.0 00:00.07 3 1 51 3092K 0B 0B 39055 39054 mdworker 0.0 00:00.08 3 1 51 3108K 0B 0B 39054 39053 mdworker 0.0 00:00.07 3 1 51 3080K 0B 0B 39053 39051 CFNetworkAge 0.0 00:00.10 3 2 48 12M 0B 0B 39051 进程中: VIRT:所需的虚拟内存大小 RES:所用的实际物理内存大小 SHR:所用的共享内存大小 %CPU:所用的CPU的占比 %MEM:所用的物理内存的占比
-
kill : 通过 pid 结束进程
kill [PID] 可将指定的信号发送给相应的进程或工作。 kill命令默认使用信号为15,用于结束进程或工作。 如果进程或工作忽略此信号,则可以使用信号9,强制杀死进程或作业。 一般搭配ps和grep,根据文本搜索来查找出进程的PID号,然后再使用kill杀掉它。
-
killall : 通过进程名结束进程
监测磁盘空间
- mount : 查看当前系统上挂载的设备列表
- umount : 通过设备文件或者挂载点来卸载设备 (注意 没有字母n)
- df : 查看所有已挂载的磁盘空间
- du : 查看特定目录的磁盘使用情况(按文件、子目录、目录逐级向上)
-c : 显示所有已列出文件的总大小 -h : 按易读格式输出大小 (K、M、 G) -s : 显示每个输出参数的总计
网络通信
-
ssh命令 : 管理远程服务器
# 登录远程服务器 $ ssh [-p port] [远程主机] port是端口号,不指定的话默认为22,后面加上IP地址。 连接成功之后,就可以远程操控另外一台主机了,在它的目录下创建文件、修改文件等等。 Q: 如何免密登录? 在终端中执行ssh-****** 即可生成SSH钥匙,一路回车即可。 上传公钥到服务器。在终端中执行ssh-copy-id [-p port] [远程主机] 可以让远程服务器记住我们。
-
ping命令 : 测试主机间网络的连通性
# 测试主机与百度网站的连通性 $ ping www.baidu.com PING www.a.shifen.com (180.101.49.11): 56 data bytes 64 bytes from 180.101.49.11: icmp_seq=0 ttl=51 time=10.711 ms 64 bytes from 180.101.49.11: icmp_seq=1 ttl=51 time=12.496 ms 64 bytes from 180.101.49.11: icmp_seq=2 ttl=51 time=12.194 ms 64 bytes from 180.101.49.11: icmp_seq=3 ttl=51 time=10.880 ms 64 bytes from 180.101.49.11: icmp_seq=4 ttl=51 time=10.588 ms
-
ifconfig命令 : 显示和配置网络设备信息
# 显示网络设备信息 $ ipconfig # 配置IP地址 ifconfig eth0 192.168.1.56 //给eth0网卡配置IP地址 ifconfig eth0 192.168.1.56 netmask 255.255.255.0 // 给eth0网卡配置IP地址,并加上子掩码 ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255// 给eth0网卡配置IP地址,加上子掩码,加上个广播地址
-
hostname命令 : 显示系统的主机名
# 显示主机的IP地址 $ hostname -I 127.0.1.1 # 显示主机名 $ hostname ubuntu
上一篇: 记录一次迁移达梦数据库(二)
推荐阅读
-
PHP中如何实现常用邮箱的基本判断_PHP
-
MySQL数据库与表的最基本命令大盘点_MySQL
-
javascript - 网页中的 shell 是真 shell 还是其他?
-
请给出如下格式的date命令 例:11-02-26.再给出实现按周输出 比如:周六输出为6,请分别给出命令。
-
Oracle sqlplus命令详解
-
linux中添加快捷命令
-
在Windows的命令行下启动服务_MySQL
-
MySQL之终端Terminal(dos界面)管理数据库、数据表、数据的基本操作_MySQL
-
Linux系统中用于复制的cp和scp命令使用解析
-
Linux中df命令查询磁盘信息和fdisk命令分区的用法