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过滤出来了
ys@ys-VirtualBox:~/aa$ ls 11 22 33 aa1 f.txt ys@ys-VirtualBox:~/aa$ find ./ -type f | grep txt ./f.txt ys@ys-VirtualBox:~/aa$
-
grep 内容过滤,把find的结果再过滤一下,比如只想看find结果(文件列表作为grep的输入)里,文件内容里有abc的文件
find ./ -maxdepth 2 -size +1M | xargs grep abc
例子:grep后的结果是没有把f.txt过滤出来,而是把11和22过滤出来了,因为11和22的文件内容里有【txt】
ys@ys-VirtualBox:~/aa$ ls 11 22 33 aa1 f.txt ys@ys-VirtualBox:~/aa$ find ./ -type f |xargs grep txt ./11:txt ./22:txt ys@ys-VirtualBox:~/aa$ cat 11 txt ys@ys-VirtualBox:~/aa$ cat 22 txt ys@ys-VirtualBox:~/aa$ cat f.txt ys@ys-VirtualBox:~/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】
ys@ys-VirtualBox:~$ 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--)
28,查看文件的种类:file
-
file 可执行的二进制文件的结果:
ttcp: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/l, for GNU/Linux 3.2.0, BuildID[sha1]=0d093749a09a7d558bfd44a95654f9153a22d2d8, with debug_info, not stripped
-
file 文本文件的结果:
sender.cc: C source, ASCII text