linux命令一百条

简介

今天忙完开题报告,我又闲着无事想起了perf的事情,一直对perf情有独钟,奈何现在记忆力完全跟不上趟(因为熬夜吧),刚读完的书立刻就忘,甚是不爽,现先从linux命令一百条做起吧。本文是节选自linux perf master一书,我估计也看不完那么多东西,只能挑选一些感兴趣的歇一歇。

关于方式

目前打算使用执行命令,截图或者markdown呈现结果的方式,给人以直观的感受,每个命令都使用小标题。

adduser/addgroup

增加用户或者组,我使用的centos的命令是useradd, groupadd。

案例:系统增加用户lpstudy,以及设定密码为123

sudo useradd lpstudy  (增加用户lpstudy)
sudo passwd lpstudy (输入123两次)
arch

显示本机的机器的架构,

[lpstudy@air test]$ arch
x86_64
  • 解释一波什么是i386, i686以及x86_64
    i386对应的是32位系统、而i686是i386的一个子集,i686仅对应P6及以上级别的CPU,i386则广泛适用于80386以上的各种CPU;x86_64主要是64位系统。
cal/ncal

显示本机日历,查看日历。本机并没有ncal命令,为何?

[lpstudy@air test]$ cal
    November 2018   
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
cat

显示文件内容

[lpstudy@air test]$ cat 1.txt 
hello i am 1.txt

tips:cat的另一大小技巧,创建文件并写入内容,例如创建文件2.txt并写入hello world该如何操作?

cat > 2.txt
开始输入内容:hello world
输入完成后,按键盘上的Ctrl+d,表明输入完成
cd

切换目录,有几个常用的cd选项

cd ..  切换到父目录
cd ~   切换到个人用户目录
cd -   切换到上一次所在的目录
chgrp

设置文件或者目录的属组,支持-R选项用于递归设置

chgrp g1 1.txt 表明将文件1.txt的属组设置为g1
chgrp -R g1 dir1/*  表明将目录dir1下的全部文件的属组都设置为g1
chmod

设置文件或者目录的权限,同样支持-R参数递归设置
相信很多人用这个命令都是chmod +x run.sh,用于./run.sh执行shell命令。+x表示给文件增加执行权限,如果有执行权限,就可以使用./fileToExecute这种方式来执行。

chmod支持两种模式的权限设置

  1. 数字设置,4为读,2为写,1为执行
chmod 777 1.txt  所有人都可读可写可执行
chmod 600 2.txt  只有自己可读写,其他人都不可读不可写不可执行
  1. 字母设置,r为读,w为写,x为执行
chmod +w 1.txt 所有人都可写
chmod -x 2.sh 去掉2.sh的执行权限
chown

设置文件用户和组,同样支持-R参数递归设置
不是很明白为何有chgrp的命令,chown本身就可以设置属组

chown user:group test.txt 设置文件的owner为user,属组为group。
cksum

文件的CRC校验值以及文件的字节数目
当你需要将某个文件传递给某人的时候,为了确保文件没有被篡改,可以比较两个文件的cksum结果是否一致。

[lpstudy@air test]$ cksum 1.txt 
1547019575 17 1.txt
clear

清空屏幕,最简单。
说实话,我很少用,基本都用Ctrl+L快捷键。

cmp

见名知意,文件内容比较,逐个字节的比较

[lpstudy@air test]$ cat 1.txt 2.txt
hello i am 1.txt
hello I am 1.txt

[lpstudy@air test]$ cmp 1.txt 2.txt     
1.txt 2.txt differ: byte 7, line 1
comm

已经排序好的文件进行比较,逐行比较

支持的选项
-1:不显示只在第一个文件出现的内容;
-2:不显示只在第二个文件中出现的内容;
-3:不显示同时在两个文件中都出现的内容。

简单记忆法:
-1:可以看做减1,也就是说把只在第一个文件的内容减去
-2:同理
-3:可以看做减去1+2,也就是把只在第一个文件,或者只在第二个文件的统统减去。

这个命令非常有用,有一个文件有200个ip地址,另一个文件有180个ip地址,每个ip地址一行,想找出来两个文件的公共的ip地址。

sort 1.txt > sorted_1.txt
sort 2.txt > sorted_2.txt

comm -1 -2 sorted_1.txt sorted_2.txt 显示两个文件的公共部分
cp

复制文件到目的文件,或者目的目录,同样支持-R选项

cp test.txt ~/Desktop 将test.txt复制到个人桌面
cp test.txt another_copy.txt 创建一个新的文件,与test.txt文件内容相同
csplit

对文件进行切割,命令感觉过于复杂,split感觉就够用了

csplit file1 [10] 将一个文件拆成2个,第一个包含9行
date

打印系统时间

输出自1970年的UTC秒数
[lpstudy@air test]$ date +%s
1541509906

输出当前时间
[lpstudy@air test]$ date
Tue Nov  6 21:11:53 CST 2018
dd

创建文件,复制文件,硬刻录磁盘镜像等等

两大用途

dd if=/dev/sda of=/tmp/dev-sda-part.img 创建硬盘镜像

创建一个1GB的文件
[lpstudy@air test]$ dd if=/dev/zero of=1G.file bs=1M count=1024  
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.415416 s, 2.6 GB/s
[lpstudy@air test]$ ls -lh 1G.file 
-rw-rw-r--. 1 lpstudy lpstudy 1.0G Nov  6 21:16 1G.file
df

查看文件系统的使用率以及剩余空间等

[lpstudy@air test]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             193G  149G   35G  82% /
tmpfs                  16G  6.3G  9.3G  41% /dev/shm
/dev/sda5             1.4T  1.3T  9.9G 100% /home
diff

文本比较,行行比较
比较有价值的是它可以准确的输出两个文件不同的地方,并且输出结果能够用于从一个文件恢复到另一个文件。

diff file1 file2

用于恢复的
diff -u file1 file2 > diff.txt
patch -R file1 < diff.txt 用于恢复file2
patch -R file2 < diff.txt 用于恢复file1
diff3

比较三个文件,完全没有用过

dir

windows的命令吧,和ls啥区别,不知道。

dirname

给定一个路径path,得到其父路径

常用于得到一个文件的绝对路径

展开~,获取文件的父目录绝对路径
[lpstudy@air test]$ dirname ~/test/1G.file 
/home/lpstudy/test

获取文件或者目录的父路径
[lpstudy@air test]$ dirname /a/b/c
/a/b
dmidecode

查看系统的硬件信息

各种硬件信息,非常全
[lpstudy@air test]$ sudo dmidecode
# dmidecode 2.11
SMBIOS 2.7 present.
117 structures occupying 4147 bytes.
Table at 0x000EB8C0.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
        Vendor: American Megatrends Inc.
        Version: 3505
        Release Date: 03/13/2013
        Address: 0xF0000
        Runtime Size: 64 kB
        ROM Size: 8192 kB
        Characteristics:
                PCI is supported
du

查看指定目录或者文件的磁盘占用率(disk usage)

重要参数: --max-depth=N
用来表示要查看当前目录到哪一层级别

du -sh . 查看当前目录下的全部数据的空间占用
du --max-depth=1 -h . 查看当前目录下的文件和目录的磁盘占用(每个文件或者目录一行)
echo

打印文本或者变量到控制台

echo hello 输出hello
echo $name 输出变量name的值
ed

文本编辑器
个人一次都没有用过,没啥建议,一直用vim,不再介绍。

eject

弹出光盘

env

显示或者设置环境变量

env BOOK=linux 设置
exit

退出当前的shell

expand

将tab替换为空格

expr

计算器,支持简单的+,-,*,/,%

expr 7 + 2
expr 7 - 2
expr 7 \* 2
expr 7 / 2
expr 7 % 2 求余
factor

分解质因子

[lpstudy@air test]$ factor 120
120: 2 2 2 3 5
fgrep

其实就是grep -F选项,不处理正则表达式

fgrep "." filename  在文件中查找点
find

查找文件,选项贼多

find . -name "1.txt"
find . -name "1.txt" -type f 查看文件类型的file

fmt

针对paragraph,对文本格式化输出

fold

文本处理,对文本进行折叠

$ fold -w 10
Hi my name is himanshu Arora
Hi my name
is himans
hu Arora
free

查看内存的占用情况

grep

查找指定的pattern

grep -C 5 hello 1.txt 搜索包含hello的行,以及这个行周围的几行
grep -o "a.*b" 1.txt 搜索以a开头,以b结尾的字符串,且只输出匹配的地方
groups

列出当前用户的属组,一个用户所隶属的组

gzip

压缩文件,后缀名为gz

gunzip

解压文件,支持gzip压缩的文件

head

显示文件的前10行

hostname

显示或者设置当前系统的hostname,主机名字
注意只会临时设置,重启失效

hostname 显示hostname
hostname magic 设置hostname为magic
id

显示用户以及组信息

[lpstudy@air test]$ id
uid=542(lpstudy) gid=543(lpstudy) groups=543(lpstudy) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
kill

向指定进程发送TERM信号,杀死进程

kill run.sh 发送TERM信号
kill -9 run.sh   发送强制终止信号
killall

向给定名字的进程发送信号,这会杀死多个具有相同name的进程

last

显示最近登录的用户

ldd

查看库的依赖

$ ldd /lib/i386-linux-gnu/libcrypt-2.19.so
linux-gate.so.1 => (0xb77df000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75da000)
/lib/ld-linux.so.2 (0x80088000)
ln

链接,包含软链接和硬链接

ln 1.txt  hard_1.txt  创建1.txt的硬链接
lln -s 1.txt soft_1.txt  创建1.txt的软链接
locate

文件搜索
它与find的区别是find功能更强大,这个搜索非常快,它是基于db的。
每天由crontab来更新db,因此新创建的文件无法立刻被搜索到。要立刻搜索,需要updatedb命令。

locate filename
logname

查看当前登录的用户名

[lpstudy@air test]$ logname
lpstudy
[lpstudy@air test]$ w
 14:47:55 up 16 days, 20:52,  3 users,  load average: 2.63, 2.69, 2.71
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
lpstudy   pts/2    XXX     12:32    2:15m  0.01s  0.01s -bash
lpstudy   pts/3    XXX     12:32    0.00s  0.31s  0.03s w
lpstudy   pts/0    XXX     12:32    2:15m  0.00s  0.00s -bash
[lpstudy@air test]$ who
lpstudy   pts/2        2018-11-08 12:32 (XXX)
lpstudy   pts/3        2018-11-08 12:32 (XXX)
lpstudy   pts/0        2018-11-08 12:32 (XXX)

未完待续。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值