根目录下的常用子目录作用
/ 虚拟目录的根目录
/bin 二进制目录,存放许多GNU用户级的工具
/boot 启动目录,存放启动文件
/dev 设备目录
/home 主目录,用户目录
/lib 库目录,存放系统和应用程序的库文件
/media 媒体目录,存放可移动媒体设备挂载点的地方
/mnt 挂载目录,另一个存放可移动媒体设备挂载点的地方
/opt 可选目录,通常用于存放可选的软件包
/root 根主目录
/sbin 系统二进制目录,存放许多GNU管理员级工具
/tmp 临时目录,可以在该目录中创建和删除临时工作文件
/usr 用户安装软件的目录
/var 可变目录,用以存放经常变化的文件,比如日志文件
/etc 配置目录
/etc/inittab 运行级配置
通用的Linux命令选项
-a 显示所有对象
-c 生成一个计数
-d 指定一个目录
-e 扩展一个对象
-f 指定读入数据的文件
-h 显示命令的帮助信息
-i 忽略文本大小写
-l 产生输出长格式版本
-n 使用非交互模式(批量)
-o 指定将所有输出重定向到输出文件
-q 以安静模式运行
-r 递归的处理目录
-s 以安静模式运行
-v 生成详细输出
-x 排除某个对象
-y 对所有问题回答yes
ls 浏览
cp复制
mv 移动,剪切
touch 创建文件
rm 删除文件
rmdir 删除目录
mkdir 创建目录
file 查看文件类型
stat 查看文件统计信息
cat 查看整个文件内容
cat -b 忽略空行显示行号
cat -n 显示所有行号
cat -E 显示行末$
more 逐步显示
less 逐步显示文件内容(适用于大文件查看)
tail 显示文件末尾 默认10行
/etc/passwd 所有用户信息
格式为 用户名:密码:用户ID:群组ID:用户全名:用户home目录:用户shell路径
~/.bashrc shell启动时当前自动加载
/etc/bashrc 所用用户公用文件
命令历史记录
在~/.bash_history中,预设1000条历史命令。正常退出shell时,在将命令保存在.bash_history文件中。
!命令:!! 执行上一条指令,!n执行命令历史中第n条指令,!命令名执行命令历史中最近一次匹配命令令。
alias [-p] [name[=value] ...] alias -p显示所有别名 unalias -a 取消所有别名
$PS1 控制默认命令行提示符
修改命令 PS1="XXXX"
\a 报警字符\d"日 月 年"
\e ASCII转义字符\h主机名
\H 完全限定域名\j当前管理的任务数
\l shell的终端设备名的基名\nASCII换行符
\r ASCII 回车符 \sshell的名称
\t 24时制HH:MM:SS\T12时制HH:MM:SS
\@ 12时制am/pm 格式\u当前用户名
\v bash shell 的版本\Vbash shell 的发行版本
\w 当前工作目录\W当前工作目录的基名
\! 这个命令在bash shell历史记录中的位置\#这个命令在当前命令行中的位置
\$ 普通用户下的美元符($),root下的(#)\nnn与8进制nnn对应的字符
\\ 反斜线\[开始一个控制字符序列
\] 开始一个控制字符序列
$PS2 控制后续命令行提示符
/etc/inittab 开机自启动的进程
/proc/meminfo 虚拟内存当前状态
ipcs -m 当前内存共享页面
ps 查看进程 具体命令行详细内容请打开
printenv 输出全局环境变量
set 输出局部环境变量
/etc/passwd 存储用户信息
/etc/shadow 存储密码信息
useradd 添加用户
userdel 删除用户
groupadd 添加群组
usermod 修改用户信息
passwd 修改用户密码
chpasswd 批量修改用户密码
chsh 用来快速修改默认的用户登录shell
chfn 提供在/etc/passwd 文件的备注字段中存储信息的标准方法
finger 简单查看Linux 系统上的用户信息
chage 设置用户的过期日期
chmod 改变权限
chown 改变所属关系
chgrp 改变默认属组
umask 默认权限
fdisk 管理存储设备分区
创建文件系统
mkefs 创建一个ext 文件系统
mke2fs 创建一个ext2文件系统
mkfs.ext3 创建一个ext3文件系统
mkfs.ext4 创建一个ext4文件系统
mkreiserfs 创建一个ReiserFS文件系统
jfs_mkfs 创建一个JFS文件系统
mkfs.xfs 创建一个XFS文件系统
fsck 检查和修复任意类型的Linux文件系统
pccreate 创建真实的物理卷
pvdiplay 显示已经创建的物理卷列表
vgcreate 创建卷组
lvcreate 创建逻辑卷
lvdisplay 显示已创建逻辑卷组
LVM
vgchang 激活和禁用卷组
vgremove 删除卷组
vgextent 将物理卷加到卷组中
lvexend 增加逻辑卷的大小
lvreduce 减小逻辑卷的大小
软件安装
下载包
解压 tar -zxvf *.tar.gz
./configure 配置sysstat和解决依赖关系
make 构建各种二进制文件 ,编译源码,创建链接
make install 重新安装到常用安装目录中
vim 常用快捷键
u 撤销当前命令
Ctrl + r 执行下一条命令,没有就不执行
r 单个字符替换
R 文本替换
x 删除光标所在字符
dd 剪切光标所在行
dw 剪切光标所在单词
d$ 剪切光标到文件末尾行
J 删除当前光标所在行行尾的换行符
p 粘贴到光标下一行
yw 复制单词
y$ 复制到行尾
num yy 向下复制num行
num cj 剪切从当前行到向下num 行
:s/old/new/g 替换一行
:n,ms/old/new/g 替换n-m行
:%s/old/new/g 替换所有
:%s/old/new/gc 替换所有每次出现时提示
Ctrl F 下翻一个屏幕
Ctrl B 上翻一个屏幕
G 移到最后一行
gg 移到第一行
num G 跳转到第num行
bc 浮点数运算
scale 默认为0,没有小数点后的位置
#!/bin/bash
var1=`echo " scale=4; 3.44 / 5" | bc `
echo $var1
输出 .6880
$? 存储上一个执行命令的退出状态码
0 成功结束为
1 通用未知错误
2 误用shell命令
126 命令不可执行
127 没找到命令
128 无效退出参数
128+x Linux信号x的严重错误
130 命令通过Ctrl+C 终止
255 退出状态码越界
exit x 自定义状态码x
状态码值在0~255之间,如果越界则进行模运算
if command 如果状态码为0 则执行then
then commands
fi
if (( expression )) 数值 支持高级数学表达式,不需要转义
val++ , val--, ++val,--val,!,~,**,<<,>>,&,|,&&,||
if [[expression]] 字符串 高级比较特性
模式匹配
test [ condition ] 可以判断3类条件:数值比较,字符串比较,文件比较
数值比较:
n1 -eq n2 是否相等
n1 -ge n2 是否大于或等于
n1 -gt n2 大于
n1 -le n2 小于或等于
n1 -lt n2 小于
n1 -ne n2 不等于
字符串比较:
str1 = str2
str1 < str2
str1 > str2
str1 != str2
-n str1 判断str1 长度是否非0
-z str1 判断str1 长度是否为0
< > 用转义符号,避免跟重定向冲突
文件比较
-d file file 是否存在并是一个目录
-e file file是否存在
-f file file是否存在并是一个文件
-r file file是否存在并可读
-s file file是否存在并非空
-w file file是否存在并可写
-x file file是否存在并可执行
-O file file是否存在并属当前用户
-G file file是否存在并默认组与当前用户相同
file1 -nt file2 file1是否比file2 新
file1 -ot file2 file1是否比file2 就
case 命令
case variable in pattern1 | pattern2 ) commands1;;
pattern2) commands2;;
*) default commands;;
for 命令
for var in list
do
commands
done
for 循环假定每个值以空格分割
IFS环境变量 内部字段分隔符( Internal Field Separator)
IFS=$' \n:;" ' 可以以\n,:,;,",分隔
支持C语言风格
for(( var; condition; iteration))
while
until ---> do while
break
continue
命令行参数
$? 上一条执行命令返回状态码
$# 命令行参数的个数
$* 将命令行所有参数当作一个单词来保存
$@ 将命令行所有参数当作多个单词来保存
$0 程序名
$1 第一个参数
$2 第二个参数
shift 命令,将所有参数向左移动一位
getopt optstring options parameters
$ getopt ab:cd -a -b test1 -cd test2 test3
-a -b test1 -c -d -- test2 test3
<span style="font-size:12px;"><span style="font-size:12px;"><span style="font-size:12px;">#!/bin/bash
set -- `getopt -q ab:c "$@"`
while [ -n "$1" ]
do
case "$1" in
-a) echo "found the -a option" ;;
-b) param="$2"
echo "Found the -b option,with parameter value $param"
shift ;;
-c) echo "Found the -c option" ;;
--) shift
break ;;
*) echo "$1 is not an option" ;;
esac
shift
done
count=1
for param in "$@"
do
echo "Parameter #$count: $param"
count=$[ $count + 1 ]
done</span></span></span>
<span style="font-size:12px;"><span style="font-size:12px;"><span style="font-size:12px;">$ sh test.sh -a -b test1 -cd test2 test3 test4
found the -a option
Found the -b option,with parameter value 'test1'
Found the -c option
Parameter #1: 'test2'
Parameter #2: 'test3'
Parameter #3: 'test4'</span></span></span>
echo 标准输出
-n 输出不换行
read 标准输入命令
-p "提示"
-t time 设置超时时间
-s 隐式输入
cat test | while read line 一次读取一行
&> 将标准输出和标准错误 重定向到一个输出文件
>&2 临时重定向
exec 1> file 永久重定向
exec 3 > file 自定义重定向
exec 3>&- file 关闭文件描述符
lsof 列出打开的文件描述符
/dev/null null文件的标准位置,重定向的此位置的任何数据都会被丢掉,不会显示
mktemp filename.XXXXXX 创建本地临时文件 后面六个X会被随机生成字母
mktemp -t filename.XXXXXX 在系统临时目录创建该文件,返回全路径及文件名
mktemp -d dirname.XXXX 创建临时目录
tee filename 记录消息,相当于STDIN过来的数据同时发给STDOUT和指定文件名
jobs 查看作业
bg + jobID 重启一个作业
nice -n 指定优先级 nice值越大,优先级越低 范围为:-20~20
renice 更改已运行的进程优先级
at [ -f filename ] time 指定脚本运行时间
cron 时间表
分 小时 天 月 周 命令
* 表示每天/月/周
crontab 构建时间表
默认是全局变量
local 局部变量
source ./filename <==> . ./filename
sed
sed '=' data 打印行号
sed -n '2,3p' data 打印第2-3行
sed '2,3s/dog/cat/' data 将2-3行的dog替换为cat
sed '3d' data 过滤第3行
sed '/1/,/3/d' data 过滤1-3行
sed '3i\this is a inserted line.' data 插入到第3行
sed '3a\this is a inserted line.' data 附加到第3行
sed '2,3c\this is a inserted line.' data 修改第2-3行
$ echo "This is a test of 1 try." | sed 'y/123/456/' 转换命令
This is a test of 4 try.
[address] w filename 向文件写数据
sed '1,2w test' data 把data的第1-2行写入到test文件中
sed -n '/IN/w INcustomers' data 把data中含有IN的行写入到INcustomers中
[address] r filename 从文件读数据
sed ‘3r test' data 把test文件内容插入到data第3行后面
gawk
$0 整个文本
$1 第一个单词,以此类推
gawk 'BEGIN { print "hello"; FS=":" } { print $0; print $1 } END { print "End of File" }' data
gawk -F: 以冒号分割
FIELDWIDTHS 由空格分开定义的每个数据字段确切宽度的一列数字
FS 输入字段分割符
RS 输入数据行分隔符
OFS 输出字段分隔符
ORS 输出数据行分隔符
gawk 'BEGIN{FS=","; OFS="--"} {print $1,$2,$3}' data
gawk 'BEGIN{FIELDWIDTHS="3 5 2 5"} {print $1,$2,$3,$4}' data
数据变量
ARGC 当前命令行参数个数
ARGIND 当前文件在ARGV中的位置
ARGV 包含命令行参数的数组
CONVFMT 数字的转换格式,等价于printf 默认为%.6 g
ENVIRON 当前shell环境变量及其值组成的关联数组
ERRNO 当读取或关闭输入文件发生错误时的系统错误号
FILENAME 用作gawk输入数据的数据文件的文件名
FNR 当前数据文件中的数据行数
IGNORECASE 设定为非零值时,忽略大小写
NF 数据文件中的字段总数
NR 已经处理的输入数据行数目
OFMT 数字的输出格式;默认为%.6 g
RLENGTH 由match函数所匹配的子字符串的长度
RSTART 由match函数所匹配的子字符串的起始位置
能自建函数库
^ 行首
$ 行尾
. 任意单个字符,除了换行符
* 该字符出现0或多次
? 表示该字符只能出现0次或1次
+ 表示该字符至少出现一次
{n,m} 表示该字符出现n-m次
| 任意一个匹配都算成功
[chars] 字符组,表示里面的任意一个字符
[^chars] 排除字符组,任意chars之外的一个字符
[a-z] 字符区间表示
特殊字符组
[[:alpha:]] 任意字母,不管大小写
[[:alnum:]] 任意数字字母
[[:blank:]] 空格或制表符
[[:dight:]] 任意数字
[[:lower:]] 任意小写字母
[[:lower:]] 任意大写字母
[[:print:]] 任意可打印字符
[[:punct:]] 任意标点符号
[[:space:]] 任意空白字符:空格,制表符,NL,FF,VT,CR
mysql
show processlist 查看正在运行的进程
mysql test -u test
<span style="font-size:12px;">#!/bin/bash
MYSQL=` which mysql `
$MYSQL test -u test <<EOF
show tables;
select * from test;
EOF
</span>
<span style="font-size:12px;">$ sh mtest.sh
Tables_in_test
customer
names
test
id name
22 xxx
1 hello
</span>
<span style="font-size:12px;">#!/bin/bash
MYSQL=` which mysql `
if [ $# -ne 2 ];then
echo " error"
else
statement=" insert into test values ( $1, '$2' );"
$MYSQL test -u test <<EOF
$statement
EOF
if [ $? -eq 0 ];then
echo Data successfully added
else
echo Problem adding data
fi
fi
</span>
<span style="font-size:12px;">$ sh mtest.sh 3 world
Data successfully added
</span>
<span style="font-size:12px;"></pre><pre code_snippet_id="572160" snippet_file_name="blog_20150106_10_7148079" name="code" class="sql">$ mysql test -u test -Bse 'show databases;'
information_schema
test
</span>
lynx 从远程网站上提取信息
安装 sudo yum install lynx
配置文件:/etc/lynx.cfg
Web
HTTP 头: 提供了有关连接中传送的数据类型,发送数据的服务器以及连接中采用的安全类型的信息。
cookie: 存储有关网站访问的数据
lynx -dump url 输出网页信息
cURL 使用特定URL来自动从命令行传送文件
curl url 提取整个html页面
vim 设置16进制格式查看: %!xxd
yum install lrzsz 下载sz ,上传 rz