Shell 基本命令 2
给朋友写的 Shell 入门心得
Linux 厉害在有很多好用的基本命令,可以快速开发,本着资源管理的角度,我们去看一下常用的命令,一般的资源管理,就是增删改查了。
文件管理
注:不包括文件权限管理
增
$ touch f1.txt # 创建一个空文件,如果文件已经存在,没有影响
$ echo "abc" >f2.txt # 把内容 abc 输出到文件 f2.txt,会覆盖原有内容
$ echo "abc" >>f3.txt # 把内容 abc 添加到文件 f3.txt 结尾
$ mkdir dir1 # 创建文件夹 dir1
$ vim f4.txt # 编辑文件 f4.txt, 若 f4.txt 不存在,保存后也会有新建的效果
删
$ rm f1.txt # 删除文件
$ rm -f f2.txt # 强制删除文件,没有确认步骤(适合做脚本)
$ rm -r dir1 # 删除文件夹及里面的所有内容
$ rm -rf dir2 # 强制删除文件夹及里面的所有内容,这也是段子里面经常会出出现的跑路命令。。。要注意:dir2 中的空格很危险,如果真的有空格,用双引号引用
$ rm -rf "/root/have a space/"
改
$ vim f1.txt # 编辑文件
$ mv from.txt to.txt # 移动文件(也可以用来重命名)
$ mv from.txt to_dir # 移动文件到文件夹
$ cp from.txt to.txt # 复制文件
$ mv from_dir to_dir # 移动文件夹,注意,若 to_dir 存在,会放到目录下,如果不存在,会移动后命名为 to_dir
$ cp -r from_dir to_dir # 拷贝文件夹
$ cp *.txt to_dir # 拷贝所有 txt 文件到文件夹
查
$ ls # 列出当前目录文件、文件夹
$ ls ~ # 列出用户目录文件、文件夹
$ ls -l # 具体信息,简写 ll
$ ls -al # 列出隐藏文件,并展示具体信息
$ find ~ -name abc.txt # 在目录 ~ 中找文件 abc.txt
$ find /root/mylog -name *.log
$ grep abc *.txt # 在所有 txt 文件中找含有 abc 的行
$ grep abc * -rI # 遍历当前目录及子目录下的非二进制文件,寻找含有 abc 的行
$ cat f1.txt # 查看文件内容
$ head f2.txt -n 100 # 查看文件前 100 行
$ tail f3.txt -n 100 # 查看文件最后 100 行
$ tail -f f4.log # 跟踪 f4.log 文件的输出,按 Ctrl-C 退出
$ less f5.txt # 查看文件,配合```Shift-G, Shift-F, gg, f, b```等命令非常好用,强烈推荐
进程管理
增
# 没什么好写的,说一句,Linux 的成功中的一点就是把进程的创建成本降到了很低的水平,善用进程
删
# 基本上都是使用 kill 命令来删除
# kill 命令实质上是像进程发送信号 HUP TERM 等
kill -9 12345 # 杀掉 pid (进程号)为 12345 的进程
查
$ ps -few # 查询所有进程(Linux 风格的参数),常配合 grep 寻找进程
$ ps aux # 查询所有进程(BSD 风格的参数)
$ top # 实时显示进程资源(CPU、内存等)占用,分别点(Shift-M,m,m,c 是按照内存排序,选择内存进度条风格,显示完整命令)
$ htop # top 的美化版本,推荐
$ iotop # 实时监控 IO 资源(网络IO、文件IO等)占用
$ pwdx 12345 # 插件进程的当前工作目录
网络管理
查
$ netstat -nap # 查看网络端口占用和连接情况,常配合 grep 查看端口号或者进程号
$ ifconfig # 查看所有网卡
$ hostname # 查看本机的 host
$ iptables # 这个命令特别diao,自己找文章
# 常见场景是消除所有 iptables 规则
iptables -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# 要监控流量的话可以考虑 zabbix 服务
# 也可以考虑 docker 方案
权限管理
简述:
- 文件的 user 和 group 决定了使用哪个用户和组的权限,每个用户/组的权限分为读、写、执行。
- 权限分为三部分,分别对应了用户、用户组、其他
$ ll
-rwxr-xr-x 1 root root 215081 Sep 24 23:19 abc.txt
# rw- r-- r-- 每三个一组,分别对应了用户,用户组,其他的权限
# root root 分别表示文件所属用户,所属用户组
查
$ ls -l abc.txt # 查看文件 abc.txt 的权限和用户、用户组
改
$ chmod +x abc.txt # 为文件添加执行权限,包括用户、用户组和其他
$ chmod u-w abc.txt # 禁止用户修改文件
$ chmod g+w abc.txt # 为用户组添加写权限
$ chmod o-x abc.txt # 其他(others)用户去掉执行权限
$ chmod +x dir1 -R # 为文件夹及其子文件夹中的文件添加执行权限
$ chown zxp dir2 -R # 修改文件夹的所属的用户
$ chown zxp:zxp abc.txt # 修改文件所属的用户和用户组