码迷,mamicode.com
首页 > 系统相关 > 详细

shell学习笔记

时间:2015-07-25 16:38:28      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

shell学习笔记  

1、查看/etc/shells,看看有几个可用的Shell

2、 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令,成功登出后,才存到 .bash_history中。

5、man bash查看bash说明文件。

6、echo $ 

7、变量的设定中,单引号与双引号的不同:双引号仍然可以保留变量的内容,单引号内只能是一般字符,不会有特殊符号。

8、反单引号`符号:在一串指令中,在`之内的指令都会被先执行,而其执行出来的结果将作为外部的输入内容。

9set:显示bash内的变量。

10、$:代表目前这个SHELL的执行者代码(PID)。echo $$ 出现的数字就是PID号码。

11、?:上一个指令所回传的值。0或者非0值:  echo $?

12、目前个人电脑的CPU分为:32/64位,其中32位分i386、i586、i686,而64位则称为x86_64。

13、子程序仅会继承父程序的环境变量,不会继承父程序的自定义变量。

14、export 变量名称:分享自己的变量设定给后来启动的程序。

15、locale:将环境变量变成自定义变量。

16、read:读取键盘变量

17、declare、typeset:定义变量类型

18、限制使用者的某些系统资源:ulimit

19、#:符合取代文字的 最短的 那一个

20、##:符合取代文字的 最长的 那一个

21、%:从后面向前删除变量内容

22、命令别名定义:alias,unalias(例如:定义alias lm=ls -al | more23、历史命令:history

24、bash shell的操作环境:

例題:

設定 echo 的命令別名成為 echo -n ,然後再觀察 echo 執行的順序

答:

[root@www ~]# alias echo=echo -n[root@www ~]# type -a echoecho is aliased to `echo -necho is a shell builtinecho is /bin/echo

瞧!很清楚吧!先 alias 再 builtin 再由 $PATH 找到 /bin/echo 囉!  

25、bash的进站欢迎信息:/etc/issue,/etc/motd

26、login shell整体环境的设定:/etc/profile

27、source:读取环境设定的命令

28、默认的bash设定:~/.bashrc

29、Bash shell组合键:
組合按鍵    執行結果
Ctrl + C    終止目前的命令
Ctrl + D    輸入結束 (EOF),例如郵件結束的時候;
Ctrl + M    就是 Enter 啦!
Ctrl + S    暫停螢幕的輸出
Ctrl + Q    恢復螢幕的輸出
Ctrl + U    在提示字元下,將整列命令刪除
Ctrl + Z    『暫停』目前的命令

30、特殊符号:
符號    意義
*    代表『 0 個到無窮多個』任意字元
?    代表『一定有一個』任意字元
[ ]    同樣代表『一定有一個在括號內』的字元(非任意字元)。例如 [abcd] 代表『一定有一個字元, 可能是 a, b, c, d 這四個任何一個』
[ - ]    若有減號在中括號內時,代表『在編碼順序內的所有字元』。例如 [0-9] 代表 09 之間的所有數字,因為數字的語系編碼是連續的!
[^ ]    若中括號內的第一個字元為指數符號 (^) ,那表示『反向選擇』,例如 [^abc] 代表 一定有一個字元,只要是非 a, b, c 的其他字元就接受的意思。
符號    內容
#    註解符號:這個最常被使用在 script 當中,視為說明!在後的資料均不執行
     跳脫符號:將『特殊字元或萬用字元』還原成一般字元
|    管線 (pipe):分隔兩個管線命令的界定(後兩節介紹);
;    連續指令下達分隔符號:連續性命令的界定 (注意!與管線命令並不相同)
~    使用者的家目錄
$    取用變數前置字元:亦即是變數之前需要加的變數取代值
&    工作控制 (job control):將指令變成背景下工作
!    邏輯運算意義上的『非』 not 的意思!
/    目錄符號:路徑分隔的符號
>, >>    資料流重導向:輸出導向,分別是『取代』與『累加』
<, <<    資料流重導向:輸入導向 (這兩個留待下節介紹)
     單引號,不具有變數置換的功能
" "    具有變數置換的功能!
` `    兩個『 ` 』中間為可以先執行的指令,亦可使用 $( )
( )    在中間為子 shell 的起始與結束
{ }    在中間為命令區塊的組合!

31、/dev/null 垃圾桶黑洞 
32、eof:输入这个关键字,立刻结束,不需输入[ctrl]+d
33、>与>>
34、命令执行的判断依据:        ;    ,    &&    ||
35、cut、grep:拾取命令
36、排序命令:sort、wc、uniq
37、tee
38、字符转换命令:tr,col,join.paste,expand
39、分割命令:split
40、参数替换:xargs
41、减号"-"的用途
4)如果读取到一个Enter符号(CR),就会尝试开始执行该行命令,
5)如果一行内容太多,可使用  \来延伸至下一行,
6)# 可作为注解。


1、>file  前面没有命令,shell会创建一个空文件(长度为0个字符),如果文件以前已经存在,其内容就会丢失。 
2、一行中可以键入多条命令,命令之间用分号分隔。 
3、如果在键入的命令之后跟一个&符号,该命令就发送到后台执行,也就是说,该命令不再占住终端,可以继续处理其他工作。 
4、$字符是shell的特殊字符,如果$后跟一个合法的变量名,shell会把它当作在此处用变量所存储的值来替换的指令。表达式可以写为$((expression))。 
5、shell变量$#,里面存的是命令行中所键入的参数个数。 
6、$*可以引用传递给程序的所有的参数,在参数不确定或者参数数目可变的程序中,通常是很有用的。 

7. "$@" 它会被替换成“$n”,这里$@前后的双引号是必不可少的,如果没有,变量$@和$*完全一样。 
7、如果要给一个程序传递9个以上的参数,不能用$10、$11的方法来取第10个以及以后的参数,要用${n}这种格式。 
8、shell自动将最后所执行命令的退出状态设置到shell变量$?中。 
    $cp phonebook phone2 
    $echo $? 
    $0 
    0操作成功 非0操作失败 
 
9、内部命令test,它用来在if命令中测试一种或几种条件,格式为 test expression。 
    -n string 检测string不为空为真 
    -n string 检测string为空为真 
   test命令的另外一种模式[expression] 
    -eq 等于 
    -ge 大于等于 
    -gt 大于 
    -le 小于等于 
    -lt 小于 
    -ne 不等于 
   文件判断 
    -d  为目录  
    -e  存在 
    -f  普通文件 
    -r  可读文件 
    -s  长度不为0 
    -w  可写文件 
    -x  可执行文件 
    -L  链接文件 
   逻辑判断  
    !   逻辑非 
    -a  逻辑与 
    -o  逻辑或 
 
10、小括号格式 (  ) 
11、else结构 
    if command1 
    then 
       command 
    else 
       command 
    fi 
12、内部命令exit 它可以立即终止shell程序的执行。exit n  n为希望返回的退出状态,不指定为最后一条命令的退出状态。 

13、elif结构 
    if command1 
    then 
       command 
    elif command2 
       then 
         command 
    else 
       command 
    fi 
 
14、case结构 
    case value in 
    pat1)  command 
           command 
        ... 
           command;; 
 
    pat2)  command 
           command 
        ... 
           command;; 
    ... 
    patn)  command 
           command 
        ... 
           command;; 

    *)
    esac 
 
    case语句中的特殊字符指定匹配模式: 
        ?表示任一个字符 
        *表示0或若干个任意字符一个,最后的“*)”表示默认模式,当使用前面的各种模式均无法匹配该变量时,将执行“*)”后的命令序列。


15、-x 调试程序选项 
    sh -x 程序名 程序参数 
 
16、空命令  : 
    其目的是什么也不做,多用于条件语句 
 
17、&&和||结构 
    &&       如果在任何需要shell命令的位置写了 command1 && command2 则先执行command1,如果返回的退出状态为0则执行command2;如果command1返回的退出状态不为0,则跳过command2。 
    ||       结构功能也差不多,区别在于只有当第一条命令的退出状态不为0时才执行第二条命令。 
    在这种结构的左右两边都可以用管道线。如果用在左边,检测的是管道线中最后一条命令的退出状态。 
 
18、for命令
    for var in  word1 word2 ...  wordn/filenames[1-n]/$* 
    do 
        command 
        command 
        ... 
    done 
 
19、while命令 
    while command1 
    do  
        command 
        command 
        ... 
    done 
while 经常与shift命令共同使用。shift命令使位置变量向下移(即$n到$n-1),并且$#递减。 
 
20、until命令 
    until command1 
    do 
        command 
        command 
        ... 
    done 
与while模式相反 
 
21、sleep n 程序挂起n秒,  

  s for seconds (the default),
       m for minutes,

  h for hours,

  d for days.
22break n、continue n从n层循环中退出 
23、PATH  执行命令时shell要搜索的目录,这些目录彼此之间用冒号{:}分隔 
24、exec 命令      exec program  以新shell代替当前程序 

 

shell学习笔记

标签:

原文地址:http://www.cnblogs.com/x113/p/4675939.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!