选择操作系统
设置终端软件
如何学习命令
用户名@机器名:当前工作目录$用户输入命令
peter@dog:~$
~ 表示用户主目录
ls
mkdir 文件夹
rm 文件
rm -r 文件夹
命令本身 参数 操作对象
The Linux Command Line 教程
man rm 打开命令手册
/ 参数 查阅参数使用方法
/ -r
q 退出用户手册
文件系统树结构
绝对路径和相对路径
cd 命令
根目录
当前目录 pwd
走马观花看命令
copy
拷贝文件 cp file1 file2
拷贝目录 cp -r file1 file2
move
mv file dir
rename
mv file1 file2
mv dir1 dir2 # dir2 存在 则为移动操作
remove
rm file
rm -r dir
创建文件
touch a.txt
>a.txt # 重定向符
创建目录
mkdir dir
查看文件
cat file
查看文件类型
file a.txt
wget url 下载html文件
Unix Linux 对文件后缀名不敏感
cat file
less file
Ctrl --
Ctrl ++
j 向下
k 向上
/ 进行字符查找
g 到文件头
G 到文件尾
q 退出文件
vim 编辑器
echo 打印
通配符
打包压缩
unzip file.zip
zip -r file.zip dir/
.tar.gz
解压 tar zxvf filename.tar.gz
压缩 tar zcvf filename.tar.gz dir/
.tar.gz2
解压 tar jxvf filename.tar.gz
压缩 tar jcvf filename.tar.gz dir/
终端配置
文件权限
普通用户在自己的 hone 目录下有 写权限
在其他目录下则没有
超级管理员在任何地方都有 写权限
sudo touch aa.txt 以超级管理员的身份执行 系统会要求 密码
sudo apt-get -y install vim
用户权限
三种权限
r
w
x
文件模式
ls -l filename
- file
l sym link
d directory
...
ls -ld dir
chmod 控制文件模式
vim a.sh
ZZ 退出插入模式
./a.sh 执行文件
chmod +x a.sh
chowm 改变文件拥有者
重定向
date >a.txt
ls /bin|grap less
ls /bin >bin.txt
grep less <bin.txt
三个重要的文件
stdin 0
stdout 1
stderr 2
拐弯的各种方式
redirect stdout 输出重定向
> 重定向前清空
>> 不清空
标准错误输出重定向
2>
2>>
标准输入信息(不常用,通常使用管道线)
<
<<
管道线
前面一个命令的输出 作为后面一个命令的输入
cat files.txt|uniq 输出不重复
cat files.txt|uniq/grep txt 只输出txt结尾的文件
cat files.txt|uniq/grep txt/sort 对输出结果排序
软件安装
手动安装
解压 tar zxvf /tar jxvf
安装
PATH
ln -s /opt/sublime_text_3/sublime_text /usr/bin/subl
第二种自己下载源码 编译 安装软件过程
进入源码目录
./configure
make
sudo make install
deb 包
程序本身
配置文件
安装位置
依赖关系
sudo dpkg -i google-chrome-stable_current_i386.deb
dpkg -l 列出系统上所有安装过的 deb 包
dpkg -l|grep chrome
dpkg -L google-chrome-stable 查看 deb 包在系统上安装了哪些文件
dpkg -S dir 查看 dir 来自于哪个包
从 apt-get 仓库安装
sudo apt-get install git 安装
sudo apt-get remove git 卸载
sudo apt-get purge git 卸载 并删除配置文件
apt-cache search name|less 搜索要安装的软件包的包名
搜索
locate 在系统全局范围内定位文件
locate vimrc
locate --regrxp xxx 匹配正则表达式
updatedb 每天执行一次 将文件名保存到数据库
locate 在数据库正查找 而不是在文件系统中查找 找不到系统中新创建的文件
sudo updatedb
find 在一个目录范围内定位文件
find .
find .|grep .txt
find . -type f
find . -type d
find . -type f -exec ls -l '{}' ';'
find . -type f -exec grep hello '{}' ';' -print
find . -type f -exec grep -n hello '{}' ';' -print
find . -type f -exec grep -ni hello '{}' ';' -print 忽略大小写
grep
进程
获取进程号
PID
man ps
Ctrl + Alt + t 呼出终端
Ctrl + Shift + t 打开一个新的终端标签
ps aux
ps aux|less
/str 查找str
ps aux|grep vim
Ctrl + Shift + c 复制
Ctrl + Shift + v 粘贴
Ctrl + a 到行首
后台执行
firefox &
Ctrl + Z 暂停
bg 后台执行
fg 回到前台
kill
kill -2 pid
kill -15 pid
kill -9 pid
网络操作
远程操作
ssh 远程操作工具
ssh 是网络上两台机器互联的一种协议 需要互开 22 端口
客户端要安装 相应的软件 openssh-client
服务端安装 软件 openssh-server
$ssh peter@happycasts.net 连接服务器
Ctrl + d 退出服务器
ssh-keygen
cd ~/.shh
ls
会多出两个文件
id_rsa 私钥
id_rsa.pub 公钥
将公钥上传到服务器 /hone/peter/.ssh/authorized_keys
ssh-copt-id peter@happycasts.net
tmux 强大的终端窗口管理器
tmux -a 回到上次因为网络中断或者退出连接时的窗口
数据传输
rsync 数据传输工具
remote synchronization
上传
rsync -r 本地目录 服务器:指定的路径(默认/hone/peter/)
rsync -r mydir happycasts.net:dir
mydir 目录
mydir/ 目录中的所有文件
: 不可缺少
下载
rsync -r happycasts.net:mydir .
本地增加文件后同步
rsync -r mydir/ happycasts.net:mydir/
rsync -a mydir/ happycasts.net:mydir/ 保留更多文件的信息
rsync -av mydir/ happycasts.net:mydir/ 打印同步过程中的信息
前后两个 / 都不能少
本地删除文件后同步
rsync -av --delete mydir/ happycasts.net:mysir/
rsync -av --delete mydir/ happycasts.net:mysir/ --dry-run
脚本编程
指定解析器
#!/usr/bin/env bash
#!/usr/bin/env python
#!/usr/bin/env ruby
语句即命令
命令对空格非常敏感
脚本语句对空格变态的敏感
位置参数
peter.sh a.txt b.txt
$# 一共有多少个参数
$0 peter.sh
$1 a.txt
$2 b.txt
脚本不在当前 shell 执行
脚本中的语句不是在当前 shell 中执行的
新开一个 shell 执行脚本中语句
在当前 shell 中执行脚本语句
source peter.sh
循环控制
给当前目录中的文件都加上 .txt 的后缀
cd $1
echo I am in `pwd`
for file in `ls`
do
mv $file $file.txt
done
远程执行
ssh -t peter@happycast.net 'touch a.txt'
确认执行
其他语言写脚本
设置终端软件
如何学习命令
用户名@机器名:当前工作目录$用户输入命令
peter@dog:~$
~ 表示用户主目录
ls
mkdir 文件夹
rm 文件
rm -r 文件夹
命令本身 参数 操作对象
The Linux Command Line 教程
man rm 打开命令手册
/ 参数 查阅参数使用方法
/ -r
q 退出用户手册
文件系统树结构
绝对路径和相对路径
cd 命令
根目录
当前目录 pwd
走马观花看命令
copy
拷贝文件 cp file1 file2
拷贝目录 cp -r file1 file2
move
mv file dir
rename
mv file1 file2
mv dir1 dir2 # dir2 存在 则为移动操作
remove
rm file
rm -r dir
创建文件
touch a.txt
>a.txt # 重定向符
创建目录
mkdir dir
查看文件
cat file
查看文件类型
file a.txt
wget url 下载html文件
Unix Linux 对文件后缀名不敏感
cat file
less file
Ctrl --
Ctrl ++
j 向下
k 向上
/ 进行字符查找
g 到文件头
G 到文件尾
q 退出文件
vim 编辑器
echo 打印
通配符
打包压缩
unzip file.zip
zip -r file.zip dir/
.tar.gz
解压 tar zxvf filename.tar.gz
压缩 tar zcvf filename.tar.gz dir/
.tar.gz2
解压 tar jxvf filename.tar.gz
压缩 tar jcvf filename.tar.gz dir/
终端配置
文件权限
普通用户在自己的 hone 目录下有 写权限
在其他目录下则没有
超级管理员在任何地方都有 写权限
sudo touch aa.txt 以超级管理员的身份执行 系统会要求 密码
sudo apt-get -y install vim
用户权限
三种权限
r
w
x
文件模式
ls -l filename
- file
l sym link
d directory
...
ls -ld dir
chmod 控制文件模式
vim a.sh
ZZ 退出插入模式
./a.sh 执行文件
chmod +x a.sh
chowm 改变文件拥有者
重定向
date >a.txt
ls /bin|grap less
ls /bin >bin.txt
grep less <bin.txt
三个重要的文件
stdin 0
stdout 1
stderr 2
拐弯的各种方式
redirect stdout 输出重定向
> 重定向前清空
>> 不清空
标准错误输出重定向
2>
2>>
标准输入信息(不常用,通常使用管道线)
<
<<
管道线
前面一个命令的输出 作为后面一个命令的输入
cat files.txt|uniq 输出不重复
cat files.txt|uniq/grep txt 只输出txt结尾的文件
cat files.txt|uniq/grep txt/sort 对输出结果排序
软件安装
手动安装
解压 tar zxvf /tar jxvf
安装
PATH
ln -s /opt/sublime_text_3/sublime_text /usr/bin/subl
第二种自己下载源码 编译 安装软件过程
进入源码目录
./configure
make
sudo make install
deb 包
程序本身
配置文件
安装位置
依赖关系
sudo dpkg -i google-chrome-stable_current_i386.deb
dpkg -l 列出系统上所有安装过的 deb 包
dpkg -l|grep chrome
dpkg -L google-chrome-stable 查看 deb 包在系统上安装了哪些文件
dpkg -S dir 查看 dir 来自于哪个包
从 apt-get 仓库安装
sudo apt-get install git 安装
sudo apt-get remove git 卸载
sudo apt-get purge git 卸载 并删除配置文件
apt-cache search name|less 搜索要安装的软件包的包名
搜索
locate 在系统全局范围内定位文件
locate vimrc
locate --regrxp xxx 匹配正则表达式
updatedb 每天执行一次 将文件名保存到数据库
locate 在数据库正查找 而不是在文件系统中查找 找不到系统中新创建的文件
sudo updatedb
find 在一个目录范围内定位文件
find .
find .|grep .txt
find . -type f
find . -type d
find . -type f -exec ls -l '{}' ';'
find . -type f -exec grep hello '{}' ';' -print
find . -type f -exec grep -n hello '{}' ';' -print
find . -type f -exec grep -ni hello '{}' ';' -print 忽略大小写
grep
进程
获取进程号
PID
man ps
Ctrl + Alt + t 呼出终端
Ctrl + Shift + t 打开一个新的终端标签
ps aux
ps aux|less
/str 查找str
ps aux|grep vim
Ctrl + Shift + c 复制
Ctrl + Shift + v 粘贴
Ctrl + a 到行首
后台执行
firefox &
Ctrl + Z 暂停
bg 后台执行
fg 回到前台
kill
kill -2 pid
kill -15 pid
kill -9 pid
网络操作
远程操作
ssh 远程操作工具
ssh 是网络上两台机器互联的一种协议 需要互开 22 端口
客户端要安装 相应的软件 openssh-client
服务端安装 软件 openssh-server
$ssh peter@happycasts.net 连接服务器
Ctrl + d 退出服务器
ssh-keygen
cd ~/.shh
ls
会多出两个文件
id_rsa 私钥
id_rsa.pub 公钥
将公钥上传到服务器 /hone/peter/.ssh/authorized_keys
ssh-copt-id peter@happycasts.net
tmux 强大的终端窗口管理器
tmux -a 回到上次因为网络中断或者退出连接时的窗口
数据传输
rsync 数据传输工具
remote synchronization
上传
rsync -r 本地目录 服务器:指定的路径(默认/hone/peter/)
rsync -r mydir happycasts.net:dir
mydir 目录
mydir/ 目录中的所有文件
: 不可缺少
下载
rsync -r happycasts.net:mydir .
本地增加文件后同步
rsync -r mydir/ happycasts.net:mydir/
rsync -a mydir/ happycasts.net:mydir/ 保留更多文件的信息
rsync -av mydir/ happycasts.net:mydir/ 打印同步过程中的信息
前后两个 / 都不能少
本地删除文件后同步
rsync -av --delete mydir/ happycasts.net:mysir/
rsync -av --delete mydir/ happycasts.net:mysir/ --dry-run
脚本编程
指定解析器
#!/usr/bin/env bash
#!/usr/bin/env python
#!/usr/bin/env ruby
语句即命令
命令对空格非常敏感
脚本语句对空格变态的敏感
位置参数
peter.sh a.txt b.txt
$# 一共有多少个参数
$0 peter.sh
$1 a.txt
$2 b.txt
脚本不在当前 shell 执行
脚本中的语句不是在当前 shell 中执行的
新开一个 shell 执行脚本中语句
在当前 shell 中执行脚本语句
source peter.sh
循环控制
给当前目录中的文件都加上 .txt 的后缀
cd $1
echo I am in `pwd`
for file in `ls`
do
mv $file $file.txt
done
远程执行
ssh -t peter@happycast.net 'touch a.txt'
确认执行
其他语言写脚本