个人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

原文地址:https://www.cnblogs.com/daojian/p/3185768.html