Linux
path设置:环境变量path,命令搜索路径
vi /root/.bashrc
path=$path:路径
export path=$path:/usr/local/apache/bin export可有可无
export path=/usr/local/mysql/bin:$path
echo "export PATH=\$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh
animals=pig
animals=$animals:goat 追加goat到变量animals中
mkdir:创建目录
mkdir -v (verbose) 详细信息
mkdir -p /mnt/test/{x/m,y} {}:命令行展开
目录管理:
ls、cd、pwd、mkdir、rmdir、tree
文件管理:
touch、stat、file、rm、cp、mv、nano
日期时间:
date、clock、hwclock、cal
查看文本:
cat、tac、more、less、head、tail
bash:
shell自身也是一个可执行文件,输入用户名和密码之后启动了shell
type bash:bash自身是外部命令,是一个进程,但带有内部命令
bash有子bash之称,在终端中输入两次bash,用pstree即可查看到,退出当前bash,用exit
bash:
1、命令历史、命令补全
2、管道、重定向
3、命令别名
4、命令行编辑
5、命令行展开
6、文件名通配
7、变量
8、编程(shell 脚本)
命令行编辑:
光标跳转:
ctrl+a命令行首
ctrl+e命令行尾
ctrl+u删除光标至命令行首的内容
ctrl+k删除光标至命令行尾的内容
ctrl+l清屏
命令历史:bash会自动记录过去执行过的命令,会保存在内存的一段缓存history中
history -c 删除历史
history -d 500 删除第500个
history -d 500 10删除第500以后的10个
history -w保存命令历史至历史文件
histsize 命令历史缓存区大小,echo $HISTSIZE,进程结束了,内存缓存区就会没了。正常关机的时候,缓存会被保存到家目录的.bash_history隐藏文件中
!n执行命令历史中的第n条命令
!-n执行命令历史中的倒数第n条命令
!!执行上一条命令
!字符串:表示执行命令历史中以指定字符串开头的命令
!$引用前一个命令的最后一个参数
按下esc,在按点:表示引用前一个命令的最后一个参数
ctrl+点:表示引用前一个命令的最后一个参数
tab补全:
命令补全:在path环境变量搜索补全的
路径补全:在给的字符串打头路径中搜索
命令别名:给命令起另外一个名字,别名只在shell进程的生命周期有效;为了永久有效,可以在shell的配置文件中写明,作用范围设置可以全局有效
alias:显示系统的所有别名
alias cmdalias=’command [options] [arguments]’
alias cls=clear
type alias:显示alias为shell内部命令
unalias+别名:撤销别名
\别名:使用命令本身
echo "alias mysqlroot='mysql -uroot -hlocalhost -p'" >> /etc/rc.d/rc.local
echo "alias mysqlroot='mysql -uroot -hlocalhost -p'" >> /root/.bashrc
命令替换:把命令的某个子命令替换其执行结果的过程$(command)=反引号(左边波浪线的)`command`
echo “the current directory is $(pwd)”
touch ./file-$(date +%Y-%m-%d_%H:%M:%S).txt
bash支持的引号:
``命令替换
“”弱引用,可以实现变量替换,变量替换:本来是变量名,把它替换成变量中的值
‘’强引用,不完成变量替换
命令行展开机制:
~~
{}展开
名称展开:又称文件名通配(globbing):
*匹配任意长度的任意字符
?匹配任意单个字符
[]匹配指定范围内的单个任意字符[a-za-z] ls a*
[^]:匹配指定范围之外的任意单个字符
[:space:]空白字符
[:punct:]标点符号
[:lower:]小写字母
[:upper:]大写字母
[:alpha:]大小写字母
[:digit:]数字
[:alnum:]数字和大小写字母
[[:alpha:]]*[[:space:]]*[^[:alpha:]]
man 7 glob
bash的配置文件:
全局配置:
/etc/profile /etc/profile.d/*.sh /etc/bashrc
个人配置:
~/.bash_profile ~/.bashrc
profile类的文件:
设置环境环境
运行命令或脚本(一登录就显示什么信息等)
bashrc:
设置本地变量
定义命令别名
登录式shell如何读取配置文件?
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非登录式shell如何读取配置文件?
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
定义别名永久生效(只对本用户生效):下次登录有效
vi ~/.bashrc
alias cls=clear
定义登录进来显示一些信息(只对本用户生效)
vi ~/.bash_profile
echo “hello,hive,welcome to our system it is `date`”
定义登录时umask为027(默认为002,在/etc/bashrc中定义了)
vi ~/.bash_profile
umask 027
系统设定:
默认输出设备:标准输出:stdout 文件描述符 1 显示器
默认输入设备:标准输入:stdin 0 键盘
标准错误输出(与标准输出是不同的数据流):stderr 2 显示器
io重定向:改变输入来源和输出设备
< 输入重定向 cat < /etc/fstab tr 'a-z' 'a-z' < /etc/fstab
<< 在此处生成文档 cat << end/eof
> 输出重定向ls /var > /home/zhoudizhuang/1,覆盖输出(原有内容覆盖掉)
>> 追加输出,在文件尾部在添加,不覆盖原有内容
2> 重定向错误输出
2>> 追加方式重定向错误输出
&> 重定向标准输出或错误输出到同一件文件
cat >> /home/mozhuang/1.txt << end 输入内容放到1.txt中,end为结束标志
set -c 不准覆盖,这种情况下强制覆盖输出,使用 >| +c允许覆盖
2>&1 表示2的输出重定向等同于1
1>&2 啥输出都没有
1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
command > filename 2>&1 把标准输出和标准错误一起重定向到filename文件中(覆盖)
command < filename >filename2 把标准输入重定向到filename文件中,把标准输出重定向到filename2文件中
管道:前一个命令的输出当做后一个命令的输入
命令1 | 命令2 :命令1的输出作为命令2的输入
echo “hello” | tee /home/mozhuang/1.txt
tee :既能将数据保存到文件中,又能输出到屏幕