linux shell 基础 使用日志与心得

简介: 在网上看到很多LNAMP/LAMP一键安装环境,使用了很多种,比较好的就那几种,但是他们的灵活度不够,所以想啊,自己整个出来 http://lnmp.org/install.htmlhttp://www.wdlinux.cn/lanmp/ 我是整合这两个环境而成,变化很多。 有很多想法正在慢慢实现中,先把基础的实现。 需实现功能: 1.自定义安装目录(指的是mysql,php,n

在网上看到很多LNAMP/LAMP一键安装环境,使用了很多种,比较好的就那几种,但是他们的灵活度不够,所以想啊,自己整个出来

http://lnmp.org/install.html
http://www.wdlinux.cn/lanmp/

我是整合这两个环境而成,变化很多。

有很多想法正在慢慢实现中,先把基础的实现。

需实现功能:
1.自定义安装目录(指的是mysql,php,nginx 全部安装到某个目录下)
2.PHP版本选择
以下是用到的 SHELL 命令等

1.#!/bin/bash 第一行就出现

#!/bin/bash是指此脚本使用/bin/bash来解释执行。
其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径。
bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...
详细介绍:
http://blog.sina.com.cn/s/blog_6336857901019zyz.html

http://blog.csdn.net/jackalfly/article/details/7571616

2.export PATH

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin:~/bin
export PATH

export PATH=$PATH:/home/zhaodw
胜于修改环境变量,但只在本次登录中有效
注意:(与shell变量相结合)
1) =前PATH变量不加$符号
2) 再增加的路径用:追加
功能说明:设置或显示环境变量。
语  法:export [-fnp][变量名称]=[变量设置值]
补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。
参  数:
 -f  代表[变量名称]中为函数名称。
 -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
 -p  列出所有的shell赋予程序的环境变量

详细介绍:

http://www.cnblogs.com/zhangze/articles/1832542.html
http://blog.csdn.net/zcywell/article/details/7687178
http://blog.csdn.net/embed2010/article/details/5988267

3.echo "====="

在屏幕上打印出指定的字符串

更多详细介绍:
http://see.xidian.edu.cn/cpp/html/1498.html
http://hi.baidu.com/auyvfshtkhbegid/item/49f0d13009c141312e0f817a

4.exit

命令用于退出当前shell,在shell脚本中可以终止当前脚本执行。

SHELL中的exit 0 和 exit 1有什么区别?
当你 exit 0 的时候,在调用环境  echo $?    就返回0,也就是说调用环境就认为你的这个程序执行正确。
当你 exit 1 的时候,一般是出错定义这个1,也可以是其他数字,很多系统程序这个错误编号是有约定的含义的。 但不为0  就表示程序运行出错。 调用环境就可以根据这个返回值判断 你这个程序运行是否ok。
如果你用 脚本 a  调用 脚本b ,要在a中判断b是否正常返回,就是根据  exit 0   or  1 来识别。
执行完b后, 判断  $?   就是返回值

更多详细介绍:
http://www.hndy1688.com/service-60.html

5.; shell分号作用

分号是用来隔断每个语法关键字或命令的 。
对于字符的比较及其他shell语法关键字之间分号的使用方式相同。
需要知道的是在不同的语法命令之间要用分号隔开或是换行方能执行,否则将会在调用脚本的时候报错。
http://hi.baidu.com/lozard/item/6bf9de1b2e704ef1756a84e3

6.if else fi 或 if [ "$test" = "test" ]; then 。。。。fi

if [ $UID != 0 ]; then
echo "===="
exit;
fi

条件判断
更多详细介绍:
http://www.cnblogs.com/276815076/archive/2011/10/30/2229286.html
http://blog.chinaunix.net/uid-20788517-id-3135826.html

7.declare -a ARR  数组

declare -a ARR #声明一个数组 ARR 可以自定义
 ARR['key']="值" #给数组某键赋值
echo ${ARR['kye']} #在屏幕上输出该键值
echo ${ARR[*]} #输出所有值 或者 ${ARR[@]}
echo ${#ARR[*]} #数组长度个数   或者${#ARR[@]}
echo ${!array[*]} #输出数组所有键  或者 ${!array[@]}

http://www.cnblogs.com/fhefh/archive/2011/04/22/2024857.html
http://hi.baidu.com/liuhelishuang/item/efaff6d33faacbe5b3f777b2
http://www.cnblogs.com/zhuyp1015/archive/2012/07/07/2580716.html
http://blog.csdn.net/ysdaniel/article/details/7909824
http://hi.baidu.com/liuhelishuang/item/efaff6d33faacbe5b3f777b2
http://hi.baidu.com/liuhelishuang/item/efaff6d33faacbe5b3f777b2

8.source 或 点(shell source .)

source /home/test/lnamp.sh

. /home/test/lanmp.sh
意思这两个是一样的

source或点 不是直接执行一个文件,而是从一个文本文件里面读命令行,然后执行这些命令
另外一种意思
shell 加载 其他文件,包含其他文件(可以把一个很大SHELL分开来,例如一个文件专门配置文件,一个文件是函数库文件)

http://blog.csdn.net/xiaolang85/article/details/7861441
http://blog.chinaunix.net/uid-22028566-id-3182362.html

9.function 函数

function fname(){
local  tmp="test"       #局部变量,只有函数内部使用,其他变量都是全局变量
tmp=$1                      # $1就是取该函数的参数1(test1)
tmp=$2                      # $2就是取该函数的参数2(test2)
tmp=$*                       # $*就是取所有参数
程序段
retrun 1     #数值 0-255
}

调用:

fname "test1" "test2"
必须在调用函数地方之前,声明函数,shell脚本是逐行运行。不会像其它语言一样先预编译。一次必须在使用函数前先声明函数
参数返回,可以显示加:return 返回(0-255),如果不加,将以最后一条命令运行结果,作为返回值

http://www.cnblogs.com/chengmo/archive/2010/10/17/1853356.html

10.switch case 选择

http://blog.csdn.net/ph123456789/article/details/6334040

http://blog.csdn.net/dreamtdp/article/details/8048720

11.shell for in   循环  while/until

11.1.for 变量 in 字符串(这个可以是数组)

for rs in $(seq "one" "two" 3 4 5 asdfsadf "dsf sadf");do
    echo $rs;
done;

11.2.for((赋值;条件;运算语句))

for((i=1;i<=10;i++));do
    echo $i;
done;

http://blog.csdn.net/ph123456789/article/details/6334040

11.3.while 条件语句

i=10;
whil [[ $i -gt 5 ]];do
    echo$i;
    ((i--));
done;

11.4.untile 条件语句

i=10;
until [[ $i -gt 0 ]];do
    echo$i;
    ((i--));
done;

12.read -p 命令接收标准输入(键盘)的输入

read -p "Please Input 1,2,3,4,5: " SERVER_ID
echo "Input $SERVER_ID"
read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说)。得到输入后,read命令将数据放入一个标准变量中

http://blog.sina.com.cn/s/blog_4077692e0100r7ct.html

13.clear  (shell clear) 清屏命令

清空本显示屏幕

14.sleep 睡眠

sleep 1    睡眠1秒
sleep 1s    睡眠1秒
sleep 1m   睡眠1分
sleep 1h   睡眠1小时

15.chmod  chown chgrp

15.1.chmod 给文件或文件夹设置权限

chmod 777 test.txt
http://www.cnblogs.com/peida/archive/2012/11/29/2794010.html

15.2.chown 改变文件或文件夹的用户或者用户组

chown user1 test.txt
chown -R user1:root /tmp/test
http://www.cnblogs.com/peida/archive/2012/12/04/2800684.html

15.3.chgrp 改变文件或文件夹的用户组

chgrp user1 test.txt
http://www.cnblogs.com/peida/archive/2012/12/03/2799003.html


http://blog.163.com/yang_jianli/blog/static/1619900062012116101843165/

16.mkdir 创建目录,创建文件夹(创建多个目录)

mkdir test
mkdir -p test/test2/test3       #一次性创建3个文件夹
http://www.cnblogs.com/peida/archive/2012/10/25/2738271.html

17.pwd   或  $(pwd)当前工作目录,当前文件路径

http://www.cnblogs.com/peida/archive/2012/10/24/2737730.html

19.uname

20.basename

21.$() 括号 与 `` 反引号

22.${}  变量替换
23.$ 变量


25.type -p

26.ls 显示目录下文件和目录
http://www.cnblogs.com/peida/archive/2012/10/23/2734829.html

27.cd 切换至目录,打开文件夹

cd /root
cd ../
cd ~        #切换至当前用户文件夹下
http://www.cnblogs.com/peida/archive/2012/10/24/2736501.html

28.rm 删除文件或文件夹目录

rm log.log
rm -rf  log    #删除log目录下所有文件,忽略不存在文件,不提示

http://www.cnblogs.com/peida/archive/2012/10/26/2740521.html

29.rmdir 删除空目录

rmdir doc
http://www.cnblogs.com/peida/archive/2012/10/27/2742076.html

30.tree 已树状列出所有目录的内容

http://linux.sheup.com/linux/4/31078.html

31.mv 移动文件或将文件改名

mv test.log test.txt    #文件改名
mv test.log log         #将文件test.log 移动到log目录中
http://www.cnblogs.com/peida/archive/2012/10/27/2743022.html

32.cp 复制文件或者目录

cp test.log  test.txt          #复制文件
cp test.log log                 #将文件test.log 复制到log目录中

http://www.cnblogs.com/peida/archive/2012/10/29/2744185.html

33.touch 修改文件时间戳,或者新建一个不存在的文件

touch test.log

http://www.cnblogs.com/peida/archive/2012/10/30/2745714.html

34.cat 链接文件或输入并打印显示内容

http://www.cnblogs.com/peida/archive/2012/10/30/2746968.html

35.more 一页一页显示,用空格键下一页,按 b 键,返回上一页

more test.log
http://www.cnblogs.com/peida/archive/2012/11/02/2750588.html

36.tail 查看即时日志,不断刷新

tail -f  test.log

http://www.cnblogs.com/peida/archive/2012/11/07/2758084.html

37.find  查找搜索文件

find / -name test.log    #全部目录搜索  test.log 文件名
http://www.cnblogs.com/peida/archive/2012/11/16/2773289.html
http://www.cnblogs.com/peida/archive/2012/11/13/2767374.html

38.tar 压缩,解压缩

tar -zcvf log.tar.gz

http://www.cnblogs.com/peida/archive/2012/11/30/2795656.html

39.ln 建立连接,软连接,硬链接

ln -s log.log link2013
http://www.cnblogs.com/peida/archive/2012/12/11/2812294.html

40.date  时间

http://www.cnblogs.com/peida/archive/2012/12/13/2815687.html

41.grep 文本搜索

ps -ef|grep svn

http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html

42.ps  列出 当前运行进程

http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html

43.kill  终止/关闭/杀死 进程

kill -9 2123
http://www.cnblogs.com/peida/archive/2012/12/20/2825837.html

44.killall 终止/关闭/杀死 进程名称

killall mysql

http://www.cnblogs.com/peida/archive/2012/12/21/2827366.html

45.top 性能分析

http://www.cnblogs.com/peida/archive/2012/12/24/2831353.html

46.ifconfig  查看IP 网关 子网掩码

http://www.cnblogs.com/peida/archive/2013/02/27/2934525.html

47.netstat  显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况

http://www.cnblogs.com/peida/archive/2013/03/08/2949194.html

48.scp  远程复制文件

http://www.cnblogs.com/peida/archive/2013/03/15/2960802.html

49.wget  下载文件

wget http://url.com/test.zip
http://www.cnblogs.com/peida/archive/2013/03/18/2965369.html

31.groupadd   useradd

32./sbin/ldconfig

33.ulimit


35.sed

36.unset

37.netstat -ntl

38.#

39.update-rc.d

40./sbin/iptables



2>&1 | tee -a


更多命令

http://www.cnblogs.com/peida/tag/linux%E5%91%BD%E4%BB%A4/default.html

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
5月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
528 9
|
5月前
|
算法 Linux Shell
Linux实用技能:打包压缩、热键、Shell与权限管理
本文详解Linux打包压缩技巧、常用命令与原理,涵盖.zip与.tgz格式操作、跨系统传文件方法、Shell运行机制及权限管理,助你高效使用Linux系统。
Linux实用技能:打包压缩、热键、Shell与权限管理
|
5月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
516 2
|
7月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
880 0
|
7月前
|
监控 Linux 应用服务中间件
linux查看日志文件tail -f用法
在 Linux 中,查看和监控日志文件是系统管理员和开发者常用的操作之一。tail 命令就是用来查看文件内容的,它默认显示文件的最后部分。tail -f 是 tail 命令的一个非常有用的选项,用于实时查看和跟踪日志文件的更新,尤其是在监控运行中的服务时非常有用。
951 0
|
10月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
1001 25
|
9月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
268 4
|
9月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
517 3
|
10月前
|
Linux Shell
shell_42:Linux参数移动
总的来说,参数移动是Linux shell脚本中的一个重要概念,掌握它可以帮助我们更好地处理和管理脚本中的参数。希望这个解释能帮助你理解和使用参数移动。
226 18
|
11月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。