2.bash

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@\h\w\A#\#]\$'

       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 '\t' > /root/passwd.linux             ----去掉'\t'

 

$ 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

 

posted @ 2014-02-21 16:08  Neuromancer  阅读(244)  评论(0编辑  收藏  举报