linux 常用命令

Posted 小石王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 常用命令相关的知识,希望对你有一定的参考价值。

目录:

1 查看系统里预装了哪些shell
2 查看使用过的命令历史
3 linux目录结构
4 ls命令常用选项
5 cd命令
6 显示当前目录
7 创建目录
8 显示目录结构
9 删除目录
10 创建文件
11 显示文件里的内容
12 【wc】统计文件里的行数,单词树,字节数
13 【du】查看文件所占用的磁盘空间的大小
14 【df】查看硬盘的使用情况
15 软硬连接
16 更改文件或者文件夹的权限
17 更改文件或者文件夹的所有者和用于组
18 find来查找文件
19 grep 查找内容
20 zip和unzip
21 tar压缩和解压缩,tar是linux里最常用的,文件后缀为.tar.gz
22 apt-get 安装
23 dpkg 安装
24 用户相关
25 时间日期
26 alias别名
27 补码(控制,创建文件后,给这个文件的默认权限):umask

1,查看系统里预装了哪些shell

cat /etc/shells

2,查看使用过的命令历史

history

3,linux目录结构

  • linux把所有硬件和资源都看作是文件!
文件目录 功能描述
/bin 可执行文件目录
/media 外部连接到本电脑的设备,比如U盘,光盘等
/mnt 为了让用户挂载别的文件系统
/usr 是unix system resources的缩写,不是user的缩写,很多应用会安装到此目录
/usr/local 用户自己安装软件的目录
/sbin root用户可以使用的可执行文件的目录
/proc 系统内存的映射,会保留进程运行的一些信息
/etc 系统软件的启动和配置目录
/dev linux把所以电脑的设备虚拟化成文件,这里放的是虚拟化后的文件,黄色的代表机器里的各种设备,比如sda1代表硬盘。

4,ls命令常用选项

选项 解释
-l 能够显示详细信息
-a 显示隐藏文件,也就是以.开头的文件或者文件夹
-R 如果文件夹里还有文件夹,就会把所有子文件夹里文件都显示出来
-lrt 按更新时间的升序显示

5,cd命令

回到家目录的几种方式

  • cd
  • cd -
  • cd ~
  • cd $HOME

6,显示当前目录

pwd

7,创建目录

  • 直接创建
mkdir aa
  • 创建有子目录的(bb是不存在的,如果不加-p是无法创建成功的)
mkdir -p bb/cc

8,显示目录结构

tree

9,删除目录

rm -r 目录

10,创建文件

如果文件不存在,则直接创建文件;如果已经存在了,则更新文件的更新时间,可以用【ls -lrt】命令验证

touch 文件1 文件2

11,显示文件里的内容

  • 当文件内容比较少,一个屏能显示全的时候使用cat
  • 当文件内容比较多,一个屏能显示不全的时候使用more

? 回车:一行一行向下移动

? 空格:一屏一屏向下移动

? 不方便的地方:不能向上移动

  • 当文件内容比较多,一个屏能显示不全的时候使用less

? 回车/上下箭头:一行一行向上/下移动

? 空格:一屏一屏向下移动

? 方便的地方:能向上移动

  • 只想看文件的头几行,head

? 默认显示10行。-n 行数:可以指定显示的行数

  • 只想看文件的末尾几行,tail

? 默认显示10行。-n 行数:可以指定显示的行数

? -f : 可以一直监视日志文件的末尾增加的行

12,【wc】统计文件里的行数,单词树,字节数

  • -l :统计函数
  • -w:统计单词书
  • -c :统计字节数

13,【du】查看文件所占用的磁盘空间的大小

  • -h 对人类友好的表示方式。
  • --max-depth=1 不看子目录,不加的话,会把所有子目录也都列出来。

14,【df】查看硬盘的使用情况

  • -h 对人类友好的表示方式。

15,软硬连接

  • 硬连接:增加对磁盘文件的引用计数
  • 软连接:不增加对磁盘文件的引用计数,相当于windows里的快捷方式。
  • 不管修改哪个连接里的文件内容,其他连接都是共有修改后的内容。
  • 增加硬连接(只可以增加文件的硬链接):ln src des
  • 增加软连接(既可以增加文件的软链接,可以增加文件夹的软链接):ln -s src des
  • 删除软硬连接:unlink des 或者 rm des

16,更改文件或者文件夹的权限

-rw-r--r--  1 ys ys  8980 9月   9  2018 examples.desktop
drwxr-xr-x  2 ys ys  4096 9月   9  2018 Videos
-rwxr-xr-x  1 ys ys 28792 4月  18 10:57 a.out
  • 第一位或者是【d】或者是【-】。【d】代表是文件夹;【-】代笔是文件

  • 【rwx】【rw-】【r--】等的含义。

    r:可以读取;

    w:可以修改;

    x:可以执行

    【rwx】:可以读取,可以修改,可以执行。

    【rw-】:可以读取,可以修改,不可以执行。

    【r--】:可以读取,吧可以修改,不可以执行。

    第一组【---】:代表自己。

    第二组【---】:代表自己所在的组。

    第三组【---】:代表其他人。

  • 数字表示法:rws代表 111,111的十进制数字为:7

  • 数字表示法:rw-代表 110,111的十进制数字为:6

  • 数字表示法:r--代表 100,111的十进制数字为:4

  • 数字表示法:-w-代表 010,111的十进制数字为:2

  • 数字表示法:--x代表 001,111的十进制数字为:1

chmod [u|g|o|a] [+|-][r|w|x] filename
  • u:自己
  • g:自己所在的组
  • o:别人
  • a:包括u,g,o
  • +:赋予权限
  • -: 删除权限
chmod 777 filename //自己,组,别人:都有读写和执行的权限
chmod 640 filename //自己:可以读写,但不能执行;组:只可以读;别人:不能读写,不能执行

文件夹的x代表,可以cd进去这个文件夹,否则不可以cd进入这个文件夹。

17,更改文件或者文件夹的所有者和用于组

-rw-r--r--  1 ys ys  8980 9月   9  2018 examples.desktop
drwxr-xr-x  2 ys ys  4096 9月   9  2018 Videos
-rwxr-xr-x  1 ys ys 28792 4月  18 10:57 a.out
  • 第一个ys:代表这个文件或者文件夹属于谁。
  • 第二个ys:代表这个文件或者文件夹属于哪个组。
chown new_user:new_group filename
chown new_user filename

可以看出来,chown即可改用户也可以改变组。

chgrp new_group filename

可以看出来,chgrp只能改变组。

18,find来查找文件

  • 按照名字查找 【-name】,在路径【/home/ys】下(它下面的子目录也查找),查找名字为【src.h】的文件

    find /home/ys -name "src.h"
  • 按照类型来查找【-type】,在路径【/home/ys】下(它下面的子目录也查找),查找类型为【f】的文件。

    类型f:普通文件;类型d:文件夹

    find /home/ys -type f
    -type c
                  File is of type c:
    
                  b      block (buffered) special
    
                  c      character (unbuffered) special
    
                  d      directory
    
                  p      named pipe (FIFO)
    
                  f      regular file
    
                  l      symbolic link; this is never true if the -L option or the -follow  option
                         is  in effect, unless the symbolic link is broken.  If you want to search
                         for symbolic links when -L is in effect, use -xtype.
    
                  s      socket
    
                  D      door (Solaris)
  • 按照文件的大小来查找【-size】,在路径【/home/ys】下(它下面的子目录也查找),查找文件大小为大于1M并且小于5M的文件。不写【+】【-】代表等于

    find /home/ys -size +1M -size -5M
    -size n[cwbkMG]
                  File uses n units of space, rounding up.  The following suffixes can be used:
    
                  `b'    for 512-byte blocks (this is the default if no suffix is used)
    
                  `c'    for bytes
    
                  `w'    for two-byte words
    
                  `k'    for Kibibytes (KiB, units of 1024 bytes)
    
                  `M'    for Mebibytes (MiB, units of 1024 * 1024 = 1048576 bytes)
    
                  `G'    for Gibibytes (GiB, units of 1024 * 1024 * 1024 = 1073741824 bytes)
  • 只在当前目录查找,不查找子目录,【-maxdepth 1】,注意:要放到-size前面

    find /home/ys -maxdepth 1 -size +1M -size -5M
  • find出来的结果是没有文件的详细信息,想看详细信息怎么办呢

    • 使用下面的固定写法,注意:ls -l是可以替换成别的命令,比如[rm -f],把查找出来的文件删除掉,但是直接删除很文件,所以可把【-exe】替换成【-ok】,这样就会把查找出来的结果一条一条的让你确认是否要删除,输入【y】代表删除,输入【n】代表不删除。

      find ./ -maxdepth 2 -size +1M -exec ls -l {} ;
    • 使用管道,并加上【xargs】

      find ./ -maxdepth 2 -size +1M | xargs ls -l
    • [exec]和[xargs]哪个好呢,推荐使用[xargs]。如果find出来的结果过于多的话,[exec]直接把所有结果都传给后面的命令(比如ls -l),会导致后面的命令崩溃掉;然而[xargs]会把find的结果进行分块,就保证了后面的命令不会崩溃。

  • grep 内容过滤,把find的结果再过滤一下,比如只想看find结果(打印到屏幕的纯文本结果作为grep的输入)里,文件名字里有txt的文件

    find ./ -maxdepth 2 -size +1M | grep txt

    例子:grep后的结果是把f.txt过滤出来了

    [email protected]:~/aa$ ls
    11  22  33  aa1  f.txt
    [email protected]:~/aa$ find ./ -type f | grep txt
    ./f.txt
    [email protected]:~/aa$ 
  • grep 内容过滤,把find的结果再过滤一下,比如只想看find结果(文件列表作为grep的输入)里,文件内容里有abc的文件

    find ./ -maxdepth 2 -size +1M | xargs grep abc

    例子:grep后的结果是没有把f.txt过滤出来,而是把11和22过滤出来了,因为11和22的文件内容里有【txt】

    [email protected]:~/aa$ ls
    11  22  33  aa1  f.txt
    [email protected]:~/aa$ find ./ -type f |xargs grep txt
    ./11:txt
    ./22:txt
    [email protected]:~/aa$ cat 11
    txt
    [email protected]:~/aa$ cat 22
    txt
    [email protected]:~/aa$ cat f.txt 
    [email protected]:~/aa$ 
    

19,grep 查找内容

grep [option] 要查找的内容 dir或者filename
  • 当要查找目录时,比如使用【-r】,查找文件时,不用加

  • 当想要显示查找的内容所在的行号,加【-n】

  • 排除内容

    grep -v 要排除的内容 dir或者filename
  • 分析日志

    • 只关注日志里有【txt】的内容

      tail -f 日志文件名 | grep txt
    • 排除日志里含有【txt】的内容

      tail -f 日志文件名 | grep -v txt

20,zip和unzip

  • 压缩:zip。-r:代表递归子目录

    zip -r 压缩包的名字(不用加.zip后缀名) 目录或者文件

    例子:把文件夹aa和文件a.out压缩到fir.zip里

    zip -r fir aa a.out
  • 解压缩:unzip,解压缩到当前目录

    unzip fir.zip

21,tar压缩和解压缩,tar是linux里最常用的,文件后缀为.tar.gz

  • z:gz格式的压缩和解压缩
  • j:bzip2格式的压缩和解压缩
  • c:压缩
  • x:解压缩
  • v:显示信息
  • f:指定压缩包的名字

例子:把文件夹aa和文件a.out压缩成bb.tar.gz

tar zcvf bb.tar.gz aa/ a.out

例子:解压缩bb.tar.gz到当前目录

tar zxvf bb.tar.gz

22,apt-get 安装

  • apt-get update :更新 /etc/apt/sources.list这个文件
  • apt-get install mongdb:安装mongdb
  • apt-get remove mongdb:卸载mongdb
  • apt-get clean:清理

23,dpkg 安装

  • dpkg -i mongd.deb :安装mongdb
  • dpkg -r mongd.deb:卸载mongdb

24,用户相关

  • 创建用户组:groupadd

    sudo groupadd 组名
  • 创建用户:useradd

    • -s:指定使用哪个shell
    • -g:指定组
    • -d:指定用户家的目录
    • -m:家目录不存在时,自动创建
    sudo useradd -d /home/a -s /bin/bash -m -g 组名 用户名
  • 设置密码(刚创建的用户,必须设置密码):passwd

    sudo passwd 用户名
  • 删除用户:userdel

    • -r:删除用户的同时,还把用户的家目录也删除掉
    sudo userdel -r 用户名
  • 切换用户:

    su - 用户名

25,时间日期

  • date命令

    date +'%Y/%m/%d'

    输出结果:2019/04/21

    %a     locale's abbreviated weekday name (e.g., Sun)
    
           %A     locale's full weekday name (e.g., Sunday)
    
           %b     locale's abbreviated month name (e.g., Jan)
    
           %B     locale's full month name (e.g., January)
    
           %c     locale's date and time (e.g., Thu Mar  3 23:05:25 2005)
    
           %C     century; like %Y, except omit last two digits (e.g., 20)
    
           %d     day of month (e.g., 01)
    
           %D     date; same as %m/%d/%y
    
           %e     day of month, space padded; same as %_d
    
           %F     full date; same as %Y-%m-%d
    
           %g     last two digits of year of ISO week number (see %G)
    
           %G     year of ISO week number (see %V); normally useful only with %V
    
           %h     same as %b
    
           %H     hour (00..23)
    
           %I     hour (01..12)
    
           %j     day of year (001..366)

26,alias别名

  • 输入【ls -lrt】是不是很繁琐,可以用alias把【ls -lrt】简单化成【ll】

    [email protected]:~$ alias
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l='ls -CF'
    alias la='ls -A'
    alias ll='ls -lrt'
    alias ls='ls --color=auto'
  • 修改.bashrc文件,添加:【alias ll=‘ls -lrt‘】,然后使用下面的命令,之后当敲ll时,实际执行【ls -lrt】

    source .bashrc

27,补码(控制,创建文件后,给这个文件的默认权限):umask

  • -S 友好显示

0002 取反后得到 0775 再 & 666 后,得到664,所以,

创建文件后,这个文件的默认权限就时664(rw-rw-r--)

以上是关于linux 常用命令的主要内容,如果未能解决你的问题,请参考以下文章

linux中怎么查看mysql数据库版本

Linux常用文件管理命令

markdown [Docker] Docker片段列表和命令#linux #docker #snippets

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

C#常用代码片段备忘

常用python日期日志获取内容循环的代码片段