常见一级目录的作用:
/ 根目录
/bin 存放必要的命令
/sbin 存放系统管理程序
/boot 存放内核以及启动所需的文件等
/dev 存放设备文件
/etc 存放系统的配置文件
/home 用户文件的主目录,用户数据存放在其主目录中
/lib 存放必要的运行库
/mnt 存放临时的映射文件系统,我们常把软驱和光驱挂装在这里的floppy和cdrom子目录下。
/proc 存放存储进程和系统信息
/root 超级用户的主目录
/tmp 存放临时文件的目录
/usr 包含了一般不需要修改的应用程序,命令程序文件、程序库、手册和其它文档。
/var 包含系统产生的经常变化的文件
常用命令:
1. ls
-l : 查看详细信息, 权限
-h : 大小显示成M或者K。
-d:只显示目录 。ls -d /etc
-t: 按时间排序,倒叙排序
2. mkdir
-p : 递归建目录
3. cp
-a : 保持文件和复制的文件属性一模一样
4. locate: 文件搜索命令。比find快。locate test.txt, 只能通过文件名搜索。
5. whereis: 搜索系统命令所在位置。 whereis ls
6. which: 与whereis命令很相似,他也可以查看系统命令的别名。
7. find: 文件搜索命令。 find [搜索范围] [搜索条件]
find /root -name install.log find /root -name "install.log*" # *代表任意字符 find /root -iname install.log # 不区分大小写 find /root -nouser # 查找没有所有者的文件 # -10 -> 10天内修改文件 # 10 -> 第10天当天修改的文件 # +10 -> 10天前修改的文件 # atime -> 文件访问时间 # ctime -> 改变文件属性的时间 # mtime -> 修改文件时间 find /var/log -mtime +10 #查找10天前修改的文件 find . -size 25k # 查找文件大小是25k的文件, -25k是小于25K的文件,+25k是大于25K的文件 ,当然也可以查找M,G find . -inum 12345 # 查找inode节点为12345的文件 find /etc -size +20k -a -size -50k # -a 代表and find /etc -size +20k -o -size -50k # -o 代表 or find /etc -size +20k -o -size -50k -exec ls -lh {} ; # -exec {} ; 这三个为固定的使用形式,表示将前面find的结果在执行ls -lh命令。
8. grep: 字符串搜索命令
grep "size" install.log #在install.log文件中查找包含size的行
grep -v "size" install.log #在install.log文件中查找不包含size的行
9.zip/tar: 压缩解压缩命令。
zip test.zip test # zip 压缩文件名 源文件 zip -r test.zip test # zip -r 压缩文件名 源目录名 unzip test.zip # unzip 压缩文件 tar -cvf test.tar test # tar -cvf 打包文件名 源文件 tar -xvf test.tar # tar -xvf 解压缩
10. set: 查询linux系统下所有的变量,包括环境变量和自定义的变量。还有个命令叫env,这个只会查询环境变量
set -u: 执行这句话之后,调用未声明的变量会报错。
11. unset: 删除变量。 unset 变量名
12. ps: ps aux 或者ps -le 查看所有运行的进程
13. top:查看系统健康状态
14. kill -1 1234 ,平滑重启。 kill -9 1234, 强制终止。killall -9 httpd,
通过RPM安装的服务一般配置在:
/etc/init.d/:启动脚本位置
/etc/sysconfig: 初始化环境配置文件位置
/etc:配置文件位置
service httpd status
service httpd start/stop/status/restart
Shell:
linux命令解释器。
vi hello.sh #!/bin/bash #First Program echo -e "this is a test. hahaa" # -e 会将 输出 chmod +x hello.sh ./hello.sh
输入输出重定向:
/dev/stdin: 0 标准输入
/dev/stdout: 1 标准输出
/dev/stderr: 2 标准错误输出
命令 > 文件: 覆盖形式,文件不存在则创建
命令 >> 文件: 追加形式
错误命令 2>文件:覆盖形式
错误命令 2>>文件: 追加形式
命令 > 文件 2>&1: 已覆盖形式,把正确输出和错误输出都保存到一个文件中。
命令 >> 文件 2>&1: 以追加的方式,把正确输出和错误输出都保存到一个文件中。
命令 &>文件: 已覆盖形式,把正确输出和错误输出都保存到一个文件中。
命令 &>>文件: 以追加形式,把正确输出和错误输出都保存到一个文件中。
命令 >> 文件1 2>>文件2: 正确输出到文件1,错误输出文件2.
ls &>/dev/null : 垃圾站
管道符:
1.多命令顺序执行:
1) 命令1 ; 命令2 -> 表示多个命令顺序执行,命令之间没有任何逻辑联系
2) 命令1 && 命令2 -> 命令1正确执行才会执行2,命令1执行不正确,命令2不会执行
3) 命令1 || 命令2 -> 命令1执行不正确的时候才会执行命令2
ls && echo yes || echo no
2.管道符:
命令1 | 命令2:命令1的正确输出结果作为命令2的输入对象
netstat -an | grep ESTABLISHED
通配符:
1) ? ->匹配一个字符
2)* -> 匹配0个或多个任意字符,也就是可以匹配任何内容
3) [] -> 匹配中括号中的任意一个字符
4)[-] -> -代表一个范围。
5)[^] -> 表示不匹配括号中的任意一个字符
ls test*
bash中的其他特殊符号:
单引号: 单引号中的所有特殊字符都没有特殊含义,原样输出,比如 $ 和 `
双引号:双引号中的特殊符号都没有特殊含义,但是 $ , ` , 除外
反引号: 反引号括起来的是系统命令,在Bash中会先执行它,和$()命令一样,不过推荐使用$()
$(): 作用和反引号一样。
#: 代表组注释
$: 代表调用变量的值. $name , ${name}
: 转义符
Shell变量:
Bash中,变量的默认类型都是字符串类型。
1. 定义变量:变量名=变量值。等号左右两侧不能加空格,切记!
eg:
x="$x"456 #变量叠加
x=${x}456 #变量叠加
2. 设置环境变量:export 变量名=变量值
3. 位置参数变量
$0代表命令本神,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,比如${10}. eg: ./test.sh 1 2
$*代表所有的参数,将他们看为一个整体
$@也代表所有的参数,不过将他们区分对待
$#代表命令行中参数的个数
4.预定义变量:
$?代表上一条命令的返回值,正确执行的上一条命令返回值为0,不正确的返回非0
$$表示当前进程的PID
环境变量配置文件:
1. source 配置文件或者 . 配置文件
使用source可以不用重新登录。
2. 配置文件:
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bahsrc
/etc/bahsrc
正则表达式和通配符: 通配符用来匹配文件名,正则表达式用来匹配文本。
grep "a{3}u" a.txt
字符截取命令:
1. cut: -f 表示第几列,从1开始, -d代表分隔符,默认分割符为制表符。
grep "^user*" a.txt | cut -f 1 -d ":"
2. printf: 格式化输出命令
3. awk
4. sed: 字符替换命令。
sed '2,4d' a.txt #表示删除a.txt中第二行到第四行之间的数据,行数是从1开始。这个只是临时修改,并没有改变原文件。
sed '2c haa' a.txt # 表示将a.txt中的第二行替换为haa
sed '2s/70/100/g' a.txt # 表示将a.txt中第二行中的70替换为100
sed -i 's/70/100/g' a.txt # 表示将a.txt中所有的70替换为100,并将修改结果写回a.txt
Linux权限:
文件基本权限的修改:-rw-r--r-- u -g -o
chmod [选项] 模式 文件名
chmod u+x a.sh #给a.sh的所有者赋予执行权限
chmod g+w,o+w b.sh
chmod u=rwx,g=rw a.sh
chmod a=rwx a.sh
chmod 755 a.sh #7-rwx-u,5-rw-g
权限的作用:
1)对于文件:
r: 读取文件内容(cat more head tail)
w:编辑,新增,修改(vi echo), 但是不包含删除文件。
x: 可以执行文件(./s.sh)
对文件来说,最高权限为x
2)对于目录:
r: 可以查寻目录下的文件名(ls)
w: 具有修改目录结构的权限。比如新建文件和目录,删除此目录下的文件(touch rm mv cp)
x: 可以进去此目录(cd)
对于目录来说,最高权限为w
chown root:root a.txt