ls /usr/bin/ info #路径操作 dirname basename #“”和‘’与 ` ` 在shell变量中的区别 “ ” 允许通过$符引用其他变量 ‘’禁止引用其他变量符,视为普通字符 `` 将命令执行的结果输出给变量 #执行一个命令,但不保存在命令历史记录中 <space>command man ascii #并行执行的命令之间添加&,多条命令就可以并行执行。 ls & echo 'aaaaaaaa' & echo 'fesfsfse' #串行执行命令“&&”。如果要查看一个程序所执行的时间,可以使用命令date&&./需要执行的程序&&date来查看 #shell1 && shell2 ,如果是用&&符连接的,那只有在shell1返回0(即正常)时,shell2才会执行,否则shell2根本就不执行,所以前面说得最后一种cd&&rm的这种做法是可行的,而且是安全的。那||呢,对于shell1||shell2,只有在shell1执行失败时,shell2才会执行,否则shell2是不执行得 常用的 for 循环{ #for循环 a="a b c d e f" for x in $a; do echo $x+'q'; done for x in {1..9}; do echo $x; done for x in `seq 30`; do echo $x; done select a in 1 2 3 4 5 6 7; do echo $a; done #创建选择菜单,无限循环 sh -v install.sh #查看执行的代码 sh -n install.sh #语法检查,没有错误不显示内容 f=/home/config.ini while read -r b; do echo $b+'dada'; done < "$f" #一行一行读取文件 while read b; do echo $b+'dada'; done < $f while read b; do echo "your input is $b"; done #读入键入的内容 cat 1.txt |while read line; do echo $line; done #读取文件 for x in `cat 1.txt`; do echo $x; done #按空格和回车读取文件 } done & #后台执行循环 echo $SHELL #查看当前环境所使用的shell解释器 #脚本一般第一行为:#!/bin/bash chsh -l #查看系统支持哪些shell解释器 whereis ls # 查找命令的目录 which # 查看当前要执行的命令所在的路径 echo -n 123456 | md5sum # md5加密 vi /etc/hosts # 查询静态主机名 alias # 别名 vmstat 1 9 # 每隔一秒报告系统性能信息9次 ps aux |grep -v USER | sort -nk +4 | tail # 显示消耗内存最多的10个运行中的进程,以内存使用量排序.cpu +3 uname -a # 查看Linux内核版本信息 stty 用来改变并打印终端行设置的常用命令 >密码 read -t 10 varname # 更简单的方法就是利用read命令的-t选项 iptables -F # 将防火墙中的规则条目清除掉 /etc/init.d/sendmail start # 启动服务 /etc/init.d/sendmail stop # 关闭服务 /etc/init.d/sendmail status # 查看服务当前状态 /date/mysql/bin/mysqld_safe --user=mysql & # 启动mysql后台运行 vi /etc/rc.d/脚本.sh # 开机启动执行 可用于开机启动脚本 /etc/rc.d/rc3.d/S55sshd # 开机启动和关机关闭服务连接 # S开机start K关机stop 55级别 后跟服务名 rsync -avzP -e "ssh -p 22" /dir user@$IP:/dir # 同步目录 # --delete 无差同步 删除目录下其它文件 ifconfig eth0:0 192.168.1.221 netmask 255.255.255.0 # 增加逻辑IP地址 mtr -r www.baidu.com # 测试网络链路节点响应时间 # trace ping 结合 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all # 禁ping ipcalc -m "$ip" -p "$num" # 根据IP和主机最大数计算掩码 ssh -p 22 root@192.168.1.209 CMD # 利用ssh操作远程主机 scp -P 22 文件 root@ip:/目录 # 把本地文件拷贝到远程主机 scp -r root@192.168.1.209:远程目录 本地目录 # 把远程指定文件拷贝到本地 sshpass -p '密码' ssh -n root@$IP "echo hello" # 指定密码远程操作 ssh -o StrictHostKeyChecking=no $IP # ssh连接不提示yes du -h 目录 # 检测目录下所有文件大小 du -sh * # 显示当前目录中子目录的大小 #鸟整理 ls -l --full-time #显示具体时间 ls --full-time resource/ LANG=en_US #修改诧系 ls -R resource/ #递归显示 users # 显示所有的登录用户 groups # 列出当前用户和他所属的组 who -q # 显示所有的登录用户 groupadd # 添加组 useradd user # 建立用户 passwd 用户 # 修改密码 chown -R user:group # 修改目录拥有者(R递归) chown y.li:mysql # 修改所有者用户中包含点"." umask # 设置用户文件和目录的文件创建缺省屏蔽值 chgrp # 修改用户组 finger # 查找用户显示信息 echo "xuesong" | passwd user --stdin # 非交互修改密码 useradd -g www -M -s /sbin/nologin www # 指定组并不允许登录的用户,nologin允许使用服务 useradd -g www -M -s /bin/false www # 指定组并不允许登录的用户,false最为严格 usermod -l 新用户名 老用户名 # 修改用户名 usermod -g user group # 修改用户所属组 usermod -d 目录 -m 用户 # 修改用户家目录 usermod -G group user # 将用户添加到附加组 gpasswd -d user group # 从组中删除用户 su - user -c " #命令1; " # 切换用户执行 脚本{ #!/bin/sh # 在脚本第一行脚本头 # sh为当前系统默认shell,可指定为bash等shell sh -x # 执行过程 sh -n # 检查语法 (a=bbk) # 括号创建子shell运行 basename /a/b/c # 从全路径中保留最后一层文件名或目录 dirname # 取路径 $RANDOM # 随机数 $$ # 进程号 source FileName # 在当前bash环境下读取并执行FileName中的命令 # 等同 . FileName sleep 5 # 间隔睡眠5秒 trap # 在接收到信号后将要采取的行动 trap "" 2 3 # 禁止ctrl+c $PWD # 当前目录 $HOME # 家目录 $OLDPWD # 之前一个目录的路径 cd - # 返回上一个目录路径 local ret # 局部变量 yes # 重复打印 yes |rm -i * # 自动回答y或者其他 ls -p /home # 查看目录所有文件夹 ls -d /home/ # 查看匹配完整路径 echo `ls` #执行 ls echo -n aa;echo bb # 不换行执行下一句话 将字符串原样输出 echo -e "s ss " # 使转义生效 echo $a | cut -c2-6 # 取字符串中字元 echo {a,b,c}{a,b,c}{a,b,c} # 排列组合(括号内一个元素分别和其他括号内元素组合) echo $((2#11010)) # 二进制转10进制 echo aaa | tee file # 打印同时写入文件 默认覆盖 -a追加 echo {1..10} # 打印10个字符 printf '%10s '|tr " " a # 打印10个字符 pwd | awk -F/ '{ print $2 }' # 返回目录名 tac file |sed 1,3d|tac # 倒置读取文件 # 删除最后3行 tail -3 file # 取最后3行 outtmp=/tmp/$$`date +%s%N`.outtmp # 临时文件定义 :(){ :|:& };: # 著名的 fork炸弹,系统执行海量的进程,直到系统僵死 echo -e "e[32m....e[0m" # 打印颜色 echo -e "