标签:
shell学习笔记 1、查看/etc/shells,看看有几个可用的Shell 2、 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令,成功登出后,才存到 .bash_history中。 5、man bash查看bash说明文件。 6、echo $ 7、变量的设定中,单引号与双引号的不同:双引号仍然可以保留变量的内容,单引号内只能是一般字符,不会有特殊符号。 8、反单引号`符号:在一串指令中,在`之内的指令都会被先执行,而其执行出来的结果将作为外部的输入内容。 9、set:显示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 | more‘) 23、历史命令:history 24、bash shell的操作环境: 例題: 設定 echo 的命令別名成為 echo -n ,然後再觀察 echo 執行的順序 答: [root@www ~]# alias echo=‘echo -n‘[root@www ~]# type -a echoecho is aliased to `echo -n‘echo 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] 代表 0 到 9 之間的所有數字,因為數字的語系編碼是連續的! [^ ] 若中括號內的第一個字元為指數符號 (^) ,那表示『反向選擇』,例如 [^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. 22、break n、continue n从n层循环中退出 23、PATH 执行命令时shell要搜索的目录,这些目录彼此之间用冒号{:}分隔 24、exec 命令 exec program 以新shell代替当前程序
标签:
原文地址:http://www.cnblogs.com/x113/p/4675939.html