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 [-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】
  1. 符号模式用法
# 用户类型
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的所有用户增加读写执行权限  
  1. 八进制用法
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组
  • 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)

环境变量的分隔符用【:】表示

  1. 永久环境变量
    /etc/profile文件加入程序的安装路径(key=value),然后执行source /etc/profile

  2. 单用户的环境变量
    在.bashrc文件中添加安装路径(key=value)

  3. 删除环境变量
    unset 环境变量名

  4. 查看环境变量

env 查看所有的环境变量
echo $环境变量名
  1. 临时环境变量(重启失效)
    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