Linux(ubuntu)笔记
查看命令帮助(windows中为xxx /?)
command --help(-h)
man command
info command
查看linux内置命令的帮助
help command
help export
help for
ls -al | more翻屏(空格翻屏q退出)(windows中为dir )(-h 人性化可读)
1.sudo reboot //重启
2.sudo shutdown -r now
sudo halt -p // 关机,关电源
uname -a (--all) // 查看系统内核信息
查看命令的目录which whoami
echo $path(windows中为echo%path%)
bin //二进制文件目录
sbin //二进制文件目录
dev //device,设备目录
etc //配置文件所在目录, 环境配置信息
lib //库文件(so:shared Object共享对象,等价于dll)
root //root用户主目录
pwd //当前文件夹
usr
usr/bin
usr/sbin
su root // 切换用户
su passwd // 设置root密码
mkdir // -p不存在父目录则创建
find . | grep a // 管道(windows中为tree)
rm -f -r a // 强制递归删除目录(windows中为del)
echo hello > hello.txt// 追加
echo hello >> hello.txt// 覆盖
cat(windows中为type)
nano编辑器
control+O保存
control+X退出
control+K剪切
control+恢复剪切
cp hello.txt a/b/c
cp hello.txt a/b/c/b.txt 拷贝的同时重命名
cp -r b ../拷贝文件夹
mv a aa同一目录下移动就是重命名
mv b ../将b文件夹移动到上级目录
head hello.txt // 打印前十行
head -3 hello.txt // 打印前3行
tail hello.txt
tail -3 hello.txt
more hello.txt
hostname查看主机名称
(主机名位于/etc/hostname文件中)
file 文件名(查看文件类型)(usr/bin/file)
tar -cf archive.tar foo bar #Create archive.tar from files foo and bar
tar -tvf archive.tar #list all files in archive.tar verbosely不解归档,查看tar包内的内容
tar -xf archive.tar #Extract all files from archive.tar
tar -xvzf *.tar.zg #tar开
tar -rf mytar.tar xxx #追加文件
gzip -1 mytar.tar #原地压缩(in-place)时间优先
gzip -9 mytar.tar #空间优先
gunzip == gzip -d #解压缩文件
xargs(usr/bin) #将管道的输出内容合并成一行数据,使用空格分隔
ls | grep .txt | cp `xargs` ./b
光驱的挂载
mount
mount /dev/cdrom /mnt/cdrom
umount /dev/cdrom
链接
1.硬链接(hard link)
ln hello.txt hello.txt.ln
两个完全相同的文件,占用2倍的磁盘空间,两者实时同步删除一个另外一个不删除
2.符号链接(symblic link)
ln -s hello.txt hello.txt.ln
相当于win的快捷方式,不会占用过多的磁盘空间
如果源文件删除,链接失效(红色,不意味着删除)
grep特殊字符需要转义
ls -al | grep "\->"
jobs
--------------
显示所有后台作业
kill
杀死进程
ps
进程显示
ps -af | more(a 所有进程f 所有格式)
kill 杀死进程
kill %1
cut 剪切(usr/bin/cut)
cut -c 1- hello.txt
ps -al| cut -c 10-15
cut -c 1- xxx
cut -c -5 xxx
cut -c 1-5 xxx
fdisk
(sbin/fdisk)
查看磁盘信息,分区
sudo fdisk -l /dev/sda
df查看磁盘利用率
dirname查看文件或文件夹所在目录
suffix后缀
basename输出文件的基本名称(去除目录)(仅解析串不判断是否真实存在此目录)
basename /home/ubuntu/hello.txt #输出hello.txt
basename /home/ubuntu/hello.txt .txt #输出hello
echo $(hostname) #类似于echo `hostname`,都是进行动态命令执行
echo $($(cat hello.txt))
cd -P 文件夹(符号链接) #进入物理目录
cd - #后退
输出环境变量
echo $PATH
echo ${PATH}
echo "$PATH"
export(导入环境变量,只在当前会话中有效)(内置命令)
export mypath=/home/ubuntu #reboot后失效
windows使用";"分割,linux使用":"
export yourpath=${PATH:-$mypath} #PATH存在则yourpath=$PATH否则yourpath=$mypath
安装虚拟机增强工具
1.VMware->安装VMware Tool
2.打开光驱文件
3.复制vmware-tool-xxxxx.tar.gz到桌面,解压
4.进入终端,进入vmware-tools-distrib
5.执行sudo ./mware-tool.pl
6.一路回车
7.Enjoy...成功了
客户机屏幕自适应
1.关闭客户机
2.编辑客户机设置
3.虚拟机->虚拟机设置->显示器->指定显示器设置
4.ok
客户机和宿主机共享文件夹
1.编辑客户机设置
2.虚拟机->虚拟机设置->选项->共享文件夹
3.进入/mnt/hgfs
客户机和宿主机共享剪切板
1.编辑客户机设置
2.虚拟机->虚拟机设置->选项->客户机隔离
3.选中复选框
if
if commands; then commands; [elif commands; then commands;]...[else commands;] fi
if rm b; then echo ok; else echo error; fi
if[$# -lt 1] #参数个数小于1
if[$# -gt 1] #参数个数大于1
if[-e xxx] #是否存在xxx
if[-d xxx] #xxx是目录吗
0表示命令执行成功1表示失败
echo $? #返回刚刚执行命令的返回结果
$# #参数个数
$0 #命令本身
$1 #第一个参数,此次类推...n
$@ #得到所有参数rm -r bin $@==-r bin
shift #向左移动参数、
命令组合
a && b #a成功执行后,再执行b命令
a || b #a执行失败后,再执行b命令,a执行成功则不执行b
a ; b #a执行之后执行b
(a ; b) #同上,不切换目录
NetCat(nc)
瑞士军刀
TCP/IP
transfer control protocal, internet protocal
模拟tcp, udp网络通信
实现端口扫描
Socket //server, listener, port
ServerSocket //connection, port
服务器
nc -l 8888 #开启服务器监听8888端口
control + z #后台运行
jobs #显示所有作业
kill %1 #杀死作业
nc -l 8888 & #开启服务器监听8888端口,放到后台运行
客户端
nc ip port #指定服务器的IP和监听端口号
fg %1 #切换1至前台
传文件
服务器
nc -l 8888 > readme.txt #重定向
客户端
nc ip 8888 < readme.txt
端口扫描
nc ip -z port1-portn #指定主机ip和端口区间
nc -v -w 2 s1 -z 1-100
-v详细信息
-w连接超时
-z端口扫描
命令前台后台执行切换
1.启动命令时直接放到后台
nc -l 8888
2.将当前进程暂停并放入后台,变成了作业(job)了
ctrl + z
jobs #查看后台运行的所有作业,[jobid]
3.将后台job激活,并在后台运行
bg %jobid
4.将后台作业切换到前台运行
fg %jobid
kill %jobid #杀死job
目录和权限
drwxr-xr-x 6 ubuntu ubuntu 4696 Aug 21 18:50
控制权限
r:read读
w:write写
x:execute执行
-:none无该权限
类型
d:目录
-:文件
b:block
l:link
用户
user(owner)
group // 组,用户隶属于组,可以隶属于多个组,但只能隶属于一个primary group, 可以隶属于多个secondary group
other
xxx
111 = 7
类型 owner group other
d rwx r-x r-x
111 101 101
7 5 5
ugo+(或-或=)rwx 777
ugo+rwx 755
chmod:change mode
chmod ugo+rwx hello.txt
chmod 000 hello.txt
chmod u+rw hello.txt
chmod a+rw hello.txt
ls -al hello.txt
权限说明
-----------
1.read
文件:查看文件的内容
文件夹:查看文件夹包含的资源
2.write
文件:修改文件内容
文件夹:创建和删除文件
3.execute
文件:可执行文件
文件夹:是否可以进入
chmod 777 xxx
添加用户
-----------
1.useradd(user/sbin/)
是底层添加用户命令,推荐使用adduser
2.adduser(user/sbin/)
通过adduser添加用户
adduser --home /home/ubuntu2 --gid 1000 ubuntu2
deluser --remove-home ubuntu2
apt-get(usr/bin)(advanced package tookit 高级包管理工具)
ubuntu修改软件源
sudo nano /ect/apt/soutces.list
sudo apt-get update #更新
sudo apt-get upgrade #升级
ubuntu软件包操作
sudo apt-get install xxx #安装
sudo apt-cache search xxx
sudo apt-cache search jdk
sudo apt-get remove xxx #删除卸载软件
sudo apt-get purge xxx #删除软件和配置文件
sudo apt-get update
sudo apt-get upgrade
sudo dpkg -l | grep xxx
修改ubuntu的软件源(163源 http://mirrors.163.com/.help/ubuntu.html )
1.在当前目录下备份sources.list
sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
2.创建sources.list
sudo touch /etc/apt/sources.list
3.修改sources.list()
sudo nano /etc/apt/sources.list
#[/etc/apt/sources.list]
deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
4.更新软件包
sudo apt-get update
5.升级软件包
sudo apt-get upgrade
6.安装软件
sudo apt-get install xxx
安装桌面
1.更新软件包
sudo apt-get update
2.升级软件包
sudo apt-get upgrade
3.搜索软件包
sudo apt-cache search desktop | more
sudo apt-cache search ubunut-desktop | more
4.安装软件包
sudo apt-get install xxx
从本地安装桌面
1.取得ISO文件
2.挂载iso文件到/mnt/下
mount /dev/cdrom /mnt/cdrom
3.修改/etc/apt/sources.list文件(修改之前要备份)
[/etc/apt/sources.list]
deb file:/mnt/cdrom ./
4.更新和升级软件源
sudo apt-get update
sudo apt-get upgrade
5.搜索软件
sudo apt-cache search ubuntu-desktop
6.安装软件
sudo apt-get install ubuntu-desktop
注意:继续?:Y
Install these packages without verification [y/N]?y
dpkg(usr/bin)
-----------------
直接安装.deb文件
-i|--install <.deb file name> ...
sudo dpkg -i gedit_3.4.1-xxx.beb
查看是否安装成功
which gedit
dpkg-qurey(user/bin)
----------
-l|--list [<pattern> ...] List packages concisely.列出本地包
dpkg-query -l | grep gedit
sudo --remove gedit
ubuntu本地软件源制作
--------------------
...
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 #此时从本地软件源安装
ubuntu ISO文件制作
...
1.安装mkisofs
sudo apt-get install mkisofs
2.使用mkisofs制作iso文件
sudo mkisofs -r -o xxx.iso /targ
ubuntu通过光驱挂载iso文件实现共享
1.虚拟机挂载iso文件
a.虚拟机->光驱设置->指定iso文件
b.连接
2.挂载cdrom到/mnt目录下
sudo mkdir /mnt/cdrom
sudo mount/dev/cdrom /mnt/cdrom
cd /mnt/cdrom
克隆客户机
1.点击虚拟机->右键->管理->克隆
ubuntu网络连接的几种方式
1.桥接
模拟成一台物理主机,可配置ip,访问互联网,局域网内互访,如无网络彼此无法连通
2.NAT
Net address transform
和host形成局域网,由host做NAT和DNS,可访问互联网,局域网内的其他主机无法访问客户机,没有网络时host和客户机之间仍能连通
3.only-host
类似于NAT,不能访问外网,处于安全性考虑,即client和host形成封闭的局域网
配置client为静态ip
查看网关
vmware虚拟机-->编辑菜单-->虚拟网络编辑器-->打开窗口-->选中vmnet8虚拟网卡-->nat设置-->查看网关(172.20.95.2)
查看可用ip段
vmware虚拟机-->编辑菜单-->虚拟网络编辑器-->打开窗口-->选中vmnet8虚拟网卡-->DHCP设置-->查看网段(172.20.95.100-172.20.95.254)
挑选一个ip
配置ubuntu的静态ip
编辑网卡配置文件/ect/network/interface
auto lo
iface lo inet loopback
#iface eth0 inet static
iface eth0 inet static
address 172.20.95.101
netmask 255.255.255.0
gateway 172.20.95.2
dns-nameservers 172.20.95.2
auto eth0
重启网络服务
sudo /etc/init.d/networking restart
for
------------
语法1:for NAME [in WORDS ... ] ; do COMMANDS; done
语法2:for ((: for (( exp1; exp2; exp3 )); do COMMANDS; done
Equivalent to:
(( EXP1 ))
while (( EXP2 )); do
COMMANDS
(( EXP3 ))
done
for (( a = 1; a < 4 ; a = a + 1 )) ; do echo $a ; done
for a in 1 2 3 ; do echo $a; done
for a in 1 2 3 ; do echo $a >> ${a}.txt ; done
test.sh
chmod u+x test.sh
[test.sh]
#!/bin/bash
for a in "$@" ; do echo $a > ${a} ; done #等价于for a ; do echo $a > ${a} ; done
if [[ #@ lt 1 ]] ; then echo no prame !!! ; exit ; fi
while
while: while COMMANDS; do COMMANDS; done
(( EXP1 ))
while (( EXP2 )); do
COMMANDS
(( EXP3 ))
done
[while.sh]
#!/bin/bash
#使用while循环打印10个数
(( a = 1 )) ; while (( a < 11 )); do echo $a ; (( a = a + 1 )) ; done
#使用while循环打印10个数
Equivalent to:
(( a = 1 ))
while (( a < 11 )); do
echo $a
(( a = a + 1 ))
done
使用while循环打印出所有参数
----------------------------
#!/bin/bash
(( count = $# ))
(( a = 1 ))
while (( a <= count )) ; do
echo $1 ;
shift ;
(( a = a + 1 ))
done
////////////////////////////////////////////////////////////
FTP
-----------
sudo apt-get install vsftp
启动
sudo /etc/init.d/vsftpd start
重新启动
sudo /etc/init.d/vsftpd restart
sudo vim /etc/vsftpd.conf
修改配置
#允许匿名用户访问
anonymous_enable=YES
#匿名用户无密码登录
no_anon_password=YES
#限制匿名用户下载速度
anon_max_rate=20000 #20k
本地用户登录
local_enable=YES
#开启上传功能
write_enable=YES
ftp黑名单
cat /etc/ftpusers
用户只能浏览主目录
chroot_local_users=YES
设置某些用户只能浏览主目录
chroot_list_file=/etc/vsftpd.chroot_list
创建虚拟用户过程
------------------
1.关闭匿名用户
2.
----------------------
nl为行编号
cat 不编号
正则表达式
----------------------
egrep "^a.*t$" words|wc -c
匹配words中以a开头以t结尾的字符串,统计数量
egrep "\<[abcd]at\>" words
含有[abcd]开头+at的字符串
egrep "^[[:upper:]]t$" words
以大写字母开头t结尾的字符串
字符类:
[[:alpha:]]:字母字符
[[:lower:]]:小写字符
[[:digit:]]:数字字符
[[:space:]]:空格
[[:graph:]]:除空格外的所有字符
[[::]]
shell编程
---------------
扩展名sh
touch HelloWorld.sh
通配符
*任意长度字符
?任意一个字符
cat -n显示行号
more 显示分屏
head 显示前5行
tail -n 5 显示后5行
less 可翻页
grep PS1 fileName 显示fileName中含有PS1的文本行
find ./ -name *bash* 搜索当前目录中含有bash的文件
locate bash 快速搜索
whereis find
whereis -b find
which ls
which which
uname -a 获取本机信息
uname -r 获取系统内核信息
whatis ls 命令内容
apropos search 查找相关命令
杀毒软件
clamav
clamscan
clamtk
挂载光盘
sudo mkdir /mnt/mycdrom
sudo mount /dev/cdrom /mnt/mycdrom/
#卸载光盘
sudo umount /dev/cdrom
挂载硬盘
sudo mkdir /mnt/hard2
sudo mount /dev/sdb /mnt/hard2/
df:查看磁盘挂载信息
sudo fsck /dev/sdb
sudo fsck [挂载点] 修复挂载磁盘
mkfs 格式化 建立文件系统
sudo mkfs -t ext3 /dev/sdb1
检车文件系统是否正常工作
fsck -f /dev/sdb1
压缩文件
---------------------
gzip fileName
解压文件
gunzip 压缩包文件名
gunzip hello.gz
或
gzip -d 压缩包文件名
查看压缩效果
gzip -l 压缩包文件名
检查压缩包完整性
gzip -t 压缩包名称
若完整则不会输出任何信息
gzip -tv 压缩包文件名
若完整输出OK
打包
------------------
打包当前目录
tar -cvf example.tar ./
解包
tar xvf 待解包文件
会将文件解压到当前目录之中
tar -cwvf 打包成的文件名 ./
每次打包都询问
创建归档文件并压缩
tar -czvf example3.tar.gz ./
解压归档文件
tar -xzf example3.tar.gz
dd
---------------
创建iso文件
dd if=/dev/chrom of=ubuntu.iso
分区命令
----------------
ls /dev |grep sd
查看磁盘情况
sudo fdisk /dev/sdb
////////////////////////////////////////////////////////////