zoukankan      html  css  js  c++  java
  • 个人shell积累

    1:bc 计算器
    2:ps:列出用户的进程
    3:more 有三种用法
    $more filename 显示文件内容
    $command | more 将command命令的输出分页显示
    $more < filename more从标准输入获取分页显示的内容,而这时的标准输入被重定向到文件filename
    cat -n a.txt 带行号的查看文件
    4: ntpdate ntp.sjtu.edu.cn 同步机器时间
    如果机器已经同步过,则把ntp服务器关掉 lsof -i:123 然后kill掉
    修改系统时间 时间设定成2009年5月10日的命令如下:
    #date -s 05/10/2009
    将系统时间设定成上午10点18分0秒的命令如下。
    #date -s 10:18:00
    5:who | more 当前活动的管理员,管道命令“|”重定向到more的输入。
    ls /bin | more 把bin下的东西重定向
    6:/bin; /usr/bin; /usr/local/bin 存在很多系统命令
    头文件大部分都存放在 /usr/include
    7:/var/adm/wtmp 文件存在用户的登录信息
    8:linux 查找文件命令:find / -name "AdminUser.class"
    linux 查找含有某字符的文件 grep utmp.h /usr/include/*
    grep utmp.h /usr/include/ -nr n显示行号 r递归
    9:man -k file | grep read 查看联机文档 读取文件的
    man 2 read
    man -k time 查看联机文档 时间的
    10:set linux 查看环境变量
    修改.bashrc文件末尾加入
    1: set ORACLE_HOME=/home/oracle/app/oracle/product/10g 配置oracle环境变量
    export ORACLE_HOME
    11:在Linux下我们首先需要熟悉组、拥有者、其它用户这三含义,非常重要。
    例如我们需要改变一个文件的拥有者:(修改文件之前必须当前的用户具有管理员root的权限)
    chown -R userName fileName (修改当前的文件拥有者为userName)
    chown -R userName:groupName fileName (修改当前文件组和拥有者)
    chown -hR userName fileName (修改当前文件极其子目录到拥有者userName)

    更改组权限:
    sudo chgrp userName fileName
    sudo chgrp -R userName fileName (文件下的所有文件组被修改为userName)
    以上这些信息使用man或者info来查看更详细....

    12:ipcs -a 显示进程间的通信设备
    13:linux配置ip地址:setup
    14:linux查看定期执行任务 crontab -l
    查看定期任务:service crond status
    启动定期任务:/sbin/service crond start
    停止:/sbin/service crond stop
    配置文件地址:cron 的主配置文件是 /etc/crontab

    ============
    鸟哥私房菜脚本基础
    shell基础知识
    1:输出变量的方法 echo $var 或者 echo ${var}
    2:设定变量 var=abc(等号两边不能有空格,变量不能数字开头)
    name="$name"yes
    name=${name}yes <==以此例较佳!
    3:取消变量 unset var
    4:双引号内的特殊字符如 $ 等,可以保有原本的特性,
    如下所示: var="lang is $LANG"则echo $var可得lang is en_US
    单引号内的特殊字符则仅为一般字符 (纯文本),如下所示:
    var='lang is $LANG'则echo $var可得lang is $LANG
    5: 可用跳脱字符『 』将特殊符号(如 [Enter], $, \, 空格符, '等)发成一般字符;
    6:在一串命令中,还需要藉由其他的命令提供的信息,可以使用反单引号『`命令`』戒 『$(命令)』
    例如『version=$(uname -r)』再『echo $version』可得『2.6.18-128.el5』
    例如:cd /lib/modules/`uname -r`/kernel 或者cd /lib/modules/$(uname -r)/kernel
    7. 若该发量为扩增变量内容时,则可用 "$变量名称" 或 ${变量} 累加内容,
    如下所示: 『PATH="$PATH":/home/bin』
    8:若该命量需要在其他子程序执行,则需要以 export 来使自定义变量变成环境变量:
    『export PATH』
    9:env(是 environment (环境) 的简写啊)或者export 列出所有环境变量
    set 查看所有变量 ,包括环境变量和自定义变量
    10:$:(关亍本 shell 的 PID)
    例如:echo $$
    11:?:(关亍上个执行命令的回传值),执行成功回传0,否则非0
    例如 echo $?
    12:locale -a 查看Linux 到底支持了多少的语系 位于目录/usr/lib/locale/
    13:变量键盘读取、数组或宣告: read, array, declare
    (1)[root@www ~]# read [-pt] variable
    选项与参数: -p :后面可以接提示字符!
    -t :后面可以接等待的秒数!』这个比较有趣~不会一直等待使用者啦!
    例1:[root@www ~]# read atest
    This is a test <==此时光标会等待你输入!请输入左侧文字看看
    [root@www ~]# echo $atest
    This is a test <==你刚刚输入的数据已经变成一个变量内容!
    例2:[root@www ~]# read -p "Please keyin your name: " -t 30 named
    (2)declare 或typeset 是一样的功能,就是在『宣告变量的类型』
    [root@www ~]# declare [-aixr] variable
    -a :将后面名为 variable 癿变量定义成为数组 (array) 类型
    -i :将后面名为 variable 的变量定义成为整数数字 (integer) 类型
    -x :用法与 export 一样,就是将后面的 variable 变成环境发量;
    -r :将变量设定成为 readonly 类型,该变量不可被更改内容,也不能 unset
    例子1:declare -i sum=100+300+50
    (3) 数组 (array) 变量类型
    var[index]=content
    例子:var[1]="small" var[2]="big" var[3]="nice"
    echo "${var[1]}, ${var[2]}, ${var[3]}"
    14:变量内容的删除与取代
    例子:[root@www ~]# path=${PATH}
    [root@www ~]# echo $path
    /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    范例二:假如我不喜欢 kerberos,所以要将前两个目录删除掉,如何显示?
    [root@www ~]# echo ${path#/*kerberos/bin:}
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    代表要被删除的部分,由于 # 代表由前面开始删除,所以这里便由开始的/ 写起,到kerberos/bin:结束,且仅删除最短的那个
    例子3:[root@www ~]# echo ${path##/*:}
    /root/bin
    两个#代表删除/和:之间最长的那部分‘
    例子4:%代表从最后面开始删除,删除:和bin之间的部分,一个%代表最短的部分
    [root@www ~]# echo ${path%:*bin}
    /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin
    两个%代表最长的部分
    [root@www ~]# echo ${path%%:*bin}
    /usr/kerberos/sbin
    15:变量的测试和内容的替换
    范例一:测试一下是否存在 username 这个变量,若不存在则给予 username内容为root
    [root@www ~]# username=${username-root}
    [root@www ~]# echo $username
    root
    范例二:若 username 未设定戒为空字符串,则将 username 内容设定为 root
    [root@www ~]# username=${username:-root}
    [root@www ~]# echo $username
    root
    16:find查找,将stdout,和stderr分别存到不同的档案去。
    find /home -name .bashrc>list_right 2>list_error
    例子2:find /home -name .bashrc 2> /dev/null
    /dev/null 相当于垃圾箱
    例子3:写入同一个问价里去
    [dmtsai@www ~]$ find /home -name .bashrc > list 2> list <==错误
    [dmtsai@www ~]$ find /home -name .bashrc > list 2>&1 <==正确
    例子4:[root@www ~]# cat > catfile << "eof"
    <<相当于结束字符
    17:指令回传值
    $? (指令回传值) 与 && 或 ||
    一般用户是command1 && command2 || command3 2和3会放一定会执行成功的命令
    例子1:[root@www ~]#ls /tmp/abc && touch /tmp/abc/hehe 如果存在目录abc,则执行后边的创建,否则不执行。前面成功则执行后面
    例子2:[root@www ~]#ls /tmp/abc || mkdir /tmp/abc 如果不存在abc,则执行后面的创建。 前面失败则执行后面
    18:管线命令
    [root@www ~]# echo $PATH | cut -d ':' -f 5
    # 如同上面的数字显示,我们是以『 : 』作为分割,因此会出现 /usr/local/bin
    # 那么如果想要列出第 3 个与第 5 呢?,就是这样:
    [root@www ~]# echo $PATH | cut -d ':' -f 3,5
    例子2:[root@www ~]# export | cut -c 12- 取出第12个字符以后的数据
    19:排序sort wc uniq
    [root@www ~]# cat /etc/passwd | sort 将passwd文件排序
    [root@www ~]# cat /etc/passwd | sort -t ':' -k 3 我想以第三栏来排序
    ===
    范例一:使用 last 将账号列出,仅列出账号栏,进行排序后仅列出一位;
    [root@www ~]# last | cut -d ' ' -f1 | sort | uniq
    范例二:承上题,如果我还想要知道每个人的登入总次数呢?
    [root@www ~]# last | cut -d ' ' -f1 | sort | uniq -c
    ====
    正则表达式
    1:[root@www ~]# grep [-A] [-B] [--color=auto] '搜寻字符串' filename
    A after B before

    2:如果service radisud start 启动提示地址被占用,ps aux | grep radiusd进程却没有,则查看1812是否被占用
    首先查看radwatch进程是否开启,关闭他的邮箱进程
    netstat -apn | grep 1812 来显示所有连接的端口并用数字表示
    kill -9 pid即可
    lsof(list open files)是一个列出当前系统打开文件的工具
    查看22端口现在运行的情况
    # lsof -i :22
    查看所属root用户进程所打开的文件类型为txt的文件
    # lsof -a -u root -d txt
    查看radiusd打开的文件
    #lsof | grep radiusd

  • 相关阅读:
    最艰难的采访IT公司ThoughtWorks代码挑战——FizzBuzzWhizz游戏
    SQL Server 存储字符数较大字段的问题
    c# var的含义与用法
    ListBox和ComboBox绑定数据简单例子
    “C# 未在本地计算机上注册microsoft.Jet.OLEDB.12.0”的解决方案
    [转] c# 操作Word
    C++ Regsvr32订购具体解释
    数字计算的有序排列的号码出现二分法
    合作信息处理模型
    内存四个领域,变量声明和定义,注册,c内联汇编,auto,堆,不变,静态变量
  • 原文地址:https://www.cnblogs.com/daojian/p/3185768.html
Copyright © 2011-2022 走看看