目录和文件处理
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)
例:drwxrwr 意味着拥有者拥有三种权限,群组成员拥有读写权限,其他人只拥有可读权限。
权限位相应的数值读-4 写-2 执行-1
例 rwxrwr = 764
673 = rwrwxwx
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] [inputfile]
# 例:
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-k
或 Ctrl-e
+ Ctrl-u
或 Ctrl-k
+ Ctrl-u
组合可删除整行。