2015/04/08   Shell基础-1

ps: 红字字体为重要部分, 仔细看

一、shell特性

1. history查看命令历史记录,默认记录1000条;

[[email protected] ~]# history
    1  vim /etc/hosts
    2  ifconfig
    3  cd /etc/sysconfig/network-scripts/ifcfg-
    4  cd /etc/sysconfig/network-scripts/ifcfg-eth0
    5  ifconfig eth0 up
……………………/省略
[[email protected] ~]# vim /etc/profile               #可自定义history历史命令记录;

2. !!执行上条命令;

[[email protected] ~]# !!
    1  vim /etc/hosts
    2  ifconfig
    3  cd /etc/sysconfig/network-scripts/ifcfg-
    4  cd /etc/sysconfig/network-scripts/ifcfg-eth0 
    5  ifconfig eth0 up
……………………/省略

3. !$表示上条命令最后一个参数;

[[email protected] ~]# ls 1.txt
1.txt
[[email protected] ~]# ls !$
ls 1.txt
1.txt

4. alias别名;

[[email protected] ~]# alias a="ls"           #创建别名;
[[email protected] ~]# a
1.tar  1.txt  2.txt  anaconda-ks.cfg  install.log  install.log.syslog
[[email protected] ~]# unalias a               #取消别名;
[[email protected] ~]# a
-bash: a: command not found

5. shell中的字符;

*:  表示可以匹配零个或多个字符;

?:  可以匹配一个任意字符;

#:  表示注释;

$:  用来标记一个变量;

~: 表示家目录;

&: 把一条可执行命令放入后台执行;

[]:  表示里面的括号选一个;

6. 重定向(输出)、追加、输入、错误重定向、错误追加;

[[email protected] ~]# ls [123].txt > error.log

[[email protected] ~]# cat 2.txt >> error.log

[[email protected] ~]# cat < 2.txt

[[email protected] ~]# lasdasd 2> error_2.log

[[email protected] ~]# ndiasndias 2>> error_2.log

7. 作业控制;

[[email protected] ~]# sleep 100          #按Crtl+z放到后台执行;
[[email protected] ~]# sleep 200          #按Crtl+z放到后台执行;          
[[email protected] ~]# sleep 300          #按Crtl+z放到后台执行;
[[email protected] ~]# jobs               #查看后台执行作业;

[[email protected] ~]# fg 1               #将作业调回到前台执行;

二、变量

1. 自定义变量;

[[email protected] ~]# a=c
[[email protected] ~]# set | grep  -n ^a                #set可以把所有变量列出来;
55:a=c
[[email protected] ~]# env | grep ^a                    #env可以列出的当前用户的所有环境变量;
[[email protected] ~]# export a=AAAA                    #export引入全局变量;
[[email protected] ~]# bash
[[email protected] ~]# echo $a
AAAA
[[email protected] ~]# env | grep -n ^a
12:a=AAAA
[[email protected] ~]# exit
exit
[[email protected] ~]# echo $a
AAAA

[[email protected] ~]# bash                             #取消一个自定义变量;
[[email protected] ~]# unset a
[[email protected] ~]# env | grep ^a

2. 自定义变量中间如果带有空格, 需用引号;

[[email protected] ~]# a=aming Linux
-bash: Linux: command not found
[[email protected] ~]# a=‘aming Linux‘
[[email protected] ~]# echo $a
aming Linux
[[email protected] ~]# b=`echo $a`                    #` `引用里面的值赋值给b;
[[email protected] ~]# echo $b
aming Linux
[[email protected] ~]# b=‘echo $a‘                    #‘ ‘只打印出里面的参数;
[[email protected] ~]# echo $b
echo $a
[[email protected] ~]# b="echo $a"                    #" "引用里面的值并打印;
[[email protected] ~]# echo $b
echo aming Linux

3. 合并变量;

[[email protected] ~]# a=2
[[email protected] ~]# b=1
[[email protected] ~]# c=$a‘$b‘
[[email protected] ~]# echo $c
2$b
[[email protected]hell ~]# c=$a"$b"
[[email protected] ~]# echo $c
21
[[email protected] ~]# c=$a`$b`
-bash: 1: command not found

4. 系统变量和用户变量;

[[email protected] ~]# cat /etc/profile
[[email protected] ~]# cat /etc/bashrc
[[email protected] ~]# cat .bash_profile
[[email protected] ~]# cat .bashrc 
[[email protected] ~]# echo ‘echo "bashrc"‘ >> .bashrc  
[[email protected] ~]# echo ‘echo "profile"‘ >> .bash_profile
[[email protected] ~]# bash
bashrc
[[email protected] ~]# su -
bashrc
profile

总结:

/etc/profile和/etc/bashrc属于全局配置.

$HOME/bashrc和$HOME/bash_profile属于用户配置.

一组对所有用户生效, 一组对当前用户生效.

三、Shell常用命令

1. cut分割

-d:  指定分隔符;

-f:  打印第几段;

-c:  指定截取字符;

以‘:‘为分隔符, 打印/etc/passwd第一段到三段的字符;
[[email protected] ~]# cut -d ‘:‘ -f 1-3 /etc/passwd | head -3
root:x:0
bin:x:1
daemon:x:2
截取/etc/passwd的第一个字符到第五个字符;
[[email protected] ~]# cut -c 1-5 /etc/passwd | head -3
root:
bin:x
daemo

2. sort排序

-t:  指定分隔符;

-k:  对第几列排序;

-n:  以数字排序(默认从小到大);

-r:  反向排序,结合-n使用;

-u:  去掉重复行;

以‘:‘为分隔符, 以从小到大数字排序/etc/passwd的第三段字符;
[[email protected] ~]# sort -t ‘:‘ -k3 -n /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
……………………/省略
以‘:‘为分隔符, 以从大到小数字排序/etc/passwd的第三段字符;
[[email protected] ~]# sort -t ‘:‘ -k 3 -nr /etc/passwd 
user1:x:500:500::/home/user1:/bin/bash
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
dhcpd:x:177:177:DHCP server:/:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

3. uniq去重行

-c: 去重行;

[[email protected] ~]# cat 2.txt
222
222
333
222
333
111
222
[[email protected] ~]# uniq -c 2.txt
      2 222
      1 333
      1 222
      1 333
      1 111
      1 222

4. wc统计行数、字符数、词数

-l:    统计行数;

-m:  统计字符数;

-w:  统计词数;

[[email protected] ~]# wc 2.txt
7  7 28 2.txt
[[email protected] ~]# wc -l 2.txt
7 2.txt
[[email protected] ~]# wc -m 2.txt
28 2.txt
[[email protected] ~]# wc -w 2.txt
7 2.txt

5. tr替换字符

[[email protected] ~]# ls | tr ‘1-9‘ ‘A-Z‘          #将数字1-9替换为A-Z;

6. split切割文件

-b: 按文件大小分割;

-l :  按行数分割;

[[email protected] ~]# du -sh 1.txt 
160K    1.txt
[[email protected] ~]# split -l 20 1.txt

[[email protected] ~]# ls x* | xargs -i mv {} {}.txt                #将x*改为x*.txt
[[email protected] ~]# split -l 20 1.txt  log                       #自定义分割完后的名字;

7. &&、||、;;

&&: 前面命令执行成功后执行后面命令;

[[email protected] ~]# ls 1.txt && cd /root
1.txt
[[email protected] ~]# ls aaaa.txt && cd /home
ls: cannot access aaaa.txt: No such file or directory
||: 前面命令执行不成功执行后面;
[[email protected] home]# ls aaaa.txt || cd /root/
ls: cannot access aaaa.txt: No such file or directory
;: 前面命令是否执行完成都会执行后面命令;
[[email protected] ~]# ss ; cd /tmp

时间: 2024-09-30 22:04:42

2015/04/08   Shell基础-1的相关文章

2015.4.8 Shell基础知识

1.Shell特性 命令历史 history  !!  !$  !n  !字符 Tab键可以补全文件路径或者命令 alias a="b"  unalias a 通配符 *匹配零个或多个字符  ?匹配一个字符 输入输出重定向>,>>,<,2>,2>> 管道符 作业控制  ctrl+z   jobs   fg    bg 2.变量 系统变量名都是大写,echo可以查看变量名 env 可以列出当前用户的所有环境变量以及用户自定义全局变量 set 命令

Bentley Maxsurf Enterprise V8i v20.00.04.08 Win32_64 2CD

Schlumberger Techlog 2013.3 Win64 1CD Bentley.OpenPlant.Isometric.Manager.V8i.SS5.08.11.09.404 1CD Delcam.PowerINSPECT.2013.R2.SP2-ISO 1DVD Arqcom.CAD-Earth.v4.0.2.AutoCAD.2013-2015 1CD Bentley.AECOsim.Building.Designer.V8i.SS5.08.11.09.747 1CD Bentl

Mosek.ApS.Mosek.v7.1 MOSEK数学优化软件包/线性分析HEEDS.MDO.2015.04.2

Mosek.ApS.Mosek.v7.1 MOSEK数学优化软件包Mosek.ApS.Mosek.v7.1.Win32_64 2CD Mosek.ApS.Mosek.v7.1.Linux32_64 2CD Mosek.ApS.Mosek.v7.1.MacOSX 1CDMosek Optimization Tools 是一款MOSEK优化软件包,是一款用来解决大规模级别数学优化问题的软件.MOSEK提供了特定解决线性编程.混 合整数编程以及其它非线性转换优化问题.+++++++++++++++++

linux基础正则表达式、shell基础、文件查找和压缩

linux基础正则表达式.shell基础.文件查找和压缩 1.shell编程显示电脑的基本信息,初级基础脚本.只适合6.7版本的. COLOR="\033[1;36m" COLOREND="\033[0m" echo -e "CPU type is $COLOR `lscpu |grep 'Model name'|tr -s ' '|cut -d: -f2`$COLOREND" echo -e "Disk space is $COLOR

【Linux系列】【基础版】第四章 Shell基础之正则表达式

4. Shell基础之正则表达式     4.1 正则就是一串有规律的字符串         4.1 grep              4.1.1 格式: grep [-cinrvABC] 'word' filename             4.1.2 -c //count,表示行数             4.1.3 -i //不区分大小写             4.1.4 -n  //显示行号             4.1.5 -r  //遍历所有子目录             4

Linux之shell基础

Shell基础 一.shell概述 1) shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至是编写一些程序. 我们输入的abc...24个字符是通过shell对照ASCII码翻译成二进制来让计算机识别的.我们从操作界面上输入命令,这个命令回车之后把此命令对照ASCII码翻译成指定的二进制,通过shell翻译成计算机内核能识别的二进制,然后内核调用硬件来处理,处理完之后再通过shell反馈给用户. 2)

【Linux系列】【基础版】第三章 Shell基础知识

3. Shell基础知识     3.1 Shell的由来         3.1.1 Bourne Agin Shell         3.1.2 其他的shell, 有 zsh, ksh等     3.2 查看有没有shell         3.2.1 yum list | grep zsh         3.2.2 ls /root/.bash_history         3.2.3 echo $HISTSIZE -> vi /etc/profile 修改HISTSIZE的值 -

Linux网络配置及SSH和Shell基础

Linux网络配置及SSH和Shell基础 一.Linux网络配置     ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数.用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在.要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了. 二.hosts文件的作用及修改主机名      Hosts : The static table lookup for host name(主机名查询静态表)       Linux 的/etc/hosts是

shell基础(上)

Shell基础(上) 1.1什么是shell Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的 输入解释给操作系统.井处理各种各样的操作系统的输出结果,输出屏幕返回给用户 这种对话方式可以是 交互的方式:从键盘输入命令,通过/bin/bash的解折,可以立即得到shell的回应 非交互的方式:脚本 Shell执行命令分为两种方式 内置命令:如讲过的cd ,pwd, exit和echo等命令.当用户登录系统后,shell以及内置命令就被系统载入到内存,并且一直运行 一