linux零基础入门总结
啊,notepad++贴过来怎么对齐格式这么糟糕呢?
#root用户
$普通用户
linux命令
清屏clear翻页清屏 CRT中ctrl+L
reset"清空
CRT中不起作用"
创建用户useradd a创建用户名为a的用户
设置密码passwd a设置用户a的密码(输入密码时内容显示)
切换用户su 切换到root,需密码
su - a切换到用户a,无需密码
pwd当前所在目录
主机名hostname 查看主机名
hostname xxxx临时设置主机名为xxx
vi /etc/sysconfig/network
hostname=xxxxx
在root用户下永久设置主机名为xxx
vi /etc/hosts
IP+空格+主机名
关机重启
halt 关机(root)
reboot或init 6重启(root)
SSH 登录
查看IP ipconfigwindows的命令
ifconfiglinux的命令
网络设置建议使用NAT模式
静态IP address 前三段和ifconfig得到的一致,最后一段任意
netmask 255.255.255.0
gateway VMware——编辑——虚拟机网络编辑器——NAT模式——NAT设置——网关
DNS 和gateway一致或8.8.8.8
(bridge模式用win下的DNS地址)
HWADDR 其实就是MAC地址
ping IP地址/域名/主机名
测试能否连通对应的地址
(注意关闭防火墙)
secureCRT
修改hosts文件 C:\Windows\System32\drivers\etc
(如不能保存请赋予当前用户权限)
IP+空格+带域名的主机名+简写的主机名
端口 22(filezilla、notepad++也是)
协议 SSH2(notepad++是SFTP)
需要: win的hosts文件配置+linux的静态IP配置+network文件配置
主机名、用户名和密码
自定义
配色方案ANSI+使用配色方案打钩
编码 UTF-8(linux中中文文件在CRT中显示乱码问题没解决)
字体大小
Xmanager4远程界面工具的端口是22,协议是SFTP
Ctrl+C 中断程式的执行
Ctrl+Z 暂停程式的执行,稍后可以按下fg或bg命令继续.
Ctrl+S 屏幕暂停输出
Ctrl+Q 屏幕恢复输出SSH 登录C:\Windows\System32\drivers\etc
secureCRT
修改hosts文件
(如不能保存请赋予当前用户权限)
IP+空格+带域名的主机名+简写的主机名
端口 22(filezilla、notepad++也是)
协议 SSH2(notepad++是SFTP)
需要: win的hosts文件配置+linux的静态IP配置+network文件配置
主机名、用户名和密码
自定义
配色方案ANSI+使用配色方案打钩
编码 UTF-8(linux中中文文件在CRT中显示乱码问题没解决)
字体大小
Xmanager4远程界面工具的端口是22,协议是SFTP
Ctrl+C 中断程式的执行
Ctrl+Z 暂停程式的执行,稍后可以按下fg或bg命令继续.
Ctrl+S 屏幕暂停输出
Ctrl+Q 屏幕恢复输出
文件和目录
目录
. 当前目录
.. 上级目录
cd change directory
单独cd 进入当前用户主目录
cd+目录名 进入指定目录
查看
ls 单独使用,或ls+目录路径
ll 更详细,等价于ls -l
ls -a 显示隐藏的文件夹(.开头)
类型
-文件
d 目录
l 链接
归属
u所属用户 user
g同组用户 group
o其他 other
文件权限
r 可读 2^2 4
w 可写 2^1 2
x可执行 2^0 1
- 无权限
rw- -> 4+2+0=6
修改权限
chmod (change mode)
chmod 归属者加号权限字母 被修改权限的文件
加号 增加某权限
减号 减去某权限
归属者加号权限字母也可以使用一组数字代替
如 chmode u+x readme.txt
chmode 664 readme.txt 修改u和g的权限为rw-,o的权限为r--
chmod -R 664 /opt/softwares
修改目录下的子文件/目录的权限为664(-R表示递归)
修改归属者
chown 新的所有者用户 被修改的文件
chown 新的所有者用户:新的所属组 被修改的文件
chown beifeng /home/hive-select-log.sql
修改所属用户为beifeng
chown -R beifeng /opt/softwares
修改目录下的所有的所属用户为beifeng
chown senior:senior /home/hive-select-log.sql
修改所属用户和组都为beifeng
chgrp 新的所有者用户 被修改的文件
chgrp beifeng /home/hive-select-log.sql
修改所属组为beifeng
创建文件/目录
创建文件
touch touch+文件名+后缀名 创建文件
(虽无后缀名之别,但总要区分)
创建目录
mkdir test
mkdir -p ~/data/dfs/tmp
创建多级目录
复制文件
cp 源文件src 目标目录destdir
1 /xxx 表示在主目录下的xxx目录(无权限被拒)
2 ./xxx 表示当前目录的xxx目录下面
xx要存在,否则写./xxx/报错(无法创建xxx)
如xx不存在,写./xxx,不保存,但创建了xx文件(内容复制过去了)
拷贝的时候建议写全目录
dest:文件/目录
目录:拷贝一个文件到一个目录dest中去
cp test.txt test-dir
文件时,拷贝一个文件的内容至一个文件dest中
cp test.txt cp-test.txt
如果该文件dest不存在,
则创建该文件并将source中的内容拷贝到这个文件
source:文件名/目录名
目录:将一个目录拷贝到另一个目录中去
如果dest目录存在
cp -r test-dir test-dir2
拷贝test-dir目录到一个名为test-dir2的目录下
如果dest目录不存在
cp -r test-dir test-dir2
test-dir2不存在,则会创建并拷贝test-dir中的内容过去
不要写成cp -r test-dir/ test-dir2
而cp -r test-dir test-dir2/
的意思是,拷贝目录test-dir到目录下
-r的意思是递归(因为test-dir中可能有很深的层次)
linux是严格区分大小写的。
在chmod中:-R, --recursive
在cp中: -R, -r, --recursiv
所以建议统一使用-R,不然还以为不区分呢
移动/重命名
mv src dest
重命名
src和dest在同一个目录下则是重命名
$ mv test-dir/ sub-dir(目录的重命名)
$ mv test.txt test.log(文件的重命名)
移动
src和dest不在同一目录
$ mv test-dir2/sub-dir/ test-dir
将test-dir2目录这的sub-dir目录中的文件移动到test-dir目录下
查看文件内容
* cat : 查看全部内容,内容比较少
cat 文件名
* more : 翻页查看
按下空格,查看下一页,向上滚动直接查看上面的
按下q退出
* tail : 末尾内容,通常与 -f参数连用,适合于查看服务实时动态日志信息
在正则中,\f是换页符
tail -f xxxx.log
默认的倒数x行
tail -200f yyy.log
倒数200行
* head : 开头文件,文件格式,内容模板样式
修改文件内容
vi编辑——->vim
i 编辑插入
end键 行末
G 文件末
esc 退出编辑模式
:wq 保存
:q!或:q回车 不保存
echo "second line" >> test.txt
追加新的一行内容(字符串"second line")到test.txt文件中
date >> bf-log.txt 向bf-log.txt文件中追加日期数据
在vi查看模式下(没按下i之前或者在按下i之后的编辑模式中按下esc)
* dd :表示删除光标所在的行的内容
* ZZ :表示的是保存文件内容(要是大写的,所以要打开大写锁定)
* x :表示将光标处的字符给删除
* o : 表示在光标的下一行进行插入内容(自动跳到下一行的行首)
帮助
nan 命令名
man中的相关操作
ctrl + F或者Page Down:向下翻页
ctrl + B或者Page Up:向上翻页
gg到第一行
GG到最后一行
/start:能在整手册中搜索start相关字符,使用n查找下一个,使用N查找上一个
j,k与vi中一样使用,j向下一行,k向上一行
d下翻半页
u上翻半页
h获取man使用帮助
q退出man
tab自动补全
系统信息:
uname 系统类型
uname -r 内核版本
cat /proc/cpuinfo CPU信息
cat /proc/meminfo 内存信息
who 显示当前的终端
系统时间
date查看当前的系统时间
date -R 显示系统时间+市区
root用户下:
hwclock 查看当前的硬件时间
cal+xx年xx月 显示xx年xx月日历
which date 查看date命令是在哪里
date +%Y-%m-%d\ %H:%M:%S 使其格式化显示: 年-月-日 时:分:秒
2016-07-08 14:09:17
注意上面由于中间需要空格,所以加了转义字符\
/bin/date +%Y-%m-%d\ %H:%M:%S
等价于上一条命令
/bin/date +%Y/%m/%d\ %H:%M:%S
2016Y/07/08 14:10:02
安装软件
rpm -qa|grep xxxx 查看都安装了哪些版本的xxx软件
rpm -e --nodeps xxxxxx 强制卸载xxx软件(所谓强制就是有依赖它的我也要卸载)
查看帮助文档可以看到:
--nodeps
Don’t do a dependency check before installing or upgrading a package.
不检查相关的依赖
rpm -ivh xxx.rpm 安装rpm格式的软件包
解压/压缩zip yy.zip file 将file压缩为名为xxx.zip的文件
tar -zcvf zzzz.tar.gz dir 将dir目录压缩成zzzz.tar.gz
unzip xxx.zip 解压
tar -zxvf xxxx.tar.gz 解压到当前目录
tar -zxvf xxxx.tar.gz -C dir 将dir目录压缩成zzzz.tar.gz
-v, --verbose
verbosely list files processed
就是在屏幕上显示解压出来的那些文件,建议不用
安装jdk 1下载tar.gz(1.7)
2tar -zxf xxx.tar.gz -C 目录
3#vi /etc/profile 配置JAVA_HOME
export JAVA_HOME=xxxxx
export PATH=$PATH:$JAVA_HOME/bin
4source /etc/profile
5echo $JAVA_HOME 回显
6java -version 检验
sudo权限 1# vi /etc/sudoers
添加
要设置权限的用户的用户名 ALL=(root)NOPASSWD:ALL
如:test ALL=(root)NOPASSWD:ALL
以后sudo+命令等价于在root下使用此命令
任务调度crontab
crontab -l列出目前所有的定时任务
crontab -r删除所有的定时任务
crontab 基本定义
语法:
* * * * * command
说明:
1)六个字段之间,使用逗号隔开
2)字段的含义
* * * * *
分:1-59, 每十分钟 */10
时:0-23,*/2
日:1 -31
月:1-12
星期:(0-6)
举一些例子:
### 每天21:30 执行
30 21 * * * cmd01
### 每个月1,11,21 的2:30执行
30 2 1,11,21 * * cmd02
### 每周六或者每周日,1:45 执行(星期一是0)
45 1 * * 6,0 cmd03
### 每天20:00至 23:00 ,每半个小时执行一次
0,30 20-23 * * * cmd04
或者写
*/30 20-23 * * * cmd04
### 每一小时执行一次
* */1 * * *cmd05
为什么要加/呢?
*/1表示每一分钟
1表示第一分钟
Shell脚本
#! shell脚本第一行用其坐开头指定用哪个程序来编译或执行该shell
name=hadoop
创建变量name,其值为hadoop
(等号前后不能有空格)
echo ${name}或echo name
查看变量name的值
(当然,如果我此时重新克隆一个窗口,那么是不能引用到这些本地变量的)
/etc/profile中存放的是系统的全局变量
.bash_profile
该文件在用户主目录下,可以设置用户的环境变量
testst.sh 一个名为test的shell脚本文件(shell脚本文件以.sh结尾)
执行 . testst.sh
sh testst.sh
bash testst.sh
这里的dot(表示执行)
以上三种执行方式都可以(可能有细微差别)
bash testst.sh localprama1 参数值2
运行testst.sh脚本,并传入两个参数值
bash testst.sh localprama1 " localprama2 key3"
当值中含有空格的时候,要用双引号
${0} 在shell脚本中表示当前脚本的文件名
${1} 表示第一个参数(可以理解为传入的值对于的变量吧)
也可以使用$1,但是推荐${1},因为0=9再往后就必须加花括号了
${#} 位置参量个数
echo $? 运行一条命令,紧接着运行此命令,
可以显示刚刚运行的那条命令的状态码
0表示成功,其他表示有问题
数组
arr=(xuan lingya yu)
echo ${arr[2]} 查看数组中第三个元素的值(角标从0开始)
yu
echo ${arr[*]} 查看数组中所有元素的值
xuan lingya yu
echo ${#arr[*]} 数组元素的个数
3
echo ${arr}
xuan
echo ${arr[0]} 数组名等价于数组中角标为0的元素
xuan
arr[0]=me 修改数组中元素的值
echo $arr
me
$(命令) 里面写的是命令
${变量} 里面写的是变量
[]的作用:判断语句的true/fasle,等价于tes(细节比较多)
控制结构,还是参考鸟哥的书吧,想系统的学习下的话
附件列表
苍茫大海,旅鼠它来!