ITPub博客

首页 > Linux操作系统 > Linux操作系统 > linux学习日志

linux学习日志

原创 Linux操作系统 作者:steve352 时间:2009-02-08 22:27:41 0 删除 编辑

---文件系统命令
df -help      查看硬盘所用空间
df -a /root         -a表all  -K以KB为单位 -Ta 
df -hm   以mb显示

-----------------------------
shell有ash,csh,ksh, bash(默认)
echo $shell   用的是那种shell

改变shell
/bin/csh
退出shell
exit
-----------------------------
文件目录的权限ls -lh(所点空间m)
a.sh 都是shell角本
bash

/编写角本
#! /bin/bash
abc()
{
}

----------系统自带的变量echo $
more a.sh 显示内容
--echo $shell 显示运行的是那个SHELL
改变运行的SHELL # /bin/csh
exit 退出csh

chmod 更换权限
man chmod 帮助
 chmod [who]operator[permission] file
who (u,g,o,a) o为其它用户
operator(+-=)
permission(r,w,x,s,t) s为root可以做的

-------chmod u-x,g+w,o+r mfile

 

还有一种方法chmod mode myfile
r 为4
w为2
x为1

chmod 744 myfile

ln用于软件连接
ln 原   目的文件
ln -s enercon.tar.gz enercons
chown root myfile 改变拥有者为root
chown -R root myfile root下的目录和文件也发生改变

shgrp ** myfile改变所在的组

chown it.it myfile -R 同时改变组和所在的组

umask

 

SHELL
------------------
#!/bin/bash ---第一行
#              ---表示注释
变量
流程控制结构

EG:work.sh
#!/BIN/BASH
#这是一个打印机
printer="hello"
echo $printer

运行,当前用户要有可执行权限
./work.sh

---shell 特性
别名,    管道,   命令替换,   重定向

alias   别名alias ll='ls -alh'改别名                home/.bashrc一般放在这里

命令替换  ls 'cat myfile' -al

nohup  tar -czf zener.tar.fie      把文件后台运行
jobs -l查看后台运行的程序

ls -l |sort 排序  通过ls的输入,做为sort输出
<为输入
>为输出到目的地sortmyfile_dort.txt   排序后输出到后面的文件

 

变量:#testvar='this is test'
显示
#echo $testvar
#echo ${testvar}
#echo ${testvar:+value}  如果设置了testvar显示为value的值,如果没设置显示空
 #echo ${testvar:?value}如果未设置testvar,显示用户腚 义的value的值
#echo ${testvar:=value}设置了值,并显示
---变量清除
unset testvar  清除testvar的值

--标准变量bash,可在/etc/profile

exinit 初始化vi
home主目录
ifs,以什么来分隔
logname 目录 echo $logname
mail表示当前的用户邮箱放在那里/ set |grep "mail"

mailpath,有多个邮箱时
term终端的类型 

path,可执行文件的路径,,set |grep "path"

TZ 时区

set |grep "ps"

pwd 当前的目录

set |grep "pwd"

shell
manpath 帮助目录
terminfo  终端信息

----特殊变量
$#(传递到脚本的参数列表)
$*(以一个单字符串显示所有向脚本传递的参数,与位置变量不同,些选项参数可超过9个)
$$(脚本运行的当前进程ID号)
$!(后台运行的最后一个进程的进程ID号)
$@(与$#相同,但是使用时加引号,并在引号中返回每个参数)

$-(显示shell使用的当前选项,与set 命令功能相同)
$?(显示最后命令的退出状态,0表示没有错误,其他任何表明有错误)

-----影响变量的命令
declare 设置或显示变量
-f 只显示函数名,-R创建只读变量(declare和typeset) -x创建转出变量,-i创建整数变量

使用+替代-可以颠倒选项含义

---export
用于创建传给子shell的变量
--表明选项结束,所有后续参数都是实参
-f表明在“名一值”对中的名字是函数名
-N把全局变量转换成局部变量,换句话说,命令的变量不再传给shell
-p显示全局变量列表

---readonly
-用于显示或设置只读变量
--表明选项结束
-f创建只读变量
set
设置或重设各种shell

typeset用于显示或设置变量

unset用于取消变量的定义
--表明选项结束
-f删除只读变量,但不能取消从shell环境中删除指定的变量和函数


----------------------------------------------------------3
shell 输入与输出
echo 命令可以显示文本行或变量,或者把字符串输入到文件
echo[option] string
-e解析转义字符
-n回车不换行,linux系统默认回车换行

转义符(\c,\f,\t,\n)

eg角本
#!/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 语句可以从键盘或文件的某一行文本中读入信息,并将其赋给一个变量
read varible1 varible2..
如果只指定了一个变量,那么read将会把所有的输入法赋给该变量,首至遇到第一个文件结束符或回车,如果给出了多个变量,它们按顺序分别被赋予不同的变量,shell将用空格作为变量之间的分隔符

--eg
#!/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 是一个简单而通用的命令,可以用它来显示文件内容,创建文件,还可以用它来显示控制,字符。
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

eg:
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把标准输出重定向到一个文件中(追加)

cmmand >filename 2 >&1 把标准输出和标准错误一起重定向到一个文件中
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

sortname.out   name.txt作为sort的输入,排序后输出到name.out中


cat>>tern.txt<<**  把cat的内容追加到tern.txt中,以输入的**变量内容
adfasdfsdfsdfsdafsad
adfsdfdsfds
**  遇到此表示结束

------------
文件重定向举例
重定向标准错误
grep "trident" missiles 从missiles文件中找trident 找不到提示错误码

grep "trident" missiles 2>err_message.txt 从missiles文件中找trident 找不到,把提示错误码 并重定向到文件中

----exec命令可以用来替代当前的shell ,换句话说,并没有启动子shell,使用这一命令时任何现有环境都将会被清除,并重新启动一个shell


exec command
其中的command通常是一个shell脚本,对文件描述符进行操作的时候也只有在这时,它不会覆盖你当前的shell
exec ./shell.sh

 export chinalba=zhish 设置环境变量

------控制流
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.bakecho "good copy"
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可设置行数

case 语句格式

case 值 in
模式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循环
for 变量名in列表
do
    命令1
    命令2
done

------------当变量值在列表里,for循环即执行一次所有命令,使用变量名访问列表中取值。命令可为任何有效的shell命令和语句。变量名为任何单词。 in列表用法是可选的, 如果不用它,for循环使用命令行的位置参数。in列表可以包含替换,字符串和文件名

--eg
#!/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循环
一般格式
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]
退出循环

Continue 跳过循环步,它不会跳出循环,只是跳过这个循环步
==============================================================================
--------------------------------------------------------------------------------------
=================文本过虑===============================
基本元字符集用其含义

^   只匹配行首 加在后面
$   只匹配行尾 加在前面
*   匹配0个或多个此单字符
[] 只匹配[]内字符,可以是单字符
\只用来屏蔽一个元字符的特殊含义
.只匹配任意单字符
pattern\{n\}   只用来匹配前面pattern出现次数 n为次数
pattern\{n,\}  含义同上,但次数最少为n
pattern\{n,m\}  含义同上,但pattern 出现次数在n与m之间


句点"."可以匹配任意单字符
...X..X..X

^只允许在一行的开始匹配字符或单词

^d
drwxww   匹配

^...1
3af1xxx匹配
-----------------------------------------------------------9分钟shell5

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7600171/viewspace-545597/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-10

  • 博文量
    30
  • 访问量
    84457