常用shell命令整理

 

根目录下的常用子目录作用

/ 虚拟目录的根目录
/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

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章