由于非linux系统开发和管理员,只做了基础的学习及实际工作中经常使用的命令整理
linux是基于uninx重新开发而来,开源之后,自动演变了很多版本。
目前比较流行的版本red hat,fedora,ubuntu等都是由最初的演变版本中的分支。
具体历史可以看看(linux宝典 christopher negus),挺有意思的。学习内容也是来源于此书。
1、SHELL
用来解释和管理命令的程序;不同的linux版本包含的shell可能不同,大多数发行版本都包括Bash shell并将其视为一个标准。
启动:linux中可以有三种方式启动shell
- shell提示符,linux系统输入账号密码登录进去,的后台输入命令的地方
$ 表示普通用户,# 表示管理员用户 - terminal窗口
对于桌面的linux,会有这个功能 - 虚拟控制台
可以通过CTRL+ALT+F1~F6 打开多个虚拟控制台启动shell
语法:
- 关于-和–的区别
-表示命令选项是单个字符,即使是多字符,也会解析成单字符
–表示命令选项是多字符。
比如:ls -lat 等同于 ls -l -a -t
hostname --help 就需要使用– - 带参数选项
如果选项是单字符,对参数使用空格
如果选项是多字符类型,对参数使用=
比如:ls --hide=config
tar -cvf aaa.tar /home/aaa - 命令内容
- 以文本或常规字符开头:表示命令,别名或函数
- $ 开头:表示变量
- ~ 开头:表示用户
- @ 开头:表示主机名
- 管道符|
一个命令的输出,到另一个命令的输入
cat /etc/passwd | sort | less
将passwd文件内容发给sort命令排序,将排序结果发给less命令显示 - 连续命令 ;
一个命令执行完,连续执行下一个命令,使用;
date;mail -s “test command” zwdong5@163.com
输出日期,并发送邮件 - 后台命令 &
如果命令执行时间较长,不想shell占用命令等待完成,可以在命令结尾加上& 使其在后台执行 - 扩展命令 $(command)
一条命令的标准输出,变成另一条命令的一个参数
vi $(find /home | grep aaa) - 扩展算数表达式 $(expression) / $[expression]
echo “我已经 $[2020-1994] 岁了”
echo “文件列表 : $(ls | wc -w)” - 扩展变量
使用shell变量
ls -l $BASH
echo $USER
命令查找:
- 直接指定路径运行命令
/bin/ls - 命令的位置
将命令目录加到PATH中
echo $PATH 打印path内容
大多数命名在/bin(当前用户),/user/bin,/user/local/bin(所有用户都可用);/sbin/,/usr/sbin包含管理命令
path路径顺序很重要,如果存在相同命令,优先最左边的目录中的命令
除了path中,还有一些内置于shell中的命令
shell检查所输入命令的顺序:
1. 别名 alias设置的
2. shell保留字
3. 函数
4. 内置命令
5. 文件系统命令(path)
通过type关键字可以检查命令出处:如 type tar - 历史记录
shell history 是一个以前所有输入命令的列表,通过history命令查看;历史记录保存在.bash_history中,默认保存1000条。
ctrl+L 清屏
利用历史记录,可使命令行重复执行
通过!+历史记录编号,可以重复执行命令:!202
创建和使用别名,通过别名执行命令:
alias查看定义的别名
新增别名
$ alias p=‘pwd ; ls -CF’
shell配置:
1、/etc/profile 用户级环境变量,首次登录执行(root用户)
2、/etc/bashrc 每次打开一个bash shell执行(root用户)
3、~/.bash_profile 用户登录执行
4、~/.bashrc 特定于bash shell的信息,打开新shell执行
5、~/.bash_logout 注销时执行
环境变量添加:
PATH=$PATH:/bin/aaa;export PATH
表示在原path下增加目录,并导出path
问题记录:
$’\r’: command not found
windows下编写的脚本会出现此问题
可以直接替换:sed -i ‘s/\r//’ export.sh