Linux基本用法

windows
__----------------
Desktop Os


Linux+VMware
-------------
Linux
服务器Os
稳定
安全

VMware
-----------------

Oracle vbox
------------------


Host
----------------


Linux | mac
——————————————————
Client机

安装VMware
------------------

安装客户机
-------------


window:物理结构
——-----——————
资本主义
c:/
d:/
e:/

linux文件结构
———————————————————
/bin			//二进制文件目录  
/sbin			//二进制文件目录
/dev			//device,设备目录,光驱,磁盘,分区
/etc			//配置文件目录 
/lib			//库文件,共享对象文件(so---shared object,等价于dll文件)
/home			//主目录 /home/ubuntu	/home/ubuntu......
/meida
/mnt
/opt			//root用户的主目录
/root
/usr			//user
/usr/bin		//可执行文件
/usr/sbin		//可执行文件

/usr/local		//
/usr/local/bin		//
/usr/local/sbin		//

Linux
--------------
1.redhat
2.centOs
3.ubuntu
4.Suse
5....

共同祖先是Unix
最早的文件在bin和sbin中
自己的文件放在userbin中
哪一个优先级高,就近原则


Linux基本操作
----------------
windows				linux
					
cd 				cd 		//进入目录
				pwd		//显示当前的目录		
				clear		//清屏
				whoami		//查询当前的用户
				sudo passwd	//切换用户
ipconfig			ifconfig	//查询Ip
				su root 	//切换用户
				mkdir
				rm
				cp
				mv
				cat
				touch
				chow

ping www.baidu.com   		ping www.baidu.com 	//ping网络
tree 				find . | grep 		//ping网络

del	删文件			rm -fR xxx  		//递归强制删除目录(文件)
rmdir	删目录				

echo				touch hello.txt 	//创建空文件
 				echo helloworld > hello.txt  //补齐文件(覆盖模式)
				echo helloworld >> hello.txt //(追加模式)
				cat hello.txt 			//直接查看文件内容
				type hello.txt			//			

				C滚把window模拟成linux
				cat hello.txt			//直接查看文件内容
					
copy a.txt ../b.txt		cp hello.txt b/c/d		//复制文件
				cp hello.txt b/c/d/1.txt	//复制并文件。指定名称
				cp -R xxx ../
				
				echo
				nano 与 Ctrl+0与ctrl+x
				cat
				deirect :>>与>			//重定向
				more				
				head -n	hello.txt 			//显示文件开头N行数据
				tail -n hello.txt			//显示文件结尾N行数据
				which hostname				//查看文件命令

				sudo reboot 	//重启
				uname -a    	//查看系统的内核信息,-all也可以实现
				file xxx.so 	//查看文件类型
s				在类库中有so文件lib中,链接文件 -表示共享文件(动态链接库文件)
				安装第三方软件在lib中就会生成so 文件,没有的话就有问题
				
				tar             //归档和解档
				tar -xvzf  mytar.tar.gz	//解压(原地)
				tar -tf mytar.tar 	//查看归档文件
				tar -rf mytar.tar.xxx 	//-r追加文件到
				
				mount 			//挂载外设
				实例“”
				umount /dev/cdrom
					ls
					
					


				gzip -l mytar.tar		//原地压缩,时间优先 
				gzip -9 mytar.tar		//原地压缩,空间优先
				gzip -9 mytar.tar		//原地压缩,空间优先
				gzip -d mytar.tar.gz		//原地文件,空间优先
				gunzip	mytar.tar.gz		//加压缩文件 等价于 == gzip -d xxx.gz
				sudo shutdown -p now  		//关机	-p:关电源 -r:reboot
				sudo halp -p 		

				sudo mount			//挂载外设
				sudo umount			//解除挂载
				ln -s /exist_file link_name
				jobs
				kill %n
				ps -Af
				cut -c num1-num2 
				cmd --help	
				man cmd
				help 
				info cmd 
				
				fdisk
				fdisk -l				//查看分区表
				fdisk /dev/sda				//管理指定磁盘
				...
				df  		磁盘空间使用情况 disk free
				df -ah 
				dd diskdump
				dd		
				
				dirname 			//查看文件所在目录
				
				basename			输出文件的基本名称(取出目录的部分)
				echo $(hostname)		
				echo $($cat 1.txt) 	 //1.txt中写入 hostname,嵌套命令,多次调用
				cd —p mylink		//进入物理目录,不是连接目录
				 				
war		//web
ear		//enterprise
jar		//java archive file
tar 		//归档文件
tar  -f -
-c //创建
-f //指定文件
-v //指定信息verbose
-x //extract 从归档文件抽取,解档
-z //通过gzip进行过滤


-----------------------
ls 
-h 人性化可读
-a 现实全部文件(.xxx)
-l:列表展示

--------------------
find 
-------------------
find /usr/local
find .|xargs grep -ri "IBM"		//含有ibm串
find .|xargs grep -ri "IBM" -l		//输出文件名
find /cmd ".sh" -prin | ...		//指定目录sh文件

ls | grep pig |cp 'xargs' ~/Download 	

xargs   				//将管道的输出内容合并成一行数据使用空格分割
find . | grep txt | c[ 'xargs'		//''是按照命令进行执行






配置文件在/etc目录下
ls | grep host
ll 查看权限
source hostname 立即启用 

nano 编辑器
----------------------------------

1.nano hello.txt
2.ctrl + o			//保存
3.ctrl + x			//退出
4.ctrl + k			//剪切一行
5 ctrl + U			//复制一行



Linux链接文件
-----------
1.硬链接(hard link)
两个完全相同的文件,占用2倍的磁盘空间,两者实时同步,删除一个文件。另一个不删除

2.符号链接(symbolic link)
相当于快捷方式,不会占用过多的磁盘空间
如果源文件删掉,连接失效(不意味删除,红色)

3.创建连接方式
ln hello.txt. hello.txt.ln 		//硬链接

4.grep特殊字符需要转移
ls -al | grep "\->"			//过滤

jobs
-------------------
显示后台作业


查看进程信息
----------------
ps  		//process show 
ps -Af 		//-A:所有进程 -f


杀死job
----------------
kill %1

cut
----------------------------
对每行文本剪切处理
对每行输出进行剪切处理
cat -c num1-num2
cut -c 1-		//显示1以及后面的所有字符  
cut -c -5		//显示开始到5的所有字符
cut -c 3-5		//显示3-5后面的所有字符

输出环境变量
——————————+
	echo $path
	echo ${PATH}
	echo "PATH"
单引号错误,双引号正确
export mypath = /home/ubuntu			//导入环境变量,只在当前会话中有效
export mypath =${path:-}			//导入环境变量,只在当前会话中有效
export yourpath =		//干掉你的path				
exprot $yourpath
exprot $yourpath=${PATH:-$PATH:-$mypath}
export $yourpath=${PATH:-$PATH1:-$mypath}	//相当于三元运算符,条件运算的过程

path环境变量,windows使用“;”号分割,linux使用“:”分割

export mypath=${path}:/home/ubuntu
echo $mypath


$env other //空格分区
${env} 	   //{}界限
“$env”   //""界限
export env = ${env:-$env:-$envn2} //是取env, 否env2 三元运算符
echo 'pwd' 	//按脚本执行
if["$1"="--conf"] //第几个参数
if[$#-lt 1]
if[$#-gt 1]
if[-e xxx] //是否存在
if[-d]  	//wrong ,需要空格
if[-d xxx]	//right

查看linux内置命令的帮助
---------------------
help export
if commands ,then commands ;
[else if commands ;then commands ;]  ....[else commands;] fi
     
help if
hellp export
help while 
help for

使用if
["$1" = "--conf"] //第几个参数
---------------------------------

linux内置变量的访问方式
1.$?
返回刚刚执行命令的结果,0:成功  !0=失败

2.$#
获取参数个数
rm -r bin     //$# = 2 

3.$n
获取第几个参数
$0    //命令本身
$1	//第一个参数,rm -r bin $1=-r
..

4$@
得到所有参数
rm -r bin  //$@=-r bin

5.shift 
移动参数

$?		//命令的返回值存储变量
$#		//参数个数	
$1		//第几个参数
$O		//当前脚本名称
$@		//取出所有参数
shift		//参数左移
${a/b/c}	//

命令组合
-----------------
1.a  &&  b
a成功执行后,再执行b命令

2.a || b
a执行后,再执行b命令

3.a ; b 
a执行后,再执行b,没有成功失败的约束条件

4.(a ; b )
//组合命令,只在当前目录执行,不切换目录

ls -al ; cd /usr/ ; pwd

(ls -al;cd ~; pwd)

NetCat
--------------------
1.瑞士军刀
2.TCP/IP
transfer control protocal ,internet protocal
Socket
ServerSocket			//server,listener,port
Socket				//connection,port


3.使用nc 进行聊天
nc -l 8888		//在本机启动一个ServerSocket进程,
			&表示在后台运行
nc localhost 8888	//启动客户端,连接到服务器端口8888

4.使用nc传递文件
传送文件
服务器端
nc -l 1234 > readme.txt		//服务器端,重定向接收数据到文件
客户端
nc localhost 1234 < readme.txt	//客户端,重定向输入
端口扫描
nc ip -z port-portn	//指定需要扫描的主机ip和端口区间
nc -v -w 2 s1-z 2000 - 4000
-v	详细信息
-w	连接超时
-z	端口扫描

命令前后台执行切换
--------------------
1.启动命令时直接放到后台

nc -l 888 &   //

2.将当前进程暂停并放入后台,变成交作业(job)了
ctrl + z
joba			//查看后台运行的所有作业,只需要jobid
3.将后台job激活,并在后台运行
bg %1
4.将后台作业切换到前台运行
fg %1

d:directory	目录
-:file		文件
b:block		
l:link		
r:read 读
w:write写
x:execute执行
类型
owner		//主人
group		//组
other		//其他人
d  rwx  r-x  r-x .... hello.txt

权限说明
-----------------
1.read
文件:查看文件内容
2.write 
文件:修改文件内容
3.执行
文件:可执行文件
修改文件权限

查看linux内置命令的帮助
------------------
help export
help if
help while
help for
使用if
["$1"="--conf"] //第几个参数

Ubuntu系统常用命令
-----------------
if[$#-lt 1]
if[$#-gt 1]
if[-e xxx]

if[-d]			//wrong  需要空格
if[-d xxx]		//right

$?			//命令的返回值存储变量,返回刚刚执行命令的结果,0:成功		!0:失败
$#			//参数个数		rm -r bin	//$# = 2
$n			//获取第几个参数。 $0 //命令本身	
$1	//第一个参数,rm -r bin $1=-r
$0
得到所有参数
rm -r bin	//$@=-r bin 
$1			//第几个参数
$O			//当前脚本名称
$@			//取出所有参数
shift			//参数左移
向左移动参数,左边的参数被覆盖掉
${a/b/c}		//


$env other	//空格分区
${env}		//{}界限
"$env"		//""界限
export env=${env:-$evn2}	//三元运算符
echo '${env}'			//原样输出
echo 'pwd'			//按脚本执行
if["$1"="--conf"]		//第几个参数


文件和权限
-------------------
1.文件类型
d:目录
-:文件
b:block
l:link
2.权限
Owner(user)	//主人
group		//组,linux用户隶属于组,可以隶属于多个组,但是只能够隶属于一个primary group ,可以隶属于多个secondary group 
other		//其他人
all		//owner+group+other
3.控制权限
r:read			//rwx
			111=7
w:write			
x:exeute			

修改文件权限
————————————
chmod ugo+-=rwx hello.txt	// 
chmod a+rwx hello.txt		//
chomd 777 hello.txt		//
chomd 755 hello.txt		//

新增用户
---------------
1.useradd
是底层添加用户的命令,推荐用adduser添加新用户
2.adduser
通过adduser添加用户		
adduser --home /home/ubuntu2 ubuntu2  --gid 1000 ubuntu2	//ubuntu 1000

3.Ubuntu静态Ip设置
(1)查看网关
VMware虚拟机————>编辑菜单-->虚拟网络编辑器-->打开窗口-->选中vmnet8虚拟网卡-->
nat设置-->查看网关(192.168.238.2)
(2)查看可用的ip网段
VMware虚拟机————>编辑菜单-->虚拟网络编辑器-->打开窗口-->选中vmnet8虚拟网卡-->
DHCP设置-->查看网段

Ubuntu 修改软件源
-----------
Ubuntu软件包操作
apt:advanced package tookit	,高级包管理工具
sudo apt-get install xxx	//安装软件包列表
sudo apt-cache search xxx	//
sudo apt-get remove xxx		//删除
sudo apt-get purge xxx		//删除软件和配置文件
sudo apt-get update		//更新
sudo apt-get upgrade		//升级
sudo dpkg -l | grep xxx		//



复制163软件源
deb http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse 
deb-src http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse 
deb http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted 
deb-src http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted 
deb http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted 
deb http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted 
deb-src http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted 
deb http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted 
deb-src http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted 
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
ctrl+o-- 回车-- ctrl+x-- 回车
 
sudo apt-get update
sudo apt-get upgrade

从本地安装桌面
--------------
1.取得iso文件
2.挂载iso文件到/mnt/下
mount /dev/cdrom /mnt/cdrom
3.修改/etc/apt/sources.list文件
[/etc/apt/sources.list]
deb file:/mnt/cdrom ./
4.更新和升级软件源
apt-get update 
apt-get upgrade
5搜索软件
sudo apt-cache search ubuntu-desktop
6.安装软件
sudo apt-cache-install ubuntu-desktop
7.卸载软件
sudo apt-get remove ubuntu-desktop

Ubuntu安装VM增强工具
——————————————————
增强工具作用
和host共享文件夹
鼠标自动捕捉释放
高分屏
自适应窗口
1.VMWare-->重新安装VMware tool
2。自动打开光驱文件
3。复制vmware-tool-xxxx.tar.gz到桌面
4。右键vmware-tool-xxxx.tar.gz释放到这里
5。打开终端
6。进入~/Desktop/vmware-tool-distrib
7。执行python脚本
sudo ./vmware-tool.pl
8。一路回车
9。Enjoy...成功了

版本:
VMwareTools-9.9.3-2759765.tar.gz


客户机屏幕自适应
---------------
1.关闭客户机、

2.编辑客户机的设置
虚拟机-->虚拟机设置-->显示器-->指定显示器的设置(1366x768)
3  ok
4.启动客户机
完成window和linux共享文件夹

客户机和宿主机共享文件夹
-----------------
1.编辑客户机的设置
虚拟机-->虚拟机设置-->选项-->共享文件夹
2,进入客户机的/mnt/hgfs查看共享的文件夹

客户机和宿主机共享剪切板
--------------------
1.编辑客户机的设置
虚拟机-->虚拟机设置-->选项-->客户机隔离
2.选中复选框

客户机和宿主机之间支持拖放

dpkg
-----------
dpkg-query --help
dpkg-query --list | grep gedit
sudo dpkg --remove gedit
1.直接安装.deb软件包
dpkg -i gedit_4-xx.deb
2.通过which查看是否安装成功
which gedit
3.卸载软件包
sudo dpkg --remove gedit

dpkg-query
---------------
1.查看本地安全点的软件包
sudo dpkg-query --list | grep gedit
2.通过which查看是否安装成功
which gedit
3.卸载软件包
sudo dpkg --remove gedit

提高准确率

----------------
本地软件源制作
-----------
sudo apt-get install dpkg-dev
mkdir ~/software
cp -R -v /var/cache/apt/archives/* ~/software
sudo dpkg-scanpackages ~/software /dev/null
|gzip>~/software/Packages.gz

复制整个software文件夹到host主机
安装ubuntu客户机
从host复制software文件夹到主目录下
编辑/etc/apt/source.list文件
deb file:/home/ubuntu/software./
sudo  apt-get update 
sudo apt-get upgrade 
sudo apt-get install xxx //此时从本地软件源安装
注意:
	该方式要确保所有所需软件都在本地仓库中,否则还需要
将sources.list文件配置成外部软件源地址

Ubuntu ISO文件制作
————————————————
1.安装mkisofs
sudo apt-get install mkisofs
2.使用mkisofs制作iso文件
//-r保留源文件-o输出文件
sudo mkisofs -r -o xxx.so /targ


Ubuntu通过光驱挂载iso文件实现共享
——————————————————————
1.虚拟机挂载iso文件
	a.虚拟机->光驱设置->指定iso文件
	b.连接	
2.挂载CDROM到/mnt目录下
	sudo mkdir /mnt/cdrom
	sudo mount /dev/cdrom /mnt/cdrom
	cd /mnt/cdrom

Ubuntu虚拟机克隆与Mac生成与网络连接形式

Ubuntu网络连接形式
-------------
1.桥接
模拟成一台物理机
完全模拟网络中的真实电脑,可配置IP,访问互联网,
局域网的互访,如果无网络,彼此无法连通
2.NAT
和Host形成局域网,由Host做NAT和DNS,可访问互联网,
局域网的主机无法访问客户机,没有网络时,Host和客户机
之间仍能连通。
net address transform 网络地址转换	
3.Only-host
类似于NAT,不能访问外网,出于安全性考虑。
即类似于内网的使用

配置客户机为静态IP
--------------
1.查看NAT的网关
网络地址编辑器-->NAT-->NAT设置-->查看网关(192.168.119.2)
2.查看网段
网络地址编辑器-->NAT-->NAT设置-->查看网关(192.168.119.128)-->(192.168.119.254)
3.挑选一个ip
192.168.119.130
4.编辑ubuntu的网络配置文件
/etc/network/interface
5.重启网络服务
sudo /etc/init.d/networking restart
6.通过ping查看连通情况



脚本
-----——————————————————————————————————
0.查看帮助
help for
	1.语法一
		for NAME [in WORDS ... ]; do COMMANDS; done 
		[例如]
		for a in 1 2 3 4 ; do each $a ; done
		脚本创建文件
		脚本删除文件
		while 
		for a in 1 2 3 4 ; do rm ${a}.txt ; done 
		ls 
	2.语法二
		[语法]for ((exp1;exp2;exp3)); do COMMANDS;done 
		[例子]for ((a = 1 ;a <= 11))


一饿就脑短路,来条士力架吧
横扫饥饿,做回自己

使用for循环打印10个数
————————————————————————
a = 10 
for 

1.语法

	while语法
	---------------
	1.语法
	((EXP1))
	while((EXP2));do
		COMMANDS
	     ((EXP3))
	 done

步骤
1.创建脚本文件
2.



打印1-->10  10个数字
---------------

#!/bin/bash
(( a=1 ))
while (( a <= 10 )) ; do
 echo $a
 ((a = a + 1 ))
 done 

使用fro循环打印所有参数
---------------------
#!/bin/bash
((count = $# ))
((a=1))
while ((a<=count)) ; do
echo $1 ;
shift;
((a=a+1))
done 

if 语句
脚本的编写


参数的提取

你可能感兴趣的:(java)