1.检查可以使用的shell和预设使用的shell
$ cat /etc/shells
$ cat /etc/passwd
$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
$ cat /etc/passwd |grep nologin
sshd:x:116:65534::/var/run/sshd:/usr/sbin/nologin
2.查看前一次登录使用的指令
$ cat ~/.bash_history
3.制定别名
$ alias ----查看已经设置的命令别名
$ alias lm='ls -al' ----设置命令别名
$ unalias lm ----取消lm这个别名
4.查看可执行命令的类型
$ type ls
ls 是 `ls --color=auto' 的别名
$ type -t ls
alias
$ type -a ls
ls 是 `ls --color=auto' 的别名
ls 是 /bin/ls
5.变量与环境变量
env ----查看所有环境变量
export ----查看所有环境变量
echo $HOME ----查看这个环境变量的值
HOME="/home/anderson" ----设置环境变量的值
注: 1.双引号("")内的特殊字符人保持原有特性,单引号(' ')内的特殊字符只作为普通文本对待
2.跳脱字符()可以将特殊字符(Enter &Space&&' 等)变成一般字符
3.$(指令)或反单引号(` 指令`)可获得其他指令的信息
4.扩增变量内容示例:PATH="$PATH":/home/bin或PATH="${PATH}":/home/bin
5.将普通变量变为环境变量:export PATH,这样以来在子shell中可以共享这个变量
6.取消变量的设置:unset PATH
6.进入当前系统核心模块目录
cd /lib/modules/`uname -r`/kernel或cd /lib/modules/$(uname -r)/kernel
7.查找相关文档并列出属性
ls -al `locate keyword`
8.处理常去的工作目录
workspace="/home/anderson/Workspace"
cd $workspace
注:修改bash的配置文件更加方便
9.产生0-9之间的随机数
$ declare -i num=$RANDOM*10/32768;echo num
10.特殊变量
1. PS1 命令提示字符 (非操作系统的环境变量)
anderson@anderson-Sailing-Series:/usr/java$ cd ~
anderson@anderson-Sailing-Series:~$ PS1='[u@hwA##]$'
2.$ 当前sheel的PID
$ echo $$
3. ? 上一操作的返回值
$echo $?
11.影响显示结果的语系变量
$ locale -a
$ locale
12.read
$ read -p "Enter your name in 30s:" -t 30 named
Enter your name in 30s:nemo
$ echo $named
nemo
13.指定数据类型命令 declare
$ declare -i num=10+5 ----指定num为整数类型
$ declare -r num -----指定num只读(注销再登入才能恢复)
$ declare -p num ----查看num类型(export | grep num)
$ declare -x num -----将num变为环境变量(全局变量)
$ declare +x num ----将num变为自定义变量(局部变量)
$ declare -a arr -----指定arr为数组类型
14.ulimit
$ ulimit -a ----列出当前身份受到的限制
$ ulimit -f 10240 -----限制用户只能创建10M以下的档案
15.变量的设定方式
[15]
16.history
$ history ----列出本次登录后的所有指令记录
$ history 5 ----列出最近5次记录
$ !! ----执行上一个命令
$ !5 ----执行地指令记录中第5个命令
$ !al ----执行最近以al开头的指令
17.bash的进站欢迎信息设置
$ cat /etc/issue
[18-0]
18.login shell 和nologin shell
$ surce ~/.bashrc <==>$ . ~/.bashrc
[18-1]
配置文件:
~/.bashrc
/etc/man.config
~/.bash_history
!/.bash_logout
终端机的环境设定:
bash默认的组合键:
通配符:
[18-2]
bash下特殊符号汇总:
[18-3]
[18-4]
19.数据流重导向
stdout和stderr
$ find -name /home .bashrc > list_right 2> list_error ----标准信息写到list_right ,标准错误信息写到list_err
$ find -name /home .bashrc > list_right 2> list_error ----标准信息写到list_right ,标准错误信息丢进“黑洞”
$ find -name /home .bashrc &> list
or
$ find -name /home .bashrc > list 2>&1 ----标准信息写到和标准错误信息都写进list
stdin
$ cat > catfile ----利用cat创建一个新档案,^d结束输入
$ cat > catfile <<"eof" ----利用cat创建一个新档案,输入"eof"后结束输入
$ cat > cattest <~/.bashrc ----将~/.bashrc的内容写入到cattest中
20.命令执行的判断依据[ ; && ||]
不考虑指令的相关性连续执行:
$ sudo sync; sync; shutdown -h now
[20-0]
$ ls /tmp/abc && touch /tmp/abc/hehe ----如果存在/tmp/abc就创建/tmp/abc/hehe,否则不创建
$ ls /tmp/abc || mkdir /tmp/abc ----如果不存在/tmp/abc就创建/tmp/abc
$ ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe ----如果存在/tmp/abc,创建/tmp/abc/hehe;否则先创建/tmp/abc,再创建/tmp/abc/hehe
$ ls /tmp/newtest && echo "exit" || echo "no exit" ----如果有/tmp/newtest就输出" exit",否则"no exit"
[20-1]
21.管线命令
less,more,head,tail
cut,grep,sort,uniq,wc,,tee
[21-0]
$ ls -al /etc | less
$ ps -ef | grep sshd
$ echo $PATH | cut -d ':' -f 5 ----将path变量取出,找出第五个路径,以“:”作为分隔
$ echo $PATH | cut -d ':' -f 3,5 ----将path变量取出,找出第三到第五个路径,以“:”作为分隔
$ export | cut -c 12- -----将export输出的信息每行都切掉前12个字符
$ export | cut -c 12-20 ----截取每行第12-20个字符
$ last | cut -d ' ' -f 1 ----查看这个月的登录信息,以' '作为分割,截取第一段字符(登录帐号)
$ last | grep 'reboot' <==> $ last | grep reboot <==>$ last | grep "reboot" ----取出其中含有“reboot”的行
$ last | grep reboot | cut -d ' ' -f 1 ----取出带有reboot字串的行的第一栏
$ grep MANPATH /etc/manpath.config ----单独使用grep举例
$ cat /etc/passwd | sort -t ':' -k 3 ----用以':'分隔的第三栏排序
$ last | cut -d ' ' -f 1 | sort |uniq -c ----输出第1栏并排序,然后去掉重复项并新显示没一项重复的次数
$ cat /etc/manpath.config | wc ----行数 字数 字符数
$ last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l ----计算这个月登录的次数
$ last | tee -a last.list | cut -d ' ' -f 1 ----tee使数据流双重导向到文件后还可以交给后面的管道处理
22.字符转换命令
tr,col,john,paste,expand,-
$ last | tr [a-z] [A-Z] -----将last输出信息中所有小写改为大写
$ cat /etc/passwd | tr -d ':' -----将cat出的信息中所有“:”删除
# cp /etc/passwd /root/passwd && unix2doc /root/passwd ---复制并转换
# file /etc/passwd /root/passwd ----查看上一操作后的文件状态
# cat /root/passwd | tr -d ' ' > /root/passwd.linux ----去掉' '
$ cat /etc/manpath.config | col -x | cat -A | more ----col -x会将tab转换成对等的空格键
# man col | col -b > /root/man.col ----转存为纯文本文档
$ john -t ':' /etc/passwd /etc/shadow ----将两个文件地一个字段相同的行合成一行
$ john -t ':' -1 4 /etc/passwd -2 3 /etc/group ----将第一个文件的第4个字段与第二个文件第3个字段相同的行合并在一起
$ paste /etc/passwd /etc/shadow ----简单地同行贴在一起,中间用[tab]分隔
$ cat /etc/passwd | paste /etc/shadow /etc/group - | head -n 3 ----stdout和两个其他文件paste并且只显示前三行
$ grep '^MANPATH' /etc/manpath.config | head -n 3 | expand -t 6 - | cat -A ----将[tab]替换为6个空格
$ cd /tmp;split --b 300k /etc/termcap termcap ----将/termcap分割成300k一个的小档案
$ cat termcap* >> termcapback ----将那些小档案合在一起
$ ls-al | split -l 10 - lsroot ----每10行记录成一个小档案,档案的名字前缀为lsroot
$ cut -d ':' -f 1 /etc/passwd | head -n 3 | xargs -p -n 5 -e 'lp' finger ----用最后一个管道之前产生的数据流最为参数执行finger指令,并询问是否执行,一次查询5个,分析到'lp'结束
$ find /sbin -perm +7000 |xargs ls -l ----找出特殊档名并列出属性
$ tar -cvf - /home | tar vaf - ---- '-'代表stdout和stdin