linux 常用操作:
常见的 linux 操作系统有 redhat、centos、ubuntu、federo、debian。
使用的 centos 的版本是 6.5 64 位。
shell 环境,类似于 windows 的 dos 环境。
linux 的环境中,有文件系统。只要一个根目录/。
1. 必须记住的命令
- id
id 命令可以显示真实有效的用户 ID(UID) 和组 ID(GID)。UID 是对一个用户的单一身份标识。组 ID(GID)则对应多个UID。 - passwd
用途:修改密码
使用:直接输入命令 passwd 然后回车,根据提示输入即可。 - clear
用途:清屏,把当前屏幕中的命令清除
使用:输入 clear 直接回车 - su
用途:切换到其他用户
使用:输入 su root 回车,然后输入 root 密码;使用 exit 退出当前用户 - ls
用途:查看目录下的内容。使用.开头的文件(夹)都是隐藏的。
使用:
输入 ls /home 回车,显示/home 下面的子目录或者文件
输入 ls 直接回车,显示当前用户的 home 目录下的内容
输入 ll 直接回车,显示如下内容
[root@hadoop sys]# ll
total 0
drwxr-xr-x. 2 root root 0 Apr 20 17:53 block
drwxr-xr-x. 16 root root 0 Apr 20 17:53 bus
drwxr-xr-x. 41 root root 0 Apr 20 17:53 class
drwxr-xr-x. 4 root root 0 Apr 20 17:53 dev
drwxr-xr-x. 10 root root 0 Apr 20 17:53 devices
drwxr-xr-x. 4 root root 0 Apr 20 17:53 firmware
drwxr-xr-x. 4 root root 0 Apr 20 17:54 fs
drwxr-xr-x. 2 root root 0 Apr 20 17:54 hypervisor
drwxr-xr-x. 5 root root 0 Apr 20 17:53 kernel
drwxr-xr-x. 100 root root 0 Apr 20 17:54 module
drwxr-xr-x. 2 root root 0 Apr 20 17:54 power
输入 ll -h /opt 直接回车,显示的文件大小,是以 K、M、G 作为单位的,方便查看大小
输入 ll -a ~直接回车,显示当前用户的 home 目录下的所有文件,包含隐藏文件 - pwd
用途:显示当前在 linux 文件系统中所在的位置
使用:输入 pwd 直接回车 - cd
用途:改变路径
使用:
输入 cd …直接回车,表示返回到上一级目录
输入 cd /home/xxxxx 直接回车,表示进入到特定的目录下
输入 cd ~直接回车,表示进入到当前用户的 home 目录下 - mkdir
用途:创建文件夹
使用:
输入 mkdir dir1 直接回车,表示在当前目录下创建文件夹 dir1
输入 mkdir -p dir2/dir22/dir222 直接回车,表示递归创建三级文件夹 - touch
用途:创建空白文件
使用:输入 touch f1 直接回车,创建一个空白文件 f1 - cp
用途:复制文件
使用:
输入 cp a dir1 直接回车。如果目录 dir1 存在,则复制 a 到 dir1 中;如果不存在,
复制成文件 dir1
输入 cp -r dir1 dir2 直接回车。把目录 dir1 复制到 dir2 里面。 - mv
用途:移动或者重命名
使用:输入 mv a dir2 直接回车。如果目录 dir2 存在,则移动 a 到 dir2 中;如果不存在,
把 a 重命名为 dir2 - rm
用途:删除文件(夹)
使用:
输入 rm dir1 直接回车,可以删除空文件夹 dir1
输入 rm -rf dir2 直接回车,可以删除非空文件夹 dir2,严禁乱用 - vi
用途:编辑文件内容
使用:
输入 vi f1 直接回车,进入一个只读模式,这时候只能看不能编辑内容;输入字母 i,可
以编辑内容;如果想保存退出,先按 Esc 键,再输入 Shift+:,再输入 wq(如果输入 q!
表示不保存退出),最后回车。
/string 查找字符串。查找下一个,按“n”即可
:10 (直接跳转到第 10 行)
G (跳到文件最后一行)
$ (跳到一行的最后)
^ (跳到一行的开头)
yy (复制当前行)
2 yy (从当前行开始,复制 2 行)
p (粘贴)
dd (删除当前行) - more
用途:分屏查看文件的内容
使用:输入 more f1 直接回车。如果文件内容一屏幕显示不下,按 Enter 键可以一行行显
示;按空格键,可以一屏屏显示。 - cat
用途:显示文件的所有内容
使用:
输入 cat /opt/nexus/LICENSES.txt 直接回车。
输入 cat -n /opt/nexus/LICENSES.txt 直接回车,显示全部内容,每一行前面带有行号。 - tail
用途:显示文件最后的一些内容
使用:
输入 tail /opt/nexus/LICENSES.txt 直接回车,显示文件的最后 10 行。
输入 tail -5 /opt/nexus/LICENSES.txt 直接回车,显示文件的最后 5 行。
输入 tail -f log 直接回车,动态查看文件内容变化。 - chmod
用途:修改文件(夹)权限
使用:
输入 chmod g+w /tmp/hello 表示给 group 增加 w 权限
输入 chmod o+x /tmp/hello 表示给 other 增加 x 权限
输入 chmod a+x /tmp/hello 表示给 all(包含 user、group、other)增加 x 权限
输入 chmod 777 /tmp/hello 表示所有人有所有权限
linux 中的文件(夹)的权限有 9 位字符组成,字符可能是-、r、w、x。
-表示没有权限
r 表示读权限
w 表示写权限
x 表示执行权限
r w - r - - r - -
这 9 位字符的顺序是固定死的,不能变动。接下来收一下每一位的含义:
前三位表示文件所有者的权限,其中第一位表示读权限,第二位表示写权限,第三位表示执
行权限;
中间三位表示所在组的权限,其中第一位表示读权限,第二位表示写权限,第三位表示执行
权限;
最后三位表示其他人的权限,其中第一位表示读权限,第二位表示写权限,第三位表示执行
权限;
字符 r w - r - - r - -可以使用数值表示,会更加简单。
r 使用 4 表示,w 使用 2 表示,x 使用 1 表示,-使用 0 表示。
上面的字符就可以表示为 420 400 400
每一组的数字相加,就变为 644,这就是使用数值表示权限的最终结果。
下面把权限 6 转换为字符表示形式:
6 可以分解为 4+2+0,对应字符表示就是 rw-
默认情况下,创建的文件的权限是 644,创建的文件夹的权限是 755。 - tar
用途:文件(夹)打包和解包。通常使用压缩算法
使用:
tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
tar -czvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
tar -cjvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
tar -xzvf /tmp/etc.tar.gz <==解包
特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
如果加 j 参数,则以 .tar.bz2 来作为附档名啊~ - du
用途:查看文件(夹)占有的大小
使用:
du -h / 查看根目录下所有的文件(夹)的大小
du -h / --max-depth=1 > a 查看根目录下的第一级目录的大小,把结果输出到文件
a 中 - df
用途:查看磁盘的使用和剩余情况
使用:输入 df -h /home 查看/home 的磁盘使用情况 - find
用途:查找特定文件
使用:输入 find /home -name f1 > f2 表示在/home 目录中查找文件名是 f1 的所有文
件,把结果输出到文件 f2 中 - grep
用途:在文件中查找内容
使用:
输入 grep -in --color=auto me /tmp/hello 表示从文件/tmp/hello 中查找含有 me
的行,不区分大小,显示行号,且高亮所在行
输入 grep -inv --color=auto me /tmp/hello 表示从文件/tmp/hello 中查找不含有
me 的行,不区分大小,显示行号,且高亮所在行 - ping
用途:测试网络是否联通
用法:ping ip 测试是否联通 ip - ifconfig
用途:查看本机 ip
使用:输入 ifconfig 直接回车 - netstat
用途:查看网络的外部连接情况
使用:netstat -anp | grep 8081 查询所有的连接情况,然后过滤含有 8081 的行 - service
用途:查看 linux 已经安装的服务的情况
使用:service iptables status|start|stop 查看防火墙的状态、启动防火墙、关闭防火墙 - iptables
用途:防火墙
使用:
service iptables status 查看防火墙服务的运行情况
service iptables stop 关闭防火墙的运行 - ps
用途:查看 linux 的进程
使用:输入 ps -ef |grep nexus 显示所有进程,过滤含有 nexus 的进程
ps –A 列出所有的进程
ps a 显示一个终端的所有进程,除了会话引线
ps aux - kill
用途:杀死进程
使用:kill -9 进程号 表示直接杀死特定进程 - chkconfig
用途:显示操作系统安装的服务的自动启动情况
使用:
输入 chkconfig --list |grep iptables 表示查看服务 iptables 的自动启动情况
输入 chkconfig iptables off 表示关闭 iptables 的自动启动 - ssh
是 secure shell 意味着在使用的时候,对数据加密。
用途:登录远程的服务器
使用:
ssh 用户名@ip 表示使用特定用户名登录远程 ip
ssh 用户名@ip ‘命令’ 表示使用特定用户名登录远程 ip,运行命令
实现 ssh 的免密码登录
- 执行 ssh-keygen -t rsa 然后一路回车,创建密钥
- 执行 ssh-copy-id -i 对方 ip 表示复制公钥到对方 ip
- scp
用途:远程复制文件(夹)
使用:
执行 scp xxx root@ip:/home 表示复制本机的 xxx 文件到远程 ip,使用 root 登录,
放到/home 目录下
执行 scp -r dir1 root@ip:/home 表示复制本机的 dir1 文件夹到远程 ip,使用 root
登录,放到/home 目录下 - echo 和变量
用途:显示变量的值。在 linux 中,变量使用的时候,没有类型的声明。直接使用 age=23 的
形式。
使用:
输入 echo KaTeX parse error: Unexpected character: '' at position 42: …age 没有定义,输出空白。 ̲ 输入 echo ‘age’回车,输出KaTeX parse error: Unexpected character: '' at position 16: age 表示单引号不解析变量 ̲ 输入 echo “age”回车,输出 23 表示双引号解析变量
输入 echo$age
回车,输出 23:command not found 表示飘号的作用是解析变量并
且作为命令运行,相当于$()
变量赋值的时候,=前后不能有空格。
echo n a m e 相 当 于 name 相当于 name相当于{name} - export
用途:export 的作用是让变量在子 shell 中生效。
使用:输入 export age=23 表示变量 age 可以在子 shell 中使用(输入 sh 就可以进入子 shell)
2. 非必须的命令
- which
用途:查找命令所在的路径
使用:which java 查找 java 命令所在的位置 - hostname
用途:显示当前的主机名
使用:
输入 hostname 显示当前主机名
输入 hostname newname 修改当前会话中的主机名为 newname
操作系统的主机名存放在配置文件中,该文件是/etc/sysconfig/network
修改了主机名之后,需要修改 hostname 与 ip 的映射,该映射存放在/etc/hosts 中 - ln
用途:ln 表示连接,分为硬连接和软连接
使用:
[oracle@Linux]$ touch f1 #创建一个测试文件 f1
[oracle@Linux]$ ln f1 f2 #创建 f1 的一个硬连接文件 f2
[oracle@Linux]$ ln -s f1 f3 #创建 f1 的一个符号连接文件 f3
[oracle@Linux]$ ls -li # -i 参数显示文件的 inode 节点信息 - alias
用途:给其他命令起一个名字
使用:alias nt=’netstat -anp’ 表示使用 nt 作为一个命令,代替 netstat -anp 的写法 - free
用途:查看内存的使用情况
使用:输入 free -m 回车,以 MB 为单位显示内存的情况 - yum
用途:使用 yum 安装、卸载软件。使用 yum 安装的时候,会自动安装关联的一些软件。
使用:
安装软件 yum -y install httpd 表示按照 httpd 软件
查看安装 yum list installed
删除软件 yum erase - rpm
用途:rpm 是 redhat 公司的 package manager,类似于 windows 下的 exe 文件的安装
使用:
查看安装 rpm -qa |grep …
彻底删除 rpm -e --nodeps gdm-2.24.1-4.fc10.i386 - wget
用途:从网络中下载一个文件
使用:输入 wget url 表示下载该 url 表示的内容 - wc
用途:统计单词数量
使用:如下图
47 表示行数量,325 表示单词数量 - chown
用途:改变文件的所有者
使用:chown wuchao:offline6 index.html 表示把 index.html 的所有者改为
wuchao,所在组改为 offline6 - date
用途:显示日期
使用:输入 date 然后回车,显示当前时间
格式化输出当前时间 date ‘+%Y-%m-%d %H:%M:%S’
按照日期创建文件夹(注意 date 外面的飘号) - 标准输入、标注输出、标准错误
标准输入、输出、错误可以使用文件描述符 0、1、2 引用
使用重定向可以把信息重定向到其他位置
ls >file 或者 ls 1>file(ls >>file)
lk 2>file(lk 是一个错误命令)
ls >file 2>&1
ls > /dev/null(把输出信息重定向到无底洞)
例子:nohup command >/dev/null 2>&1 & - nohup
用于在后台执行命令 nohup command 1>nohup.out 2>&1 &10.2.14. read
用途是从命令行读取内容。
read 变量 1 变量 2 变量 3
read -p ‘请输入姓名和年龄’ 变量 1 变量 2 - history
用途是显示执行过的所有命令
!4 表示执行第 4 条命令 - telnet
可以在 dos 命令下登录 linux 环境。
缺点是明文传输。
3. 数组
arr=(1 2 3) //初始化
echo ${arr[0]} //取值
echo ${arr[]} //显示数组中的全部内容
echo ${#arr[]} //数组长度
4.if 判断
1、if 与[ 之间必须有空格
2、[ ]与判断条件之间也必须有空格
3、]与; 之间不能有空格
if [[ … ]]; then
elif[[ … ]]; then
elif[[ … ]]; then
else
fi
整数判断的表达式有 -gt、-lt、-ge、-le、-eq、-ne
字符串判断的表达式有 =、!= 、-z 判断长度为 0、-n 判断长度不为 0
文件判断的表达式有 -e 判断文件存在、-d 判断目录存在
5.for 循环
- 格式 1
for(( i=0; i<10; i++))
do
echo $i
done; - 格式 2
for i in 1 2 3 4 5
do
echo $i
done - 格式 3
for i in {1…9}
6.source
用途:在当前 shell 环境下读取并执行 FileName 中的命令。
注:该命令通常用命令“.”来替代。
7. 安装 jdk
在 shell 中,能够执行的命令是一定在 PATH 变量中定义的。
安装时,先下载 jdk-8u91-linux-x64.tar.gz 这是一个使用 gzip 压缩的 tar 包。
执行 tar -zxvf jdk-8u91-linux-x64.tar.gz 解压缩,得到 jdk1.8.0_91
修改全局文件/etc/profile,在文件最后增加两行
export JAVA_HOME=/opt/jdk
export PATH=.:
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH
保存退出,执行 source /etc/profile。
如果需要配置自己使用而其他用户不使用命令,需要修改配置文件~/.bashrc,最后执行
source ~/.bashrc。
8.cygwin
在 windows 上模拟 linux 操作环境的工具,不能等同于虚拟机,好处是占有资源非常少。
切换 windows 的盘符时,与 linux 有所不同。见下面
中文乱码的解决方案 http://jingyan.baidu.com/article/a17d528532ba818099c8f263.html
9. shell 脚本
- 书写格式
文件的第一行是#!/bin/sh
运行之前,需要使用 chmod u+x a.sh 赋予执行权限
在文件中,如果使用 java 命令失败,需要在文件内部写入 source /etc/profile。 - 执行方式
bash -x 单步执行
bash -n 语法检查
练习:每分钟创建一个以时间命名的文件夹 - 位置参数
类似于 public static void main(String[] args){ … }中的 args。
$0 表示脚本本身
$1 表示第一个参数
$#表示参数的个数
$*表示所有参数 - crontab
用途:实现定时执行任务功能
使用:
编辑使用 crontab -e
一共 6 列,分别是:分 时 日 月 周 命令
查看使用 crontab -l
删除任务 crontab -r
查看 crontab 执行日志
tail -f /var/log/cron
注意:在 crontab 中只执行脚本,不要自己编写各种命令组合