写本博客是为了巩固自己的基础加深记忆,为了以后忘记能够通过微博很快的查找Shell命令 。以下都是我从Ubuntu 和centOs版本的Linux系统收集过来的命令方式。两个版本命令会有稍许的差异,但大致命令都相同。在这里我就按照我收集的顺序整理这些命令,也就不细分那条命令是那个系统版本的了。
本人是新手,如有问题可以留言我会及时做出改正
帮助管理
通配符共有三个:
"*'、"?“、”[]“
帮助命令 man 在帮助界面上下移动 J、K快捷键 空格键向下翻页 Q键退出帮助(此帮助文档数量庞大,而且都是英文)
示例:man ls
man [...]
帮助命令 --help
示例: cp --help
ls --help
zip --help ---(zip压缩包)
gz --help ---(gz压缩包)
目录文件管理
查看当前目录
示例:pwd
查看文件属性
示例:stat 文件名
显示当前目录下所有文件及目录,如果是空目录则什么也不显示
示例:ls
ls -a ---(列出隐藏文件)
ls -l ---(列出文件属性)
ls -la
创建目录
示例:mkdir 目录名称
mkdir 目录成名1 目录名称2
mkdir -p 目录名称01/目录名称02/目录名称03---(串行创建)
创建文件
示例:touch 文件名
touch 文件名1 文件名2
touch 文件名{1..100} --(创建100个文件)
关联文件(新文件名相当于 C++语言里面的引用。是另外一个对象的别名。里面做任何修改,这2个文件都是关联)
示例:ln 文件名 新文件名
.删除目录 (注意点* 删除目录都需要加 -r,因为-r是递归。删除整个目录则里面的子文件也是要删除的),切记在root根目录下千万不要 执行 rm -rf *.这是删除所有的命令。不然root根目录下的系统文件都被删除
示例:rm -r 目录名
rm -f 目录名
rm -i 目录名---(删除前提示)
rm -rf * --- (删除所有)
rm 文件名{1..100} ---(删除100个文件,注:删除的不是目录名)
重命名(相当于移动文位置)
示例:mv 文件名 新文件名
mv 文件名 目录名称/---(把文件名移到指定的目录名下)
mv -i 文件名 目录名称/ ---(提示是否有相同名称的文件,y 覆盖 n取消)
mv -b 文件名 目录名称/ ---(如果有同名文件,被覆盖的文件创建副本 以文件名~命名)
复制文件和目录
示例:cp 文件名 目录名称/
cp -i 文件 目录名称/ ---(提示是否有相同名称的文件,y 覆盖 n取消)
cp -b 文件名 目录名称/ ---(如果有同名文件,被覆盖的文件创建副本 以文件名~命名)
cp -r 目录名称 目录名称/---(复制目录需添加-r 因为目录下是可能有子文件的)
路径管理
去到上一级目录
示例:cd .. 或者 cd../../目录名称/
去到指定目录
示例:cd 目录名称1/目录名称2/
返回最后一次操作cd命令
示例:cd -
如果是对象是目录
r - 代表可以查看目录内的文件
w - 代表目录里可以创建或删除文件
x - 代表可以切换进目录
如果对象是文件
r - 代表可以读文件里面的内容
w - 代表可以修改文件里的内容
x - 代表可以执行文件
d rwx r-x — 这里需要分成4组来看 d代表是的目录没有d的是文件。第一个rwx 是 root对test目录具有读、写和执行的权限,第二个r - x 是 root组内其他用户对test目录具有读和执行权限。第三个 r - x 是 other其他所有用户对test目录没有任何权限。这些分别都是可以修改的。
chown修改属主和属组权限
示例:chown root:root 文件
chown -R root : root 目录名称 ---(为什么加 -R 就不多介绍了和之前一样)
chgrp 用于单独设置文件属组
示例:chgrp 777 server.out ---(777是用户名,因为用户名直接用的是我的名字,所有用777代替)
修改结果如下:
chmod 改变文件权限
示例:chmod u+x 文件名 -------------(添加用户文件权限 x)
chmod u-x 文件名 -------------(去掉用户文件权限 x)
chmod ug+w 文件名 -------------(添加用户组权限 w)
chmod ug-w 文件名 -------------(去掉用户组权限 w)
chmod u=rwx 文件名 -------------(设置文件名权限 rwx)
chmod ug=r 文件名 -------------(设置用户组权限 r)
chmod a+x 文件名 ----------- (设置所有的都有权限 x)--(a 代表英文: all)
chmod 755 文件名或者目录名 ------(以二进制的方式修改用户组权限 rwx r-x r-x) 举例 7转换二进制 111 等于rwx
acl 改变文件权限 – assecc control list (访问 控制 列表) -m 是modifier(修改的意思)
示例:getfacl test/ -------------(查看test目录拥有的acl权限)
setfacl -m u:user01:rwx test ------- (设置用户user01拥有test目录acl权限读、写、执行) -- (m代表英文:modify 修改的意思)
setfacl -x u:user01 test ------- (删除用户user01的acl权限)
setfacl -b test/ -------- (删除test目录上所有设置过的所有acl权限)
sudo 权限
visudo -----执行这个命令后会打开一个文本,然后在文本最后的一行输入以下内容
%用户名 localhost=执行命令的路径
给用户user01一个创建用户和删除用户的权限,进入文本后在文本的末尾行输入
%user01 localhost=/usr/sbin/useradd,/usr/sbin/userdel
给了权限的user01用户使用的方式:
sudo /user/sbin/useradd 用户名 --- (不可像root用户那样直接使用)
配合which命令使用—(查找命令路径)。
阅读文件的头部和尾部:head 和 tail
查看文本文件:cat 、more 和less*
cat 命令 ---- 用来一次性查看全部文件的内容,后跟文件名作为参数,也可以带上-n 显示每行的行号。
如果文件上达几十百页,不建议使用 cat.
more 命令 ---- 用来分页查看文本文件。空格翻页;回车向下滚动一行;Q键退出。
less 命令 ---- 更人性化的文本阅读工具
编辑器 vim
vim 是Unix 和Linux 上标配的编辑器,功能十分强大
示例:vim 文件名
*)插入模式 操作:输入字符,并可以按光标键移动输入字符位置
a -- 在光标后插入
i -- 在光标所在位置插入
o -- 在光标所在的位置的下一行插入
Esc -- 进入命令模式
: -- 进入命令模式
*)命令模式 执行除输入字符之外的所有操作,包括保存、搜索、移动光标等。
vim 启动默认是在命令模式,如果在标记模式,需要按Esc 切回命令模式。
可以使用光标键控制上下左右移动 或者 h、j、k、l移动
保存和退出
:w -- 保存文件
:q -- 退出文件
:wq -- 保存并退出文件
:q! -- 不保存并退出文件
:w filename -- 保存制动的文件名
*)搜索字符串 前提:必须切换到命令模式,然后输入反斜杠
/ 查找的字符串 -- 用于向下搜索一个字符串
?查找的字符串 -- 用于向上搜索一个字符串
*)如果需要启动或者关闭大小写敏感, 执行 (忽略或不忽略)
:set ignorecase 或者 :set noignorecase
*)替换字符串--前提:必须切换到命令模式
语法: :[range]s/pattern/string/[c、e、g、i]
这条命令将pattern所代表的字符串替换成 string。开头的range用于指定替换作用的范围,入"1,10" 表示从第一行到第10行,
"1,$“表示从第1行到最后一行,也就是全文。全文也可以用"%”表示。
c --- 每次替换前询问
e --- 不显示错误信息
g --- 替换一行中所有匹配项(这个选项通常需要使用)
i --- 不区分大小写
示列: 1,$ s/pattern/string/e
如果Windows 环境下的源码经常会有"~M“的字符,要清除可以使用下面命令.
示列: % s/~M$//g
*)删除、复制、粘贴-- 前提需要切换到命令模式
x --- 删除光标所在位置的字符
dd --- 删除光标所在的行,2dd ---表示删除2行
D --- 删除光标所在位置到行尾之间所有的字符
d --- 普遍意义的删除命令,和移动命令配合使用. -示列: dw表示删除光标所在位置到下一个单词词头之间所有的字符
yy --- 复制光标所在的行
y --- 普遍意义上的复制命令,和移动命令配合使用。示列:yw表示复制光标所在位置到下一个单词词头之间所有的字符
p --- 在光标所在位置粘贴最近复制 /删除的内容
*)撤销 和 重做 - 前提需要切换到命令模式
u --- 撤销一次操作
Ctrl +R ---- 重做被撤销的操作
fg ---- (编辑文本不小心按到Ctrl + z ,输入fg命令可以切换会文本)
查找和定位常用命令
find命令
示例:find 目录名称/ -name 文件名
常用参数
-type 查找时指定文件的类型,可使用参数如下
-atime n 查找最后一次使用在 n 天前的文件
-mtime n 查找最后一次修改在 n 天前的文件
b --- 设备文件 f --- 普通文件
c --- 字符设备文件 p --- 命名管道
d --- 目录文件 d --- 符号链接
示例: find 目录名称/ -f -name 文件名称
find 目录名称/ 3 -name 文件名称
find 目录名称/ 3 -name 文件名称
快速定位查找 locate命令
示例 : updatedb --- (更新缩影数据库,不更新有时候会差不到文件)
locate 文件名称
查找文件类容grep
示例:grep 字符串 目录文件名
grep wordl 目录名称/文件名
cat 文件名称 | grep 查找的字符
给命令起别名
alias 别名命令
示例:alias 别名 = ’命令‘
unalias 别名 --- (删除别名)
alias --- (查看所有别名)
重启 关机 退出
重启、关机命令
示例:shutdown -h now -(立刻关机)
shutdown -r now - (立刻重启)
init 0 - (关机)
init 6 - (重启)
用户管理
添加删除用户命令
示例:useradd 用户名 --- (添加用户名)
passwd 刚创建的用户名 --- (设置密码)
userdel -r 用户名
查看用户名
示例:id 用户名 --- (查看用户名)
cat /etc/passwd -- (查看所有用户名)
cat /etc/passwd | grep 用户名
查看历史输入命令行history
示例:history --- (查看历史输入的命令行)
!203 -- (执行历史命令行的第 203 行命令)
!h --- (执行历史命令行,最后一次执行已 h 开头的命令
清屏命令 clear
示例:clear --- (清屏)
压缩包
压缩包 ZIP
示例:zip -r Text.zip Text --- (把Text压缩成Text.zip包)
unzip Text.zip --- ( 解压Text.zip压缩包 )
unzip -l Text.zip --- (查看压缩包)
压缩包 GZ
示例:tar czf Text.tar.gz Text --- (把Text压缩成Text.tar.gz包. czf 译 create gz file)
tar xzf Text.tar.gz --- ( 解压Text.tar.gz压缩包 )
tar tf Text.tar.gz --- (查看压缩包)
网络设置 IP 和端口
ip设置 和查看
示例:ifconfig --- (查看IP)
ifconfig eth0
ifconfig lo
ifconfig eth0 192.168.0.105 --- ( 临时更改 IP )
示例:vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR = 192.168.0.105 --- (更改IP即可 ----永久更改IP)
端口号 — (配置文件家中,找到你要修改的配置文件程序)
示例:/etc/httpd/conf/httpd.conf --- 修改httpd.conf文件中的 Listen 8800 --(httpd的端口改为了8800)
netstat -tunpl --- (查看所有端口号)
netstat -tunpl | grep 软件名称 --- (查看软件名称的端口号)
服务进程
示例:ps -ef --- (查看所有进程)
ps -ef | grep 进程名称 ---(查看指定名称的进程)
pstree --- (进程树)
pstree -p --- (显示进程号)
pstree | grep 进程名 --- (查找进程名称)
pkill 进程名称 --- (杀掉进程)
安装、卸载软件
示例:apt -get install 软件名称 --- (安装)
sudo apt -get install 软件名称 --- (安装)
sudo apt -get autoremove 软件名称 --- (卸载软件)
防火墙
iptables
示例:iptables -L --- (查看防火墙)
iptables -F --- (清空)
service iptables save --- (保存)
selinux
示例:vi /etc/selinux/config
SELINUX = disabled
mount 挂载(映射)
示例:mount /dev/cdrom 空格 /media -- (记得虚拟机右下角的光盘电源要打开)
然后cd到根目录下的 media/CentOS --- (里面全都是开源的软件包)
df --- (查看挂载列表)
YUM使用 - 首先需要设置开机时就挂载(映射) ---- 在 /etc/rc.d.rc.local 文件内完成开机挂载
示例:mount /dev/cdrom 空格 /media -- (记得虚拟机右下角的光盘电源要打开)
cd /etc/yum.repos.d ------文件夹
然后删掉里面的CentOS-Base.repo ,因为我们rpm都在光盘里。所以不需要网络源
rm -rf CentOS-Base.repo
vi CentOS-Media.repo -- ( 打开光盘,把里面的 baseurl = file:///...修改成 baseurl= file:///media 因为光盘就
挂载这里的)
修改成 gpgcheck = 0 --- (是GPG验证是否开启的选项,1是开启,0是不开启)
修改成 enabled = 1 --- (1是开启,0是不开启)
保存退出
GPG是加密和数字签名的免费工具,大多用于加密信息的传递。除了仅用密码加密外,GPG最大的不同是提供了“公钥/私钥”对利 用一方 的“公钥”别人加密信息不再需要告诉密码,随时随地都能发送加密信息。
示例: yum -y install mysql* --- (安装所有的数据库)
yum -y remove mysql* --- (卸载所有的数据库)
yum list
*-解决rpm安装包的依赖性
which 查看命令文件所在的位置
示列:which useradd --- (查看执行添加用户的命令的位置)
top 实时观察进程、内存、CPU清空 — 每三秒左右跟新一次
示列:top
q 或者 Ctrl + c --- (两者都是退出top 实时观察)
1.top显示的 load average: 0.00, 0.00, 0.00这三组数据分别为 1分钟、5分钟、15分钟平均负载
2.top显示的 Cpu数据主要看空闲率的数值
3.top显示Mem:也是看空闲率的数值
uptime 命令 查看服务器工作时间
示列:uptime
检测安全指令
示列:who -- (查看在线用户详细信息,可以排除是否有其他人登录你的电脑)
last --- (获取最近系统的重要操作)
任务计划
一次性任务计划
示列:date --- (查看当前的时间)
at 18:15 --- (设置时间为18点15分),紧接着输入要执行的任务,输入完成后以Ctrl + d结束
atq --- (查看任务)
atrm --- 2 (删除 2 任务,后面跟任务号)
永久性任务计划
* * * * * 分时日月周 -- (每一个星号和分时日月周都有着对应关系)
00 03 * * * /目录/执行文件 ---- (每天3点执行一次任务)
*/5 * * * * /目录/执行文件 ---- (每隔5分钟执行一次任务)
59 23 * * 1-5 /目录/执行文件 --- (周一到周五的23点59分执行一次任务)
59 23 * * 1,3,5 /目录/执行文件 - (周一、周三、周五的23点59分执行一次任务)
示列:crontab -e --- (进入一个文本页面,输入你要执行的任务)
crontab -l --- (查看任务计划)
crontab -r --- (删除所有任务计划)
Shell脚本
每隔5分钟自动压缩tar.gz包
示例:#!/bin/bash -(语言解析)
注释: t 相当于变量名 ,date +%Y.%m.%d.%H.%M.%S 命令是获取当前的年月日时分秒
t=`date +%Y.%m.%d.%H.%M.%S` --- (注意点1:等于号后的引号是反引号,很容易犯错的点。注意点2:加号后面不要有空格)
f="打包名称-${t}.tar.gz" --- (这里需要的是双引号,因为单引号格式符 $ {t}内的 t 没办法解析.)
d="/目录01/目录02../文件或者目录名称"
tar czf $f $d &>/dev/unll---- (压缩tar.gz包.其中 &>/dev/null 是压缩不显示信息,为了不占用CPU资源)
*-可配合任务计划使用
*-自己亲自测试过,压缩tar.gz包或解压tar.gz包时会报:tar: Removing leading `/' from member names 问题。其原
因是tar默认为相对路径,使用绝对路径的话就回报这个错,可以使用-P参数(注意大写)解决这个问题就不会报错.
tar czPf... 和 tar xzPf...