常用Linux指令

254 阅读3分钟
原文链接: shawnchenxmu.github.io

目录和文件处理

mkdir 建立目录

# 用法:
mkdir [OPTION] DIRECTORY...
# 例:
mkdir fangru


rmdir ( remove directory ) 删除给定的目录
ls ( list ) 列出目录下的内容

# 用法:
ls [OPTION]... [FILE]...
# 例:
ls ­al fangru


cd ( change directory ) 更换工作目录

# 用法:
cd [DIRECTORY]
# 例:
cd fangru


pwd ( print working directory ) 显示当前工作目录

# 用法:
pwd


cp ( copy ) 拷贝文件及其目录

# 用法:
cp [OPTION]... SOURCE DEST
# 例:
cp jie.txt jie.bak


mv ( move ) 移动(重命名)文件

# 用法:
mv [OPTION]... SOURCE DEST
# 例:
mv jieold jienew


rm ( remove ) 删除文件或目录

# 用法:
rm [OPTION]... FILE...
# 例:
rm ­rf jie_dir


find 在目录及其子目录查找文件

# 用法:
find [OPTION] [path] [pattern]
# 例:
find ­name jie*.txt
# 查找指定文件名的文件( 不区分大小写 )
find -iname "MyProgram.c"
# 对找到的文件执行某个命令
find -iname "MyProgram.c" -exec md5sum {} \;
# 查找home目录下的所有空文件
find ~ -empty


history 显示最近使用过的命令

# 用法:
history


diff

# 比较的时候忽略空白符
diff -w name_list.txt name_list_new.txt


文本处理

模式的定义:模式是一种表达式,不列出所有元素,而是给出一系列字符串的一种精确描述。
例如 ab*cd匹配了以ab开始和cd结束的一系列字符串。

cat ( concatenate and print files )
连结文件打印到标准输出。

# 用法:
cat [OPTION] [FILE]...
# 例:
cat pic.png love.txt > pic1.png
最简单的过滤出需要查找字符串行,输出到另外文件,比较适合文件不大的情况
cat xxxx.log |grep 'findstring' > xxxx_select.log


echo 显示一行文本

# 用法:
echo [OPTION] [string]
# 例:
echo $HOME


grep
搜索特定的内容并将含有这些内容的行标准输出

# 用法:
grep [OPTION] PATTERN [FILE]
# 例:
grep ­i Jagen magicLinux.txt
# 输出成功匹配的行,以及该行之后的三行
grep -A 3 -i "example" demo_text
# 在文件中查找字符串( 不区分大小写 )
grep -i "the" demo_file
# 在一个文件夹中递归查询包含指定字符串的文件
grep -r "ramesh" *


wc
统计指定文件中的字节数、字数、行数,并将统计结果显示输出。

# 用法:
wc [OPTION]... [FILE]
# 例:
wc -L magicLinux.txt


sort
对文件中的各行进行排序

# 用法:
sort [OPTION]... [FILE]
# 例:
sort ­r magicLinux.txt


系统管理

Linux系统上文件有三种权限:读,写和执行。敲入ls –l命令后,我们发现用10位表示文件信息
1 2 3 4 5 6 7 8 9 10 文件类型拥有者(owner)群组成员(groups)其他人(others)
例:drwxrw­r­­ 意味着拥有者拥有三种权限,群组成员拥有读写权限,其他人只拥有可读权限。
权限位相应的数值读-4 写-2 执行-1
例 rwxrw­r­­ = 764
673 = rw­rwx­wx

chmod
控制用户对文件的权限

# 用法:
chmod [OPTION] [MODE] [FILE]
# 例:
chmod 764 count.sh


chown
改变档案的拥有者

# 用法:
chown [OPTION]... OWNER[:[GROUP]] FILE
# 例:
chown jie magicLinux.txt


su ( switch user )
su 是切换到其他用户,但是不切换环境变量

# 用法:
su [OPTION] [LOGIN]
# 例:
su zhangjie


passwd
更改使用者的密码参数

/etc/passwd 该目录存储的是操作系统用户信息,该文件为所有用户可见。
/etc/shadow 被称为 /etc/passwd 的影子文件。它们之间的内容是互补的。shadow内容包括用户及被加密的密码以及其它 /etc/passwd 不能包括的信息,比如用户的有效期限等。

# 用法:
passwd [OPTION]
# 例:
passwd zhangjie


who
显示目前登入系统的用户信息

# 用法:
who [OPTION]
# 例:
who ­b


进程管理

ps ( processes )
强悍的进程查看命令

# 用法:
ps [OPTION]
# 例:
ps –aef


kill
删除执行中的程序或工作

# 用法:
kill [OPTION]
# 例:
kill ­9 3154


jobs
通过 jobs 命令查到后台正在执行的命令的序号( 非进程号pid )

# 用法:
jobs


bg
指定号码(非进程号)的命令进程放到后台运行

# 用法:输入'ctrl+z' 然后输入 'bg <job id>'
# 例:
bg <job id>


fg
指定号码(非进程号)的命令进程放到前台运行

# 用法:
fg [jobid]


档案

tar
压缩和解压

# 用法:
tar [OPTION] DEST SOURCE
# 例:
tar ­cvf /home/archive.tar (压缩)
tar ­xvf /home/archive.tar (解压)
# 压缩打包排除目录
tar -zcvf tomcat-xilin.tar.gz tomcat-xilin --exclude=tomcat-xilin/logs --exclude=tomcat-xilin/webapps/backup --exclude=tomcat-xilin/temp --exclude=tomcat-xilin/work


zip
打包压缩

# 用法:
zip [OPTION] DEST SOURSE
# 例:
zip original.zip original


unzip
解压缩zip文件

# 用法:
unzip filename
# 例:
unzip original.zip


网络

ssh
远程登录的客户端

# 用法:
ssh [options] [user]@hostname
# 例:
ssh ­X zhangjie@10.105.11.20


scp
基于ssh登陆进行安全的远程文件拷贝命令

# 用法:
scp [options] [[user]@host1:file1] [[user]@host2:file2]
# 例:
scp file1.txt zhangjie@10.105.11.20:~/work/


ping
通过发送数据包ping远程主机( 服务器 ),常用与检测网络连接和服务器状态。

文件系统

fdisk
观察硬盘之实体使用情形与分割硬盘用

# 用法:
fdisk [options]
# 例:
sudo fdisk ­l


mount
如果你要使用储存设备( Mo、硬盘、光驱等 ),就得先将它挂上( Mount ),而当储存设备挂上了之后,就可以把它当成一个目录来进行访问。挂上一个设备使用mount命令。

在使用mount这个指令时,至少要先知道下列三种信息:

1. 要Mount对象的文件系统类型?( File system type )
2. 要Mount对象的设备名称? ( /dev/???? )
3. 要将设备Mount到哪个目录去?

# 用法:
mount ­t type device dir
# 例:
mount /dev/sda5 /media/target


umount
卸除文件系统

# 用法:
umount [OPTIONS] dir | device
# 例:
umount /media/target


du
查看目录或文件所占用磁盘空间的大小

# 用法:
du [OPTION]... [FILE]...
# 例:
du


df ( disk space free )
检查文件系统的磁盘空间占用情况。

# 用法:
df [OPTION]... [FILE]...
# 例:
df


quota
显示磁盘使用情况和限制情况

# 用法:
quota [OPTION]
# 例:
quota ­v


awk

# nginx 统计日志ip个数并排序
cat img.log | awk '{ips[$1]+=1} END{for( ip in ips ) print ips[ip],ip}' | sort -nr
# 查看3点-6点之间的Ip访问个数
grep "2012:0[3-6]" img.log | awk '{ips[$1]+=1} END{for( ip in ips ) print ips[ip],ip}' | sort -nr
# 查看3点-6点之间的ip访问数,并且访问数>=200的ip.
grep '2012:0[3-6]' banma_access.log | awk '{ips[$1]+=1} END{for( ip in ips ) if( ips[ip]>=200 ) print ips[ip],ip}' | sort -nr
# 删除重复行
awk '!( $0 in array ) { array[$0]; print}' temp


rsync

# 目录同步(文件变更也会同步)
rsync -rvz --progress /home/video/vid adv1:/mnt/video_data


split
功能说明:用于将源文件分割为多个文件,分割包括按照字节( -b ),按行( -l ),按字符( -C )
设置切割后文件的前置文件名,split 会自动在前置文件名后再加上编号

# 指定文件大小分割文件( m,k )
split -b 10m srcFile [newFilePrefix]
# 根据行数分割文件
split -l 300 srcFile [newFilePrefix]
# 进行文件合并
cat fileName* > dstFile


tr
功能说明:tr命令用于文件内容的替换

# 小写转大写
cat src.txt | tr a-z A-Z >> dst.txt
# 大写转小写 tr A-Z a-z
cat src.txt | tr A-Z a-z >> dst.txt
# 删除空行
cat srcFile | tr -s "\n" > dstFile
# 把路径变量中的冒号":",替换成换行符"\n"
echo $PATH | tr -s ":" "\n" > dstFile


扩展

reboot
重启系统

# 用法:
reboot [OPTION]
# 例:
reboot


poweroff
关闭系统

# 用法:
poweroff [OPTION]
# 例:
poweroff


sed
一种在线编辑器,它一次处理一行内容

# 用法:
sed [OPTION] [input­file]
# 例:
sed 's/love/hate/g' loveletter.txt

# 逐行匹配并输出到文件(比较适合大文件),如果文件太大用cat会导致内存不足问题
sed -n '/moqushipinres/p' log_20170327_000* >> log_20170327_select.log
sed -n  '/[moqushipinres|aaa]/p' log_20170327_000* >> log_20170327_select.log
sed -n '/^15:09/,/^15:13/p' catalina.out > part.log 

# 当你将Dos系统中的文件复制到Unix/Linux后,这个文件每行都会以\r\n结尾,sed可以轻易将其转换为Unix格式的文件,使用\n结尾的文件
sed 's/.$//' filename


10个强大的Linux单行命令

sudo !! 以 root 帐户执行上一条命令。

python -m SimpleHTTPServer 利用 Python 搭建一个简单的 Web 服务器,可通过 http: //ip:8000 访问。

:w !sudo tee % 在 Vim 中无需权限保存编辑的文件。

cd - 更改到上一次访问的目录。

^foo^bar 将上一条命令中的 foo 替换为 bar,并执行。

cp filename{,.bak} 快速备份或复制文件。

mtr google.com traceroute + ping。

!whatever:p 搜索命令历史,但不执行。

$ssh-copy-id user@host 将 ssh keys 复制到 user@host 以启用无密码 SSH 登录。

ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg 把 Linux 桌面录制为视频。

常用快捷键

Ctrl+r 根据关键字查询以往输入的linux相关命令

Ctrl+w 删除光标前的一个单词,这样就不必要每次都按delete键删除一个一个字母了

移动光标

Ctrl–a 移到行首

Ctrl–e 移到行尾

Ctrl–xx 在命令行尾和光标之间移动

Ctrl-a + Ctrl-kCtrl-e + Ctrl-uCtrl-k + Ctrl-u 组合可删除整行。