文件与目录操作
cd命令 切换目录
cd /home #切换到"/home"目录
cd .. #返回上一级目录
cd ../.. #返回上两级目录
cd - #返回上一次所在目录
test=/home
cd "$(test)" #cd命令可以将变量和命令的输出结果作为目录
pwd #查看当前所在目录
mkdir命令 创建目录
mkdir /test #在根目录下创建test目录
mkdir /test /test01 #可以创建多个,使用空格分隔
mkdir -p /test/name #-p 递归创建
mddir -m 755 /test #-m 设置权限
touch命令
touch test.txt #如果该文件不存在,则创建它
touch test.txt #如果文件存在,则更新访问和修改的时间戳
touch -m test.txt #-m 只更改修改时间
touch -a test.txt #-a 只更改访问时间
rm命令 删除文件或目录
rm filename #删除文件
rm -r directoryname #删除目录,-r 代表递归
rm -f filename # -f 代表强制删除
rm -v filename # -v 删除并显示进度
mv命令 移动或重命名
mv /test /home/ #将/test移动到/home/
mv -f /test /home/ #若/home/存在test,则不会询问,强制覆盖
mv /test /test01 #目标路径与当前路径一致,则可以重命名
cp命令 复制文件或目录
cp -rp /test /home/ #将/test复制到/home/并保留文件属性
#-r 递归复制目录及其子目录 #-p 保留文件属性
#-v 显示进度 #-a 复制文件目录及其内容,并保持文件属性
ls命令 查看目录中的文件或目录
ls /test #显示/test目录下的内容
ls -la /test #显示/test下所有文件的详细信息,包括隐藏文件
#-l 显示文件和目录详细资料 #-a 列出全部文件,包含隐藏文件
#-R 递归列出子目录的内容 #-t 按文件或目录最后修改时间排序
#-S 按文件或目录大小排序 #-h 以KB、MB、GB格式显示文件大小
#-r 逆序显示
cat、less、more
#查看文件内容
cat -n /test.txt #-n 显示行号(包括空行)
#-b 显示行号(不含空行)
#more命令
more -n /test.txt #q或Q退出
#空格键滚动下一页 #Enter键滚动一行
#-n 指定每页显示行数
#less命令
less /test.txt #上下箭头键或J和K键上下翻动
#-N 显示行号 #G跳转到文件末尾,g跳转到文件开头
#按q退出
#输入文本到/test.txt
cat > /test.txt #Crtl+D结束输入
cat echo "ftx" > /test.txt #将ftx输入到文本/test.txt
head -n 10 test.txt #显示前10行内容
tail -n 10 test.txt #显示文件最后10行
find命令
find / -name "test" #-name 按文件名搜索,查找/目录下所有test文件
find / -name "*.txt" #查找/目录下所有txt文件
find / -type d #-type 按文件类型搜索,搜索/目录下所有的目录
find / -size +1M #-size 按文件大小搜索,查找/目录下大于1M的文件
find / -user root #-user 按文件所有者搜索,查找/目录下属于root用户的文件
find / -mtime -7 #-mtime 按文件修改时间搜索,查找/目录下7天内修改过的文件
grep命令
#搜索test.txt和test01.txt中包含pattern的行并打印出来,可以搜索多个文件,用空格隔开
grep "pattern" test.txt
#-i 不区分大小写 #-n 显示匹配行的行号
#-v 显示不匹配的行 #-c 计算匹配的行数
#在test.txt中查找包含pattern的行,不分大小写并显示行号
grep -in "pattern" test.txt
#在目录中搜索包含pattern的行
grep -r "pattern" /test #-r或-R 在/test及其子目录递归搜索
#从命令输出中搜索
ps aux | grep httpd #显示包含httpd的输出
#使用正则表达式
#grep默认支持一些正则表达式,特殊字符使用时需要使用转义符\进行转义
#-E 选项代表使用扩展正则表达式,则不需要转义,例如{},|等,可以自己进行测试
grep [选项] 正则表达式 文件或目录
# [] 匹配集合字符,[]内的所有字符都看做单个字符进行匹配
"[irt]" #匹配包含i、r、t的所有行
"sh[io]rt" #匹配short和shirt两个字符串
#[] 也可设置字符范围
"[a-z]" #匹配a到z范围内任意一个小写字母
"[0-9]" #匹配0到9任意一个数字
#[^] 前面加上^表示否定
"[^2-9]" #匹配不是2-9范围数字的任意字符
# ^ 行首 . 匹配除换行符之外任意单个字符
# $ 行尾 \ 转义符,去除其后紧跟的元字符或通配符的特殊意义
"^the" #匹配以the开头的行
"ord$" #匹配以ord结尾的行
"ord.$" #匹配ord加上除了换行符外任意一个字符结尾的行
"ord\.$" #匹配以ord.结尾的行,这里把 . 转义为普通字符
#{n} n是一个非负整数,代表匹配n次,{}在基本正则表达式中要进行转义
"o{2}" #匹配“oo”,等同于"oo"
"fo{2}d" #匹配“food”
#{n,} n是一个非负整数,代表至少匹配n次
"o{3,}" #匹配3个o或更多的o,一个和两个则无法匹配
#{n,m} n和m均为非负整数,n<=m,代表最少匹配n次,最多m次
"o{1,4}" #代表最少匹配一个o,最多匹配4个o
# | #或者的意思,基本正则表达式中要进行转义
"is|for" #匹配包含is或for的行
# ? #匹配前面字符零次或一次
"o?n" #匹配on或n
# + #匹配至少一次,基本正则表达式中要进行转义
"n+" #匹配一个或更多n,等同于"n{1,}"
#更详细的可以在这一篇进行查看
http://t.csdnimg.cn/g9n70
chmod命令
# r 或 4 读权限 # u 用户(文件的所有者)
# w 或 2 写权限 # g 组(文件的所属组)
# x 或 1 执行权限 # a 所有(用户,组,其他)
# o 其他用户
chmod u+x /test #给文件所有者添加执行权限
chmod go-w /test #给文件所属组和其他用户删除写权限,
#所属组的组内所有用户都会删除对这个文件的写权限
chmod u=rx,go=r /test #设置文件所有者为读和执行权限,组和其他用户只有读权限
chmod 756 /test #第一个数字代表文件所有者有全部权限 7(4+2+1)
#第二个数字代表文件所属组有读和执行权限 5(4+1)
#第三个数字代表其他用户有读和写的权限 6(4+2
chown命令
chown zhangsan /test #更改文件所有者为zhangsan
chown zhangsan:root /test #更改文件所有者为zhangsan,所属组为root
chown -R zhangsan /test #-R 递归更改目录及其内容的所有者为zhangsan
chgrp命令
chgrp root /test #将/test所属用户组改为root组
chgrp -R root /test #-R 递归更改目录及其内容的组为root组
tar命令
#tar命令 压缩和解压缩
#将/test下的内容压缩在test.tar文件内 #-z 通过gzip进行压缩或解压缩
tar -zcf test.tar /test/ #-x 解压缩
#将test.tar解压缩 #-c 压缩
tar -zxf test.tar #-v 显示详细处理信息
系统命令
ifconfig命令
ifconfig #查看所有网络接口状态
ifconfig ens33 #查看当前主机IP
df命令
df -h #显示所有文件系统的磁盘空间使用情况
df /home #显示指定目录的文件系统信息
df -Th #显示所有文件系统的类型
df -i #显示每个文件系统的inode信息
df --total -h #显示所有文件系统的总使用情况
free命令
free [选项] #显示系统内存使用情况
#-b 以字节为单位显示内存信息
#-k 以KB为单位显示
#-m 以MB为单位
#-g 以GB为单位
hostname命令
hostname #显示系统主机名
hostname newhostname #设置新的主机名
hostname -i #显示当前主机所有IP地址
hostname -I #显示当前主机所有可用的IP地址
top命令
top #动态显示系统中各个任务的资源使用状况
top -d 2 #-d 指定top命令刷新间隔为2秒
ping命令
ping 192.168.221.130 #测试当前主机与192.168.221.130主机的网络连通性
ping baidu.com #这个通常测试当前主机有没有连网
ping -c 4 baidu.com #-c 指定发送的回声请求数量
ping -i 1 baidu.com #-i 指定回声发送间隔为1秒
ssh命令
主要用于远程连接和控制,具体请看另一篇
netstat命令
netstat #显示网络连接、路由表、接口统计等网络相关信息
netstat -a #-a 显示所有活动的网络连接和监听的端口
netstat -t #-t 仅显示TCP连接
netstat -u #-u 仅显示UDP连接
netstat -l #-l 仅显示正在监听的套接字
netstat -r #-r 显示路由表
netstat -i #-i 显示网络接口信息
useradd和passwd
useradd zhangsan #创建zhangsan用户
useradd -d /home/test zhangsan #-d 指定用户家目录为/home/test
useradd -u 12345 zhangsan #-u 指定用户的ID号
passwd zhangsan #修改密码
passwd -d zhangsan #-d 删除zhangsan密码
passwd -l zhangsan #-l 锁定用户
#-u 解锁用户
#使用--stdin选项可以不用从控制台输入,直接把123设置为密码
echo "123" | passwd --stdin zhangsan
history命令
history #显示历史命令列表
history -c #-c 清除当前 shell 会话的历史记录
history -d 100 #-d 删除历史命令列表第一百条命令
read命令
##读取用户使用键盘输入的数据,并赋值给变量
read context #将接下来输入的内容赋值给变量context
read conetext01 context02 #赋值多个变量,中间使用空格分隔,输入的内容也是用空格分隔
#常用选项
read -p "请输入内容" context #-p 可以输入提示内容
read -s -p "请输入密码" password #-s 输入的数据不会显示,一般用于输入密码
#-t 设置超时时间,超过5秒没有输入就会退出输入并返回一个非零退出状态
read -t 5 -s -p "请输入密码" password
#-n 读取指定的字符之后停止并退出输入,这里设置的是4个字符
read -n 4 -t 5 -p "请输入账号:" account
#-r read命令默认使用反斜杠转义,加上-r则不可以使用转义
read -r -n account
echo命令
#echo命令,用于在终端输出字符串或变量的值
echo "测试字符串"
# -n :echo默认在行尾添加换行符,此选项可以禁止这个行为
#编辑一个文本文件,随便写几行内容,查看输出内容
echo -n $(cat test.txt)
# -e :启用转义符
echo -e "你好\nftx" #这里使用\n换行
echo "你好\nftx"
#-E :禁用转义,echo默认是禁用的