---文件系统命令
df -help 查看硬盘所用空间
df -a /root -a表all -K以KB为单位 -Ta
df -hm 以mb显示
-----------------------------
shell有ash,csh,ksh, bash(默认)
echo $shell 用的是那种shell
改变shell /编写角本 ----------系统自带的变量echo $ chmod 更换权限 -------chmod u-x,g+w,o+r mfile 还有一种方法chmod mode myfile chmod 744 myfile ln用于软件连接 shgrp ** myfile改变所在的组 chown it.it myfile -R 同时改变组和所在的组 umask SHELL EG:work.sh 运行,当前用户要有可执行权限 ---shell 特性 alias 别名alias ll='ls -alh'改别名 home/.bashrc一般放在这里 命令替换 ls 'cat myfile' -al nohup tar -czf zener.tar.fie 把文件后台运行 ls -l |sort 排序 通过ls的输入,做为sort输出 变量:#testvar='this is test' --标准变量bash,可在/etc/profile exinit 初始化vi mailpath,有多个邮箱时 path,可执行文件的路径,,set |grep "path" TZ 时区 set |grep "ps" pwd 当前的目录 set |grep "pwd" shell ----特殊变量 $-(显示shell使用的当前选项,与set 命令功能相同) -----影响变量的命令 使用+替代-可以颠倒选项含义 ---export ---readonly typeset用于显示或设置变量 unset用于取消变量的定义 转义符(\c,\f,\t,\n) eg角本 --read 语句可以从键盘或文件的某一行文本中读入信息,并将其赋给一个变量 --eg -----cat ---管道 eg: --文件重定向 cmmand >filename 2 >&1 把标准输出和标准错误一起重定向到一个文件中 ---------重定向标准输出举例说明: 重定向的标准输入 sort ------------ grep "trident" missiles 2>err_message.txt 从missiles文件中找trident 找不到,把提示错误码 并重定向到文件中 ----exec命令可以用来替代当前的shell ,换句话说,并没有启动子shell,使用这一命令时任何现有环境都将会被清除,并重新启动一个shell export chinalba=zhish 设置环境变量 ------控制流 --- --------------- ----------------- case 语句格式 case 值 in --- ---------------for循环 ------------当变量值在列表里,for循环即执行一次所有命令,使用变量名访问列表中取值。命令可为任何有效的shell命令和语句。变量名为任何单词。 in列表用法是可选的, 如果不用它,for循环使用命令行的位置参数。in列表可以包含替换,字符串和文件名 --eg ----------------------------while循环 ------------ Continue 跳过循环步,它不会跳出循环,只是跳过这个循环步 ^ 只匹配行首 加在后面 ^只允许在一行的开始匹配字符或单词 ^d ^...1
/bin/csh
退出shell
exit
-----------------------------
文件目录的权限ls -lh(所点空间m)
a.sh 都是shell角本
bash
#! /bin/bash
abc()
{
}
more a.sh 显示内容
--echo $shell 显示运行的是那个SHELL
改变运行的SHELL # /bin/csh
exit 退出csh
man chmod 帮助
chmod [who]operator[permission] file
who (u,g,o,a) o为其它用户
operator(+-=)
permission(r,w,x,s,t) s为root可以做的
r 为4
w为2
x为1
ln 原 目的文件
ln -s enercon.tar.gz enercons
chown root myfile 改变拥有者为root
chown -R root myfile root下的目录和文件也发生改变
------------------
#!/bin/bash ---第一行
# ---表示注释
变量
流程控制结构
#!/BIN/BASH
#这是一个打印机
printer="hello"
echo $printer
./work.sh
别名, 管道, 命令替换, 重定向
jobs -l查看后台运行的程序
<为输入
>为输出到目的地sort
显示
#echo $testvar
#echo ${testvar}
#echo ${testvar:+value} 如果设置了testvar显示为value的值,如果没设置显示空
#echo ${testvar:?value}如果未设置testvar,显示用户腚 义的value的值
#echo ${testvar:=value}设置了值,并显示
---变量清除
unset testvar 清除testvar的值
home主目录
ifs,以什么来分隔
logname 目录 echo $logname
mail表示当前的用户邮箱放在那里/ set |grep "mail"
term终端的类型
manpath 帮助目录
terminfo 终端信息
$#(传递到脚本的参数列表)
$*(以一个单字符串显示所有向脚本传递的参数,与位置变量不同,些选项参数可超过9个)
$$(脚本运行的当前进程ID号)
$!(后台运行的最后一个进程的进程ID号)
$@(与$#相同,但是使用时加引号,并在引号中返回每个参数)
$?(显示最后命令的退出状态,0表示没有错误,其他任何表明有错误)
declare 设置或显示变量
-f 只显示函数名,-R创建只读变量(declare和typeset) -x创建转出变量,-i创建整数变量
用于创建传给子shell的变量
--表明选项结束,所有后续参数都是实参
-f表明在“名一值”对中的名字是函数名
-N把全局变量转换成局部变量,换句话说,命令的变量不再传给shell
-p显示全局变量列表
-用于显示或设置只读变量
--表明选项结束
-f创建只读变量
set
设置或重设各种shell
--表明选项结束
-f删除只读变量,但不能取消从shell环境中删除指定的变量和函数
----------------------------------------------------------3
shell 输入与输出
echo 命令可以显示文本行或变量,或者把字符串输入到文件
echo[option] string
-e解析转义字符
-n回车不换行,linux系统默认回车换行
#!/bin/bash
#echod
echo -e "this echo's 3 new lines \n\n\n"
echo "OK"
echo
echo "This echo's 3 new lines \n\n\n"
echo "the log files have all been done">mylogfile.txt
实践以上角本的结果如何
read varible1 varible2..
如果只指定了一个变量,那么read将会把所有的输入法赋给该变量,首至遇到第一个文件结束符或回车,如果给出了多个变量,它们按顺序分别被赋予不同的变量,shell将用空格作为变量之间的分隔符
#!/bin/bash
#readname
echo -n "first name"
read firstname
echo -n "last name"
read lastname
echo -e|"you first nameis :${firstname}\n"
echo -e"you last nameis :${lastname}\n"
chmod 755 filename修改文件为可执行
cat 是一个简单而通用的命令,可以用它来显示文件内容,创建文件,还可以用它来显示控制,字符。
cat [option]filename1...filename2
-v 显示控制字符
使用cat命令时要注意,它不会在文件分页符处停下来;它会一下显示完整个文件,。希望每次显示一页,可以使用more命令或把cat命令的输出通过管道传递到另外一个具有分页功能的命令(more,less)
man cat
-=-
cat myfile1 myfile2 myfile同时输出文件内容
cat myfile1 myfile myfile3 >myfile123 同时输出到文件myfile
cat -v dos.txt
可以通过管道把一个命令的输出传递给另一个命令作为输入,管道用坚杠|表示。
格式:命令1|命令2
cat myfile|more cat的输出作为more命令的输入,分页显示
ls -l|grep"myfile" 从ls -l的输出中过虑含myfile的
df -k|awk '{print $1}'|grep -v "filesystem" 从df -k中的输出做为awk的输入,打印来第一列,再过虑掉含filesystem的
----tee命令把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。
tee -a files
如果希望在看到输出的同时,也将其存入一个文件,那么这个命令再合适不过了
一般用于管道之后
eg:
who |tee -a who.out追加到文件的尾部,不加a,盖掉文件
----------
改变程序运行的输入来源和输出地点
command>filename把标准输出重定向到一个新文件中
command>>filename把标准输出重定向到一个文件中(追加)
command 2>filename把标准错误重定向到一个文件中
command 2>>filename 追加
----1为屏幕也可以是文件,2也一样
输出:
cat file| sort 1>sort.out 显示file的内容后,通过管道,sort命令排序做为校准的输出到sort.out文件中
cat file|sort >sort.out 的上面的一样
pwd>>path.out pwd的内容追加到path.out文件中
>nullfile.txt 创建一个字节为0的新文件
sort
cat>>tern.txt<<** 把cat的内容追加到tern.txt中,以输入的**变量内容
adfasdfsdfsdfsdafsad
adfsdfdsfds
** 遇到此表示结束
文件重定向举例
重定向标准错误
grep "trident" missiles 从missiles文件中找trident 找不到提示错误码
exec command
其中的command通常是一个shell脚本,对文件描述符进行操作的时候也只有在这时,它不会覆盖你当前的shell
exec ./shell.sh
if语句
if 条件1
then elif 条件2
then
else
if -----完成if语句必须以单词fi终止
eg:
#!/bin/bash
#if test
#this is a comment line,all comment lines start with a #
if[ "10" -lt "12" ] #test语句 man test查看帮助 -lt表小于为真
then
#yes 10 less then 12
echo "yes ,10 is less then 12"
else
echo"no"
fi
-----------
chmod 755 iftest
./iftest
----
#!/bin/bash
#if test2
echo -n "enter you name"
read name
#did the user just hit return
if [ "$name"=="" ];then
echo "you did not enter any information"
else
echo "your name is ${name}"
---------------
#!/bin/bash
#ifcp
if cp myfile.bak
else
echo "'basename $0':error could not copy the file'>&2 --标准的错误输出,默认到屏幕
fi ---结束
#!/bin/bash
#ifleif
echo -n "Enter your name:"
read NAME
if [ -z $NAME ]||[ "$NAME"="" ];then
echo "you did not enter a name"
elif ["$NAME"="root" ];then
echo "Hello root"
elif [ "$NAME"="**" ];then
echo "Hello **"
else
echo "you are not root or chinaitlba,buthi,$NAME"
FI
------------SET NU可设置行数
模式1)
命令1
;;
模式2)
命令2
;;
esac
----注意case 取值后面必须为单词IN,每一模式必须以右括号结束,取值可以为变量或常数,匹配发现取值符合某一模式后,其间所有命令开始执行直至;;,模式匹配符*表示任意字符,?表示任意单字符,[..]表示类或范围中任意字符
eg:
-----------------
#!/bin/bash
#case select
echo -n "Enter a number from 1 to 3;"
read ans ---把值读入ans
case $ans in
1)
echo "you select 1"
;;
2)
echo "you select 2"
;;
3)
echo "you select 3"
;;
*)
echo "'basename$0':this is not between 1 and 3">&2
exit;
;;
esac ----结束
for 变量名in列表
do
命令1
命令2
done
#!/bin/bash
#forlist1
for loop in 1 2 3 4 5 --loop为变量,把后面的依次赋给loop
do
echo $loop
done
----
for loop 'cat myfile' ---可以执行命令 空格做为分割
do
echo $loop
done
一般格式
while 命令
do
命令1
命令2
done
注:在while和do之间虽然通常只使用一个命令,但可以放几个命令,命令通常用作测试条件
----------------
#!/bin/sh
#whileread
echo "按住《CTRL》-D 退出输入"
while echo -n "输入你最喜欢的电影:" ;read file
do
echo "yeah,${file}是一部好电影"
done
-----------------
#!/bin/sh
#while read line
do
echo $line
done
break [N]
退出循环
==============================================================================
--------------------------------------------------------------------------------------
=================文本过虑===============================
基本元字符集用其含义
$ 只匹配行尾 加在前面
* 匹配0个或多个此单字符
[] 只匹配[]内字符,可以是单字符
\只用来屏蔽一个元字符的特殊含义
.只匹配任意单字符
pattern\{n\} 只用来匹配前面pattern出现次数 n为次数
pattern\{n,\} 含义同上,但次数最少为n
pattern\{n,m\} 含义同上,但pattern 出现次数在n与m之间
句点"."可以匹配任意单字符
...X..X..X
drwxww 匹配
3af1xxx匹配
-----------------------------------------------------------9分钟shell5
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7600171/viewspace-545597/ ,如需转载,请注明出处,否则将追究法律责任。