Linux下的命令总结笔记(一)
说在前面的话:
本文是以笔记的形式呈现,那么其内容也将会有一个更新的过程。其命令也为亲测内容,大家可以放心使用(蓝色字体部分除外,蓝色部分为未测试或测试后未验证)。如果有一些什么问题,可以给我留言。
1.查看历史记录:
history 查看最近使用过的命令记录
2.网络 - (以太网和WIFI无线)
ifconfig eth0 显示一个以太网卡的配置
ifconfig eth0 显示一个以太网卡的配置
ifup eth0 启用一个 'eth0' 网络设备
ifdown eth0 禁用一个 'eth0' 网络设备
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址
ifconfig eth0 promisc 设置 'eth0' 成混杂模式以嗅探数据包 (sniffing)
dhclient eth0 以dhcp模式启用 'eth0'
route -n show routing table
route add -net 0/0 gw IP_Gateway configura default gateway
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configure static route to reach network '192.168.0.0/16'
route del 0/0 gw IP_gateway remove static route
echo "1" > /proc/sys/net/ipv4/ip_forward activate ip routing
hostname show hostname of system
host www.example.com lookup hostname to resolve name to ip address and viceversa(1)
nslookup www.example.com lookup hostname to resolve name to ip address and viceversa(2)
ip link show show link status of all interfaces
mii-tool eth0 show link status of 'eth0'
ethtool eth0 show statistics of network card 'eth0'
netstat -tup show all active network connections and their PID
netstat -tupl show all network services listening on the system and their PID
tcpdump tcp port 80 show all HTTP traffic
iwlist scan show wireless networks
iwconfig eth1 show configuration of a wireless network card
hostname show hostname
host www.example.com lookup hostname to resolve name to ip address and viceversa
nslookup www.example.com lookup hostname to resolve name to ip address and viceversa
whois www.example.com lookup on Whois database
3.APT 软件工具 (Debian, Ubuntu 以及类似系统)
sudo apt-get install package_name 安装/更新一个 deb 包
apt-cdrom install package_name 从光盘安装/更新一个 deb 包
sudo apt-get update 升级列表中的软件包
apt-get upgrade 升级所有已安装的软件
apt-get remove package_name 从系统删除一个deb包
apt-get check 确认依赖的软件仓库正确
apt-get clean 从下载的软件包中清理缓存
apt-cache search searched-package 返回包含所要搜索字符串的软件包名称
4.关机:
(注:这里如果你是ubuntu的系统,那么请在命令前面加上一个sudo)
shutdown -h now 立即关机
shutdown -r now 立即重启
shutdown -r +3 三分钟后重启
shutdown -h +3 "The System will shutdown after 3 minutes" 提示使用者将在三分钟后关机
shutdown -r +3 "The System will restart after 3 minutes" 提示使用者将在三分钟后重启
shutdown -r 20:23 在20:23时将重启计算机
shutdown -r 20:23 & 系统返回系统编码 可以将在20:23时重启的任务放到后台去,用户可以继续操作终端
kill 系统返回系统编码 对于设置了上面的重启或是关机的指令后,使用这个可以中止重启或关机指令
logout 注销
reboot 重启(此命令也同样需要root权限的)
5.查看网络系统启动信息
dmesg|grep eth
6.查看日历相关
cal 查看当前月份的日历
cal [month] [year] 查看year年month月的日历
cal [year] 查看year年一年的日历
7.查看日期相关
date 查看当前日期和时间
date +%Y-%m-%d 查看当前日期
date +%H-%M 查看当前时间
date mmddHHMMYYYY.ss 设置日期和时间 - 月日时分年.秒
8.查看磁盘空间
查看文件系统磁盘使用情况 df -h
查看当前文件夹下的磁盘使用情况 du --max-depth=1 -h
查看某一指定文件夹的大小
du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小
ls -lSr |more 以尺寸大小排列文件和目录
du -sh dirName 查看目录 'dirName' 已经使用的磁盘空间
dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统)
rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统)
9.查看所有的进程和端口使用情况
netstat -apn
10.查看系统相关信息
arch 显示机器的处理器架构
uname -m 显示机器的处理器架构
uname -r 显示正在使用的内核版本
dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)
cat /proc/cpuinfo
cat /proc/swaps 显示哪些swap被使用
cat /proc/version 显示内核的版本
cat /proc/net/dev 显示网络适配器及统计
cat /proc/interrupts 显示中断
cat /proc/meminfo 校验内存使用
cat /proc/mounts 显示已加载的文件系统
lspci -tv 罗列 PCI 设备
lsusb -tv 显示 USB 设备
11.文件与目录操作系列
cd /home 进入 '/home' 目录'
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd 进入个人的主目录
cd ~username 进入个人的主目录
cd - 返回上次所在的目录
pwd 显示工作路径
ls:
显示目录内容
最常用参数:
-a:显示指定目录所有文件,包括文件名以 . 开头的文件
-l:显示文件详细信息(包括文件类型,权限,修改时间,访问时间,大小,文件名…)
-h:将文件大小以方便阅读的形式表示出来,配合 -l 参数使用,常有奇效
ls 查看目录中的文件
ls -f 查看目录中的文件
同是查看目录中的文件,这里我们可以看一下ls和ls -f的区别
通过上的图片,可以看到ls -f列的更全一些,它还罗列了一些隐藏文件
ls -l 显示文件和目录的详细资料
ll 显示文件和目录的详细资料
再有显示文件和目录的详细资料中,ls -l和ll的区别是一样的,不过这里与上面的刚好相反
ls -a 显示隐藏文件
ls *[0-9]* 显示包含数字的文件名和目录名
tree 显示文件和目录由根目录开始的树形结构
mkdir [dirname] 创建一个叫做 'dirname' 的目录'
mkdir [dir1] [dir2] 同时创建两个目录
mkdir -p dir0/dir1/dir2 创建一个目录树
文件复制命令:cp
命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination)
cp [option] source1 source2 source3 ... directory
参数说明:
-a:是指archive的意思,也说是指复制所有的目录
-d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身
-f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
-i:若目标文件(destination)已存在,在覆盖时会先询问是否真的操作
-l:建立硬连接(hard link)的连接文件,而非复制文件本身
-p:与文件的属性一起复制,而非使用默认属性
-r:递归复制,用于目录的复制操作
-s:复制成符号连接文件(symbolic link),即“快捷方式”文件
-u:若目标文件比源文件旧,更新目标文件
如将/test1目录下的file1复制到/test3目录,并将文件名改为file2,可输入以下命令:
cp /test1/file1 /test3/file2
cp dir/file1 file2 复制一个文件
cp dir/* . 复制一个目录下的所有文件到当前工作目录
cp -a /tmp/dir1 . 复制一个目录到当前工作目录
cp -a dir1 dir2 复制一个目录
文件移动命令:mv
命令格式:mv [-fiv] source destination
参数说明:
-f:force,强制直接移动而不询问
-i:若目标文件(destination)已经存在,就会询问是否覆盖
-u:若目标文件已经存在,且源文件比较新,才会更新
如将/test1目录下的file1复制到/test3目录,并将文件名改为file2,可输入以下命令:
mv /test1/file1 /test3/file2
mv dir1 new_dir 重命名/移动 一个目录
文件删除命令:rm
命令格式:rm [fir] 文件或目录
参数说明:
-f:强制删除
-i:交互模式,在删除前询问用户是否操作
-r:递归删除,常用在目录的删除
如删除/test目录下的file1文件,可以输入以下命令:
rm -i /test/file1
rm -f file1或rm -f file1 删除一个叫做 'file1' 的文件'
rmdir dir1 删除一个叫做 'dir1' 的目录'
rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容
rm -rf dir1 dir2 同时删除两个目录及它们的内容
ln -s file1 lnk1 创建一个指向文件或目录的软链接
ln file1 lnk1 创建一个指向文件或目录的物理链接
touch -t 1403021719 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)
touch fileName 创建一个名为fileName的文件
iconv -l 列出已知的编码
这个命令有点强啊,执行之后,我天。原来有这么多的程序编码啊~
12.查看文件内容
直接查看文件内容
gedit fileName或是vim fileName(vim 需要下载安装 $sudo apt-get install vim) 打开一个文件
cat file1 从第一个字节开始正向查看文件的内容
tac file1 从最后一行开始反向查看一个文件的内容
翻页查看
more file1 查看一个长文件的内容
如果你的文件够长,就会出现下面的情况:
此时的状态是表示正在等待你的指令。主要有以下指令操作:
空格键:向下翻一页
Enter:向下滚动一行
/string:代表在这个显示的内容当中,向下查询“string”这个关键字
:f:立刻显示出文件名及目前显示的行数
q:立刻离开more
b或[ctrl]-b:往回翻页,不过个操作只对文件有用,对管道无用
less file1 一页一页翻动
空格键:向下翻一页
[PageDown]:向下翻动一页
[PageUp]:向上翻动一页
/string:向下查询"string"的功能
?string:向上查询"string"的功能
n:重复前一个查询(与/或?有关)
N:反向重复前一个查询(与/或?有关)
q:立刻离开less
数据选取
head -2 file1 查看一个文件的前两行tail -2 file1 查看一个文件的最后两行
tail -f /var/log/messages 实时查看被添加到一个文件中的内容
13.打开一个软件
例如打开火狐:firefox -search "linux.cn"
14.文件搜索相关
文件搜索
find / -name fileName 从 '/' 开始进入根文件系统搜索文件和目录
find / -user userName 搜索属于用户 'user1' 的文件和目录
find /home/userName -name \*.bin 在目录 '/ home/userName' 中搜索带有'.bin' 结尾的文件
find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限
find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备
locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令
whereis halt 显示一个二进制文件、源码或man的位置
which halt 显示一个二进制文件或可执行文件的完整路径
15.挂载一个文件系统
(此点中的命令没有经过测试)
mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在
umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 '/ mnt/hda2' 退出
fuser -km /mnt/hda2 当设备繁忙时强制卸载
umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用
mount /dev/fd0 /mnt/floppy 挂载一个软盘
mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom
mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom
mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom
mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件
mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统
mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备
mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享
16.用户和群组
groupadd group_name 创建一个新用户组
groups 查看当前登录用户的组内成员(需要root权限)
whoami 查看当前登录的用户名
useradd userName 创建一个新用户
cat /etc/passwd |cut -f 1 -d : 查看当前所有用户
groupdel group_name 删除一个用户组
groupmod -n new_group_name old_group_name 重命名一个用户组
useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户
userdel -r user1 删除一个用户 ( '-r' 排除主目录)
passwd user1 修改一个用户的口令 (只允许root执行)
passwd 修改当前用户口令
usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性
chage -E 2005-12-31 user1 设置用户口令的失效期限
pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户
grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组
newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组
17.文件的特殊属性
使用 "+" 设置权限,使用 "-" 用于取消
chattr +a file1 只允许以追加方式读写文件
chattr +c file1 允许这个文件能被内核自动压缩/解压
chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件
chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接
chattr +s file1 允许一个文件被安全地删除
chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件
lsattr 显示特殊的属性
18.字符设置和文件格式转换
dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIXunix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS
recode ..HTML < page.txt > page.html 将一个文本文件转换成html
recode -l | more 显示所有允许的转换格式
19.文本处理
cat file1 file2 ... | command <> file1_in.txt_or_file1_out.txt general syntax for text manipulation using PIPE, STDIN and STDOUTcat file1 | command( sed, grep, awk, grep, etc...) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中
cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中
grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug"
grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇
grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行
grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"
sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2"
sed '/^$/d' example.txt 从example.txt文件中删除所有空白行
sed '/ *#/d; /^$/d' example.txt 从example.txt文件中删除所有注释和空白行
echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容
sed -e '1d' example.txt 从文件example.txt 中排除第一行
sed -n '/stringa1/p' 查看只包含词汇 "string1"的行
sed -e 's/ *$//' example.txt 删除每一行最后的空白字符
sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部
sed -n '1,5p;5q' example.txt 查看从第一行到第5行内容
sed -n '5p;5q' example.txt 查看第5行
sed -e 's/00*/0/g' example.txt 用单个零替换多个零
cat -n file1 标示文件的行数
cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行
echo a b c | awk '{print $1}' 查看一行第一栏
echo a b c | awk '{print $1,$3}' 查看一行的第一和第三栏
paste file1 file2 合并两个文件或两栏的内容
paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分
sort file1 file2 排序两个文件的内容
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u 删除交集,留下其他的行文本处理
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)
cat file1 file2 ... | command <> file1_in.txt_or_file1_out.txt general syntax for text manipulation using PIPE, STDIN and STDOUT
cat file1 | command( sed, grep, awk, grep, etc...) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中
cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中
grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug"
grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇
grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行
grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"
sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2"
sed '/^$/d' example.txt 从example.txt文件中删除所有空白行
sed '/ *#/d; /^$/d' example.txt 从example.txt文件中删除所有注释和空白行
echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容
sed -e '1d' result.txt 从文件example.txt 中排除第一行
sed -n '/stringa1/p' 查看只包含词汇 "string1"的行
sed -e 's/ *$//' example.txt 删除每一行最后的空白字符
sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部
sed -n '1,5p;5q' example.txt 查看从第一行到第5行内容
sed -n '5p;5q' example.txt 查看第5行
sed -e 's/00*/0/g' example.txt 用单个零替换多个零
cat -n file1 标示文件的行数
cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行
echo a b c | awk '{print $1}' 查看一行第一栏
echo a b c | awk '{print $1,$3}' 查看一行的第一和第三栏
paste file1 file2 合并两个文件或两栏的内容
paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分
sort file1 file2 排序两个文件的内容
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u 删除交集,留下其他的行
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)
comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容
comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容
comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)
comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容
comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容
comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分
20.其他命令集
clear 清屏
su 进入管理者模式(ubuntu下不适用)
uname -r 查看内核版本