美文网首页
Linux命令

Linux命令

作者: dingtom | 来源:发表于2020-03-06 20:02 被阅读0次

    Ctrl+c 强制中断程序的执行
    Ctrl+z 将程序挂起,fg/bg继续任务

    Ctrl+d 键盘输入结束或退出终端
    Ctrl+s 中断控制台输出
    ctrl+q 恢复控制台输出
    ctrl+l 清屏
    Ctrl+a 将光标移至输入行头,相当于Home键
    Ctrl+e 将光标移至输入行末,相当于End键
    Ctrl+k 删除从光标所在位置到行末
    Alt+Backspace 向前删除一个单词
    命令 --help 查看一些它的某个命令具体参数的作用
    man 命令 显示系统手册页中的内容

    一行中运行多个命令。
    Command 1 ; Command 2 首先运行Command1,然后运行Command2
    Command 1 && Command 2 当Command1运行成功并结束,然后运行Command2
    Command 1 || Command 2 当Command1运行失败时才运行Command2

    文件

    bin (binaries)存放二进制可执行文件
    sbin (super user binaries)存放二进制可执行文件,只有root才能访问
    etc (etcetera)存放系统配置文件
    usr (unix shared resources)用于存放共享的系统资源
    home 存放用户文件的根目录
    root 超级用户目录
    dev (devices)用于存放设备文件
    lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
    mnt (mount)系统管理员安装临时文件系统的安装点
    boot 存放用于系统引导时使用的各种文件
    tmp (temporary)用于存放各种临时文件
    var (variable)用于存放运行时需要改变数据的文件

    文件增删改查

    mkdir

    创建目录和父目录a,b,c,d
    mkdir -p a/b/c/d

    -p 建立多级目录
    -m 在建立目录的时候给目录赋于权限值

    ls

    -a 这个选项能显示.开头的隐藏文件
    -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
    -t 将文件依建立时间之先后次序列出
    -i 显示每个文件的inode号
    -m 所有项目以逗号分隔,并填满整行行宽
    -R 同时列出所有子目录层
    -h 将列出文件的大小以人性化格式输出
    --color=tty(2个-号)显示文件的时候以色彩提示
    -full-time显示文件的详细访问时间
    -lc查看文件状态修改时间

    rmdir

    删除空目录

    -p 删除多级空目录

    cp

    拷贝文件夹a到/tmp目录
    cp -rvf a/ /tmp/

    -r 复制整个目录里的内容
    -p 复制文件属性
    -u 有差异才复制
    -i 文件已存在询问
    -v 在复制文件的时候显示进度
    -f 在复制的时候如果碰到目的文件名有重复就将原先的删除

    mv

    重命名 mv a.txt b.txt
    移动文件a到/tmp目录,并重命名为b
    mv -vf a /tmp/b
    -i 如果目的地有相同文件名时会出现提示
    -v 在搬移文件时显示进度,在移动多文件时非常有用
    -u 当移动时只有源文件比目的文件新的时候才会移动
    -f 强制覆盖已有的文件

    touch

    创建文件
    touch asd.txt
    创建多个文件
    touch love_{1..10}_shiyanlou.txt

    rm

    删除机器上的所有文件
    rm -rvf /
    -i 在删除文件之前需要手工确认
    -v 在删除文件的时候显示信息
    -r 删除目录
    -f 忽略提示

    tr

    删除、转换一段文本信息中的某些文字
    -d 删除匹配的字符,注意不是全词匹配也不是按字符顺序匹配
    -s 去除指定的在输入文本中连续并重复的字符
    删除 "hello shiyanlou" 中所有的'o','l','h'
    echo 'hello shiyanlou' | tr -d 'olh'
    将"hello" 中的ll,去重为一个l

    echo 'hello' | tr -s 'l'
    将输入文本,全部转换为大写或小写输出
    echo 'input some text here' | tr '[:lower:]' '[:upper:]'
    上面的'[:lower:]' '[:upper:]'你也可以简单的写作'[a-z]' '[A-Z]',当然反过来将大写变小写也是可以的

    jion

    将两个文件中包含相同内容的那一行合并在一起。
    -t 指定分隔符,默认为空格
    -i 忽略大小写的差异
    -1 指明第一个文件要用哪个字段来对比,默认对比第一个字段
    -2 指明第二个文件要用哪个字段来对比,默认对比第一个字段
    将/etc/passwd与/etc/group两个文件合并,指定以':'作为分隔符, 分别比对第4和第3个字段
    sudo join -t':' -1 4 /etc/passwd -2 3 /etc/group

    paste

    在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开。
    -d 指定合并的分隔符,默认为 Tab
    -s 不合并到一行,每个文件为一行

    paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分

    cat

    第一个字节开始正向查看文件的内容
    如果文件很大的话,cat命令的输出结果会疯狂在终端上输出,可以多次按ctrl+c终止。
    -b 显示文件内容的时候显示行数
    -n 显示文件内容包括空行
    -s 将多个空行合并成一个空行输出

    tac

    从最后一行开始反向查看一个文件的内容

    统计当前目录下文件的个数(不包括目录)

    ls -l | grep "^-" | wc -l
    统计当前目录下文件的个数(包括子目录)
    ls -lR| grep "^-" | wc -l
    查看某目录下文件夹(目录)的个数(包括子目录)
    ls -lR | grep "^d" | wc -l

    less

    针对比较大的文件,我们就可以使用less命令打开某个文件。

    按n(N)向下(上)查找。

    more

    查看文本文件命令

    用空格向下翻页,用b向上翻页

    +行数直接从给定的行数开始显示
    -s 将多个空行压缩成一个空行
    -p 清除屏幕后再显示

    nano

    文本编辑器
    命令格式:nano [选项] [行号] 文件名

    head

    查看文件头部

    -n <行数> 显示文件的最前指定的行
    -c <字节数> 显示文件前N个字节数里的内容
    -q 不输出文件头的内容
    -v 输出文件头的内容

    tail

    查看文件尾部

    -f 循环读取
    -c <字节数> 显示文件前N个字节数里的内容
    -q 不输出文件头的内容
    -n <行数> 指定所显示的行数

    -v 输出文件头的内容

    tail -f access.log

    ln

    生成链接文件

    命令格式:ln [选项] 源文件 链接文件

    -f 删除已存在的目的文件
    -i 如果碰到有重复名字的提示如何操作
    -v 显示操作信息
    -s 软链接选项

    file

    查看文件的类型

    stat

    显示文件或文件系统状态

    命令格式:stat [选项] <文件/目录>

    -f:查看指定的文件系统

    stat可查看:
    文件名 2. 文件尺寸 3. I节点号 4. 创建时间/访问时间/状态(属 主、组、权限)修改时间 5.权限 6.链接文件个数 7. 属主及属组等

    whereis

    显示一个二进制文件、源码或man的位置

    which

    显示一个二进制文件或可执行文件的完整路径

    find

    最常用的命令,命令的路径是作为第一个参数的, 基本命令格式为 find [path][option] [action] 。
    sudo find /etc -name sources.list

    find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
    find / -user user1搜索属于用户 'user1' 的文件和目录
    find /usr/bin -type f -atime +100搜索在过去100天内未被使用过的执行文件
    find /usr/bin -type f -mtime -10搜索在10天内被创建或者修改过的文件
    find ~ -size +1500c 查找大于1500字节的文件
    find ~ -size 1500c查找等于1500字节的文件
    find ~ -size -1500c查找小于1500字节的文件
    find ~ -size +512k查找大于512k字节的文件
    find ~ -size -1G查找小于1G字节的文件
    find ~ -size +10查找大于10块的文件
    find / -empty查找文件/目录字节为0的文件(即空文件)

    grep

    功能: 通过正则表达式查找文件中的关键字

    -i:忽略大小写
    -c:打印匹配的行数
    -C:打印出匹配的上下文(上N行,下N行)的多少行-l:列出匹配的文件名
    -L:列出不匹配的文件名
    -n:打印包含匹配项的行和行标
    -w:仅匹配指定的单词而非关键字
    -e:索引匹配字串
    -r:递归查询
    -v:不输出匹配的行
    -A <行号>:显示所找的匹配字段,并显示下面指定的行数的信息
    -B <行号>:显示所找的匹配字段,并显示上面指定的行数的信息

    grep -rn --color POST access.log查看nginx日志中的POST请求。
    grep -rn --color Exception -A10 -B2 error.log看某个异常前后相关的内容
    grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇

    正则表达式表示方法:

    \忽略正则表达式中特殊字符的原有含义
    ^ 匹配正则表达式的开始行
    $ 匹配正则表达式的结束行
    < 从匹配正则表达式的行开始
    到匹配正则表达式的行结束
    [ ] 单个字符;如[A] 即A符合要求
    [ n - m ] 范围 ;如[A-H]即包含A至H都符合要求
    . 所有的单个字符
    * 所有字符,长度可以为0

    cut

    打印每一行的某一字段

    -d “n”:定义分界符,即点位
    -f 取第几位的字符

    -c:仅显示行中指定范围的字符

    打印/etc/passwd文件中以:为分隔符的第 1 个字段和第 6 个字段分别表示用户名和其家目录:
    cut /etc/passwd -d ':' -f 1,6
    前五个(包含第五个)
    cut /etc/passwd -c -5
    前五个之后的(包含第五个)
    cut /etc/passwd -c 5-

    sort

    排序
    -r反转
    -t参数用于指定字段的分隔符
    -k 字段号用于指定对哪一个字段进行排序
    -n 按照数字排序,默认情况下是以字典序排序的
    cat /etc/passwd | sort -t':' -k 3 -n

    wc

    计数工具
    行数
    wc -l /etc/passwd
    单词数
    wc -w /etc/passwd
    字节数
    wc -c /etc/passwd
    字符数
    wc -m /etc/passwd
    最长行字节数,西文字符来说,一个字符就是一个字节,但对于中文字符一个汉字是大于 2 个字节的,具体数目是由字符编码决定的
    wc -L /etc/passwd

    uniq

    -c:在数据行前出现的次数
    -d:只打印重复的行,重复的行只显示一次
    -f:忽略行首的几个字段
    -i:忽略大小写
    -s:忽略行首的几个字母
    -u:只打印唯一的行

    用于过滤或者输出重复行。
    因为uniq命令只能去连续重复的行,不是全文去重,所以要达到预期效果,我们先排序:

    history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq
    使用频率前三的命令
    history |cut -c 8-|sort|uniq -dc|sort -rn -k1 |head -3

    下载

    wget url

    sudo apt-get install axel

    axel -n 10 -o /tmp/ [http://testdownload.net/test.tar.gz](http://testdownload.net/test.tar.gz)
    -n 指定线程数
    -o 指定另存为目录
    -s 指定每秒的最大比特数
    -q 静默模式

    系统

    who am i
    查看用户

    输出的第一列表示打开当前伪终端的用户的用户名,第二列的 pts/0 中 pts 表示伪终端,所谓伪是相对于 /dev/tty 设备而言的,还记得上一节讲终端时的那七个使用 [Ctrl]+[Alt]+[F1]~[F7] 进行切换的 /dev/tty 设备么,这是“真终端”,伪终端就是当你在图形用户界面使用 /dev/tty7 时每打开一个终端就会产生一个伪终端,pts/0 后面那个数字就表示打开的伪终端序号,第三列则表示当前伪终端的启动时间。

    用户

    sudo passwd lilei 设置用户lilei的密码
    sudo adduser lilei 创建新用户lilei,默认为新用户在 /home 目录下创建一个工作目录
    su -l lilei 切换到lilei用户
    sudo deluser lilei --remove-home 删除用户

    groups

    groups shiyanlou


    其中冒号之前表示用户,后面表示该用户所属的用户组。这里可以看到 shiyanlou 用户属于 shiyanlou 用户组,每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组
    cat /etc/group | grep -E "shiyanlou"
    查看自己属于哪些用户组

    group_name:password:GID:user_list

    sudo usermod -G sudo lilei
    将其它用户加入 sudo 用户组
    以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令。

    文件权限操作

    ls -l a.txt

    drwxr-xr-x 2 root root 4.0K 3月 23 2017 a.txt

    第1位:文件类型(d 目录,- 普通文件,l 链接文件)
    r 可读权限,w可写权限,x可执行权限(也可以用二进制表示 111 110 100 --> 764)
    第2-4位:所属用户权限,用u(user)表示
    第5-7位:所属组权限,用g(group)表示
    第8-10位:其他用户权限,用o(other)表示
    第2-10位:表示所有的权限,用a(all)表示

    2是纯数字 ,表示 文件链接个数
    第一个“root” 表示文件的所有者
    第二个“root” 表示为文件的所在群组
    “4.0K”,表示为文件长度(大小)
    “3月 23 2017”,表示文件最后更新(修改)时间
    “etc” 表示文件的名称

    chown

    改变文件的所属用户和所属组。

    -R 修改指定目录及其子目录

    chown -R xjj:xjj a修改a目录的用户和组为 xjj
    chown user1 file1 改变一个文件的所有人属性
    chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性
    chown user1:group1 file1改变一个文件的所有人和群组属性

    chmod

    改变文件的访问权限。

    u表示当前用户 user(用户)
    g表示同组用户group(用户组)
    o表示其他用户others(其他用户)
    a表示所有用户
    + 和 - 分别表示增加和去掉相应的权限。
    r表示可读
    w表示可写
    x表示可执行

    用数字来表示权限(r=4,w=2,x=1,-=0),
    7:表示可读可写可执行,4+2+1,
    6:表示可读可写,4+2
    -R 修改指定目录及其子目录

    chmod a+x a.sh给a.sh文件增加执行权限(这个太常用了)
    chmod u+x file给file的属主增加执行权限
    chmod 751 file给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
    chmod u=rwx,g=rx,o=x file 上例的另一种形式
    chmod =r file为所有用户分配读权限
    chmod 444 file 同上例
    chmod a-wx,a+r file同上例
    chmod -R u+r directory 递归地给directory目录下所有文件和子目录的属主分配读的权限
    chmod 4755 设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限。

    df(report file system disk space usage)

    显示文件系统磁盘空间的使用情况

    -h 以人类可读的方式显示,KD,Mb,GB等

    du (estimate file space usage)

    显示指定的目录及其子目录已使用的磁盘空间的总和

    -s显示指定目录的总和
    -a 显示目录中所有文件的大小。
    -h以人类可读的方式显示,Kb,Mb,G8等
    -d参数指定查看目录的深度 # 只查看1级目录的信息
    -d 0 ~
    查看文件大小
    du -h file

    dd

    转换和复制文件,也可以用在备份硬件的引导扇区、获取一定数量的随机数据或者空数据等任务中。

    dd默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变。

    bs(block size)用于指定块大小(缺省单位为 Byte,也可为其指定如'K','M','G'等单位),
    count用于指定块数量。
    conv=ucase 将输出的英文字符转换为大写再写入文件

    输出到test文件
    dd of=test bs=10 count=1
    输出到标准输出
    dd if=/dev/stdin of=/dev/stdout bs=10 count=1

    mount

    -o 操作选项
    -t 文件系统类型
    -w|--rw|--ro权限

    从/dev/zero设备创建一个容量为 256M 的空文件:
    dd if=/dev/zero of=virtual.img bs=1M count=256
    格式化磁盘:
    sudo mkfs.ext4 virtual.img
    挂载我们创建的虚拟磁盘镜像到/mnt目录:
    mount -o loop -t ext4 virtual.img /mnt

    卸载已挂载磁盘
    sudo umount /mnt

    free

    显示当前内存和交换空间的使用情况

    date

    显示系统当前时间

    top

    显示当前系统中耗费资源最多的进程
    查看某个进程中的线程状态
    top -H -p pid

    ps

    较少单独使用,配参数根据需求,ps ef或者ps-aux

    -e 显示所有选程,环境变量
    -f 全格式显示
    -a 显示所有用户的所有进程(包括其它用户)
    -u 按用户名和启动时间的顺序来显示进程
    -x 显示无控制终端的进程
    -l :较长,较详细地将PID的信息列出

    ps aux查看系统所有的进程数据
    ps ax 查看不与terminal有关的所有进程
    ps -lA 查看系统所有的进程数据
    ps axjf 查看连同一部分进程树状态

    kill

    kill -9 pid强制杀死一个进程

    ifconfig

    网卡网络配置,常用于查看当前IP地址
    ifconfig etho 192.168.12.22 修改系统IP(重品后失效)

    ping

    ping baidu.com 测试网络的连通

    hostname

    查看主机名

    关机

    sudo shutdown now
    sudo reboot now
    sudo shutdown -c取消关机
    sudo shutdown -r重启
    sudo shutdown -f强行关闭应用程序

    sudo shutdown -l注销当前用户
    sudo shutdown -t 设置关机倒计时
    sudo shutdown -h hours:minutes按预定时间关闭系统

    export

    设定一些环境变量,env命令能看到当前系统中所有的环境变量。比如,下面设置的就是jdk的。
    export PATH=$PATH:/home/xjj/jdk/bin
    source命令来让其立即生效
    set 显示当前 Shell 所有变量,包括其内建环境变量,用户自定义变量及导出的环境变量。
    env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
    export 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。

    /etc/bashrc(有的 Linux 没有这个文件) 和 /etc/profile ,它们分别存放的是 shell 变量和环境变量。
    unset
    命令删除一个环境变量

    压、解缩

    gzip

    压缩文件成者文件夹
    -d解压缩文件
    gzip file1压缩一个叫做 'file1'的文件
    gzip -9 file1最大程度压缩

    zip

    -r 参数表示递归打包包含子目录的全部内容,9 压缩级别最大1 最小,
    -q 参数表示为安静模式,即不向屏幕输出信息,
    -o,表示输出文件,
    -l 参数将 LF 转换为 CR+LF 来达到win/linux兼容。

    zip -r -9 -q -o -l shiyanlou.zip /home/shiyanlou/Desktop将目录 /home/shiyanlou/Desktop 打包成一个文件
    zip file1.zip file1创建一个zip格式的压缩包
    zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包

    unzip

    -q 使用安静模式
    -d指定路径
    -l 不解压只想查看压缩包的内容
    -O(英文字母,大写 o)参数指定编码类型:(win默认会采用 GBK , Linux 默认 UTF-8 )
    unzip -O GBK 中文压缩文件.zip

    unzip -q shiyanlou.zip -d ziptest将文件解压到指定目录:

    tar

    -P 保留绝对路径符
    -j 通过bzip2的支持进行压缩/解压缩
    -v压缩的过程中显示文件
    -c 表示创建一个 tar 包文件
    -f 用于指定创建的文件名,件名必须紧跟在 -f 参数之后
    -p在其他主机还原时希望保留文件的属性
    -h 备份链接指向的源文件而不是链接本身
    -x解包一个文件
    -C 指定保存路径
    -t只查看不解包文件

    tar -jcv -f filename.tar.bz2 压缩
    tar -jtv -f filename.tar.bz2 查询
    tar -jxv -f filename.tar.bz2 -C dirname解压

    rar

    rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包
    rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1'
    rar x file1.rar 解压rar包

    VIM


    修改文本



    定位命令


    image
    替换和取消命令

    删除命令

    常用快捷键


    alias

    alias a='find . -size +10M -type f -print0 | xargs -0 ls -Ssh | sort -z'

    关闭防火墙

    systemctl stop firewalld.service

    禁止防火墙开机启动

    systemctl disable firewalld.service

    关闭SELinux

    nano -w /etc/selinux/config
    将SELINUX=enforcing改为SELINUX=disabled保存并退出:^x->y->回车

    计划任务

    查看添加了哪些任务crontab -l
    添加一个计划任务crontab -e
    删除任务crontab -r
    分 小时 天 月 星期 user-name command to be executed

    启动 rsyslog,以便我们可以通过日志中的信息来了解我们的任务是否真正的被执行了
    sudo apt-get install -y rsyslog
    sudo service rsyslog start( Ubuntu 会默认自行启动不需要手动启动)
    sudo cron -f &(实验环境中 crontab 也是不被默认启动的,同时不能在后台由 upstart 来管理,所以需要我们来启动它)

    每分钟我们会在/home/shiyanlou 目录下创建一个以当前的年月日时分秒为名字的空白文件
    */1 * * * * touch /home/shiyanlou/$(date +\%Y\%m\%d\%H\%M\%S)

    “ % ” 在 crontab 文件中,有结束命令行、换行、重定向的作用,前面加 ” \ ” 符号转义,否则,“ % ” 符号将执行其结束命令行或者换行的作用,并且其后的内容会被做为标准输入发送给前面的命令。

    查看到执行任务命令之后在日志中的信息反馈
    sudo tail -f /var/log/syslog

    有选择的执行命令

    which cowsay>/dev/null && echo "exist" || echo "not exist"
    &&就是用来实现选择性执行的,它表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回 0 则执行后面的,否则不执行,你可以从$?环境变量获取上一次命令的返回结果
    ||在这里就是与&&相反的控制效果,当上一条命令执行结果为 ≠0($?≠0)时则执行它后面的命令
    echo $?

    修改root密码

    ubuntu中修改root账号的密码命令:sudo passwd root

    相关文章

      网友评论

          本文标题:Linux命令

          本文链接:https://www.haomeiwen.com/subject/piybrhtx.html