Linux Shell常用命令
远程登录(remote)
ssh username@hostname -p [port]- ssh
文件管理(file_manage)
本地上传与下载(file_up_down)
- rz: 从本地上传至linux
rz -y #覆盖上传
- sz: 从linux下载文件到本地
- wget
wget [-options] [url]
-c # 文件路径 (-c 表示可以断定续传)
-v # 详细输出
-q # 静默模式
-O [文件名] # 保持为指定的文件名
- curl
curl cli
curl cookbook
curl [-options] [url]
-o [文件名] # 下载文件
-i # 显示请求头信息
-v # 详细输出
-X [请求方法] # 使用POST/DELETE/PUT等请求方法,默认的是GET
eg:
curl -o baidu.html -X POST baidu.com
解压缩(file_zip)
- zip
zip [-options] [压缩文件名.zip] [文件列表...] [-xi list]
-r 递归压缩目录,即将整个目录压缩
-e 添加密码
-v 显示详情
-q 静默模式
# -xi 文件路径需要引号
-i '文件列表' 只压缩文件列表中的文件
-x '文件列表' 压缩时排除文件列表中指定的文件
# 将当前目录下所有.txt文件打包并压缩归档到文件xxx.zip
zip xxx.zip ./*.txt
- unzip
unzip [-options] [压缩文件名.zip]
-d 解压到指定目录
-l 显示压缩文件,不解压
# example
unzip xxx.zip # 解压到当前目录
unzip -d ./tmp xxx.zip # 解压到tmp目录下
unzip -l xxx.zip # 查看压缩文件列表
- tar
-c :创建压缩文件(create 的意思);
-x :解压文件
-t :查看压缩文件
-v :显示操作详情
-f :指定压缩文件名
-C <目录>:解压到指定的目录
特别注意 c/x/t 同时仅能存在一个,因为不可能同时压缩与解压缩
-z :开启 gzip 压缩
-j :开启 bzip2 压缩?
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中
# 将当前目录下所有.txt文件打包并压缩归档到文件xxx.tar
tar -czvf xxx.tar ./*.txt
# 将当前目录下的xxx.tar中的文件解压到当前目录
tar -xzvf xxx.tar
# 将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
tar -cvf /tmp/etc.tar /etc # 仅打包,不压缩
tar -zcvf /tmp/etc.tar.gz /etc # 打包后,以 gzip 压缩
tar -jcvf /tmp/etc.tar.bz2 /etc # 打包后,以 bzip2 压缩
# 解压文件
tar -xf a.tar.gz #
tar -xf a.tar.gz -C /tmp # 指定解包路径
复制scp(file_copy)
scp [-P port] local_file remote_username@remote_ip:remote_folder
scp [-P port] local_file remote_username@remote_ip:remote_file
scp [-P port] local_file remote_ip:remote_folder
scp [-P port] local_file remote_ip:remote_file
显示文件信息(stat)
stat file # 查看文件信息
cat file1 #显示file1的文件内容
cat file1 file2 #显示file1和file2的文件内容
cat -n file1 #由1开始对所有输出的行数编号
cat -s file #当遇到连续2行以上的空白行,只保留一行空白行
more 查看文件内容
less 查看文件内容
head 输出文件的开始的部分, 可以指定行数 , 默认显示10行
head -n 5 file #显示5行
tail file1 #查看文件尾部的内容,默认显示最后10行
tail -n 5 file1 #显示最后5行
tail -f file1 #动态监控文
文件权限管理(auth)
- 文件类型
- 普通文件
d 目录文件
b 块设备文件
c 字符设备文件
l 链接文件
p 管道文件
s socket文件
- 文件权限
rwxrwxr-- 三组rwx 分别表示(所有者/所有组/其他人)的权限。
r 表示可读, 可以用数字 4 来表示
w 标识可写 ,可以用数字 2 来表示
x 表示可执行 , 可以用数字 1 来表示
- 表示没有相应权限 可以用数字 0 来表示
- 修改文件权限【chmod】
- 符号模式用法
# 用户类型
u user 文件所有者
g group 文件所有者所在组
o others 所有其他用户
a all 所用用户, 相当于 ugo
# operate
+ 为指定的用户类型增加权限
- 去除指定用户类型的权限
= 设置指定用户权限的设置,即将用户类型的所有权限重新设置
eg:
chmod a+r file 给file的所有用户增加读权限
chmod a-x file 删除file的所有用户的执行权限
chmod a+rw file 给file的所有用户增加读写权限
chmod +rwx file 给file的所有用户增加读写执行权限
- 八进制用法
chmod 755 file # -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
chmod 644 file #-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
- 更改文件的所有者和所有组【chown】
chown [选项]... [所有者][:[组]] 文件...
chown root:root file #
chown -R root:root dir #设置dir目录及其子目录下的所有文件为root用户和root组
chown root file #root用户
chown :root file #root组
文件搜索(search)
- locate
locate /etc/sh #搜索etc目录下所有以sh开头的文件。
locate ~/a #搜索用户主目录下,所有以a开头的文件。
locate -i ~/a #搜索用户主目录下,所有以a开头的文件,并且忽略大小写。
- find
find / -name file
find /home -name "*.txt"
find /home -iname "*.txt" # 忽略大小写
磁盘管理(disk)
显示磁盘状态(df)
df [-options] [目录或文件名]
-a 显示所有的文件系统
-k 以KB单位显示
-m 以MB单位显示
-h 以容易阅读的单位自行显示(GB,KB,MB等)
-T 显示文件系统类型
eg: df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
devfs 185Ki 185Ki 0Bi 100% 640 0 100% /dev
查看文件目录容量(du)
du [文件/目录]
查看分区(fdisk)
fdist -l [分区名]
系统管理(sys)
开关机操作(shutdown)
reboot #重启系统: 需要管理员权限
logout #注销
shutdown #关机: 需要管理员权限
shutdown -r now # 现在立即重启
shutdown -r +5 # 5分钟后重启
shutdown -r 12:12 #在12:12时将重启计算机
shutdown -h now # 现在立即关机
shutdown -h +5 # 5分钟后关机
shutdown -h 12:00 # 12点钟关机
shutdown -c # 取消关机操作
查看ip
ifconfig
ip addr
查看任务管理器(task)
- top
- htop
任务调配(job)
- jobs 查看任务列表
-l:显示进程号
-p:仅任务对应的显示进程号
-n:显示任务状态的变化
-r:仅输出运行状态(running)的任务
-s:仅输出停止状态(stoped)的任务
- bg 将任务放置后台运行(和直接在命令行下添加 & 效果一样)
- fg 将任务前台显示
环境变量(env)
环境变量的分隔符用【:】表示
-
永久环境变量
在/etc/profile文件加入程序的安装路径(key=value),然后执行source /etc/profile -
单用户的环境变量
在.bashrc文件中添加安装路径(key=value) -
删除环境变量
unset 环境变量名 -
查看环境变量
env 查看所有的环境变量
echo $环境变量名
- 临时环境变量(重启失效)
export 环境变量名=绝对路径(bash shell)
日期时间设置(date)
- 日期格式化
%Y year
%m month (01..12)
%d day of month (e.g., 01)
%H hour (00..23)
%I hour (01..12)
%M minute (00..59)
%S second (00..60)
- 设置时间日期
date +"%Y%m%d %H%M%S" 223856
date +"%Y-%m-%d %H:%M:%S" 2016-08-24 22:39:07
date -s //设置当前时间,只有root权限才能设置,其他只能查看。
date -s 20061010 //设置成20061010,这样会把具体时间设置成空00:00:00
date -s 12:23:23 //设置具体时间,不会对日期做更改
date -s “12:12:23 2006-10-10″ //这样可以设置全部时间
注意: 重新设置时间后需要将时间同步到硬件时钟。
方式如下:hwclock -w
用户管理(user)
- 查看用户
id <用户名> 查看用户指定信息
last 查看用户登录日志
cut -d: -f1 /etc/passwd 查看系统所有用户
cut -d: -f1 /etc/group 查看系统所有组
- 添加用户【useradd】
useradd [-options] [用户名]
-c 添加描述
-g 指定用户组
-G 指定用户附加组
-s 指定shell
-d 指定主目录
- 删除用户【userdel】
userdel -r [用户名] # 删除用户及其主目录
- 修改用户【usermod】
usermod -G grop1 user1 # 将 user1 添加到组 grop1 中
usermod -l user2 user1 # 修改 user1 的用户名为 user2
usermod -L user1 # 锁定账号 user1
usermod -U user1 # 解除对 user1 的锁定
- 查看用户信息
cat /etc/passwd
# 每行格式说明
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
eg:
root:*:0:0:System Administrator:/var/root:/bin/sh
- 修改用户密码
passwd [用户名]
- 添加组 【groupadd】
groupadd [用户组名]
- 删除组 【groupdel】
groupdel [用户组名]
- 查看用户组信息
cat /etc/group
软件管理(soft)
- dpkg
dpkg [-options] [package]
-i 安装包
-r 删除包
-P 删除包(包括配置文件)
-L 列出与该包关联的文件
-l 显示该包的版本
–unpack 解开 deb 包的内容
-S keyword 搜索所属的包内容
-c 列出 deb 包的内容
–configure 配置包
- apt-get
apt-get [-options] [command] [package]
search 搜索包
show 获取包的相关信息,如说明、大小、版本等
install 安装包
-f 强制安装
remove 删除包
–purge 删除包,包括删除配置文件等
autoremove 自动删除不需要的包
update 更新源
upgrade 更新已安装的包
dist-upgrade 升级系统
dselect-upgrade 使用 dselect 升级
depends 了解使用依赖
rdepends package 了解某个具体的依赖
build-dep package 安装相关的编译环境
source package 下载该包的源代码
clean && autoclean 清理下载文件的存档
check 检查是否有损坏的依赖
查看历史命令(history)
history [-options]
history # 显示最近1000条历史命令
history 5 # 显示最后5条命令
!number # number为history之后命令前的序号:执行该条命令
!cat # 执行最后一条以cat开头的命令
-c:清空当前历史命令
-a:将历史命令缓冲区中命令写入历史命令文件中
-r:将历史命令文件中的命令读入当前历史命令缓冲区
-w:将当前历史命令缓冲区命令写入历史命令文件中
其他操作(other)
- 建立软链接
ln -s 源文件路径 目标路径(即快捷方式路径)
命令行快捷方式(readline)
光标移动(cursor)
| 快捷键 | 描述 |
|---|---|
| Ctrl + a | 移动光标到行首 (a:ahead) |
| Ctrl + e | 移动光标到行尾 (e:end) |
| Alt + b | 移动光标后退一个单词(词首)(b:backwards) |
| Alt + f | 移动光标前进一个单词(词首)(f:forwards) |
| Ctrl + f | 光标前进一个字母 |
| Ctrl + b | 光标后退一个字母 |
| Ctrl + xx | 当前位置与行首之间光标切换 |
剪切粘贴(cut)
| 快捷键 | 描述 |
|---|---|
| Ctrl + k | 删除从光标到行尾 |
| Ctrl + u | 删除从光标到行首 |
| Ctrl + w | 从光标向前删除一个单词 |
| Alt + d | 从光标向后删除一个单词 |
| Ctrl + d | 删除光标下一个字母 |
| Ctrl + h | 删除光标前一个字母 |
| Alt + t | swap(当前单词, 上一个单词) |
| Ctrl + t | swap(当前字母, 上一个字母) |
| Ctrl + y | 粘贴上一次删除的文本 |
历史命令(history-readline)
| 快捷键 | 描述 |
|---|---|
| Ctrl + r | 向后搜索历史命令 (r:retrieve) |
| Ctrl + g | 退出搜索 |
| Ctrl + p | 历史中上一个命令 (p:previous) |
| Ctrl + n | 历史中下一个命令 (n:next ) |
| Alt + . | 上一个命令的最后一个单词 |
终端指令(bash)
| 快捷键 | 描述 |
|---|---|
| Ctrl + l | 清屏 |
| Ctrl + s | 停止输出(在Zsh中为向前搜索历史命令) |
| Ctrl + q | 继续输出 |
| Ctrl + c | 终止当前命令 |
| Ctrl + z | 挂起当前命令 |
| Ctrl + d | 结束输入(产生一个EOF) |
| Ctrl + i | 相当于Tab键 |
| Ctrl + o | 相当于Ctrl+m |
| Ctrl + m | 相当于Enter |