-
apt-get install/remove 安装/卸载软件;* cat 显示文本文件;
-
aspell 交互式拼写检查命令;
-
basename 两种用法:1. 去掉路径,返回文件名:basename /foo/bar -> bar;
-
去掉后缀,返回文件名:basename foo.bar .bar -> foo
-
cat 显示文件内容,例如"cat /proc/cpuinfo"可以查看CPU信息;有用的几个选项: -A: 显示不可见字符;-n显示行号,-s将相邻的多个空行合并为一个空行 (只针对显示内容,不影响原文件内容);
-
cd 改变目录;
-
chmod 修改文件属性,chmod user/group/other/all +/- read/write/execute filename, 例如chmod u+x file1是只给file1的user赋予执行权限; 参考How to Set File Permissions Using `chmod'
-
chown 变更文件(或目录)的拥有者(或所属群组), 例如root用户执行"chown godu:root -R ./ArtifactRepo"表示将当前目录下的 ArtifactRepo目录及子目录所有权变更给godu用户和root用户组;
-
comm 比较文件,适于比较短的文件间做比较;
-
cp 拷贝文件;cp -r src_folder dst_folder 拷贝目录;
-
cut 截取文件每一行中的一部分,"-c"以字符为单位,"-f" 以域为单位 (要求以tab为分隔符,空格无效);"-d"指定域的分隔符;
-
date 显示系统日期和时间,使用-s参数可以设置日期和时间:date -s "2 OCT 2006 18:00:00"
-
df 显示磁盘使用情况,例如"df -h $HOME"是显示用户主目录的已用和可用的磁盘空间;
-
diff 比较两个文件或者目录,"-c"采用context格式,"-u"采用unified格式;
-
dmidecode 显示硬件设备信息;
-
dpkg 包管理,dpkg -l 列出所有已安装包;dpkg -l
查询 的情况(是否安装,版本等);dpkg -i 安装包;dpkg -r 卸载包;dpkg -P 完全卸载(purge); -
du -sh
: 查看文件夹占用的磁盘空间大小('s' stands for summary, 'h' stands for human readable),要打印某目录下所有项目(目录和文件)尺寸汇总: du -sh *
, 如果只打印目录:du -h --max-depth=1 <folderName>
; 将以上汇总按尺寸大小升序(从小到大)排列:du -s * | sort -n
, 降序排列:du -s * | sort -rn
(r stands for reverse), 排序时不要加-h选项(它会导致排序错误,例如5M会被排在6k之前); List largest 10 folders in current folder:du -s *|sort -rn|head
-
env 列出环境变量
-
exit 退出;
-
expand 将文件中的tab转换为spaces;
-
export 将变量定义为环境变量(仅用于bash,格式为export VAR_NAME=var_value);
-
find 查找文件,最常用格式:find
-name , 例如查找当前目录下名为test的文件和目录:find . -name test,详见 Linux查找文件命令find -
free 查看系统memory使用情况,第一行(Mem)是考虑了内核缓冲后的使用率, 第二行("-/+ buffer/cache")才是软件使用的内存;
-
genisoimage 将光盘制作为ISO文件,类似的还有dvdbackup,但需要安装,用dd也可以, 但据说可能会出错,因为没有错误校验;
-
grep 从文件中查找字符串,
grep -c <regex>
表示计算出现的次数, 参考笔记" Replace a String in Multiple Files in a Directory on Linux "; grep -P "\d" <filename>
: 使用PCRE格式的正则表达式;grep -F <regex>
: 正则表达式内所有字符均不转义; -
gzip/gunzip 压缩/解压缩gz文件;
-
hdparm 获取或者设置硬件信息;
-
hwinfo 类似于lshw, Ubuntu上需要安装:apt-get install hwinfo, 内容十分庞杂,或者叫详细;
-
inxi -Fx: 显示易于阅读的设备信息,格式最易于阅读; inxi -I: 系统总内存和已使用内存,总进程数,运行时间等; inxi -N: 显示网卡信息; inxi -tx cm: 显示实时CPU和内存使用情况; inxi -r: 显示软件源;
-
iostat 显示系统磁盘当前的IO状况(Ubuntu,CentOS支持,Red Hat不支持)
-
ip 查询IP相关信息,
ip addr
=ifconfig
, 其他还有ip route
和ip link
; -
less
查看文本文件内容,或者压缩文件(如zip, tar.gz, jar, war等)的内部结构, 操作类似于只读版vi,如用/查找,j, k, gg, G浏览等; -
ln 创建文件链接(link),一般创建的是软链接(symbolic link), 在target_dir目录下创建src_file1,src_file2等文件的软链接:
ln -s src_file1 src_file2 ... [target_dir]
, 最常用的格式是在目标目录下运行"ln -s src_file", 就在当前目录下创建了一个与src_file同名的软链接(src_file可以是绝对路径或者相对路径), or give the link a new name: cd $target_dir; ln -s /source/to/link new_link_name -
ls 显示当前目录下内容,可用选项:
-d
: 显示目录(而不是目录中的内容);-R
: 显示所有子目录中的内容,类似于tree,但不写成树状;-m
: 目录项之间用逗号做分隔符(而不是换行符),主要用于向其他程序做管道输入; -
lsb_release -a 显示操作系统的distro ID和版本号,而不仅是uname提供的内核情况, 此指令适用于Ubuntu,CentOS和Redhat,Redhat还可以用"cat /etc/redhat-release"查看distro ID;
-
lsblk -f 显示块设备信息,用于确定未mount的USB设备卷标、硬盘分区信息等;
-
lscpu 显示CPU相关信息;
-
lshw 列出硬件信息,比hwinfo精炼一些;
-
lsof 列出打开的文件,
-p
可以指定某个进程打开的文件,-u
指定用户打开的文件,-c
某个命令打开的文件,-i
显示打开的网络端口,-i :22
显示谁连接了22端口,-i tcp
显示所有打开的TCP连接,-a -u bvt -i
显示bvt用户打开的所有网络端口, 其中-a
表示后面的-u bvt
与-i
两个参数间是AND关系; Ref: A Unix Utility You Should Know About: lsof and Finding open files with lsof -
lspci 显示PCI硬件设备信息,为Gentoo等Linux内核内核安装驱动时有用;
-
lsusb 显示USB总线信息;
-
mkdir 新建文件夹,-p指令可以用来建立多级目录,配合{},可以一次建立一个目录树, 例如
mkdir -p godu/{bin/{bin1,bin2},lib/{lib1,lib2}}
可以建立一个3层目录树(用tree或者ls -R指令查看结果); -
more 分屏显示文件内容;
-
mount 用来挂载设备,如果没有参数则显示当前已挂载的设备;
-
mpstat 显示系统cpu当前状态(CentOS和Redhat支持)
-
netstat 显示某个进程使用了哪个端口,或者某个端口被哪个进程使用, 例如"netstat -tupln|grep :1527"可以查询所有包含1527的进程-端口关系;
-
rm 删除文件(和目录),例如删除当前目录下有一个tcp_rpc子目录, 删除其中所有.gitignore文件(包括所有子目录):"rm -ri tcp_rpc/*/.git", 其中选项r表示包含所有子目录,i表示删除前询问;
-
rm -r folder_name 删除目录(如果子目录很多需要手工确认删除,可以用rm -rfv强制删除);
-
passwd 修改密码;
-
paste 将多个文件的对应行连接在一起, 例如paste -d '-' file1 file2将file1的第一行与file2的第一行以'-'连接,后面各行依此类推;
-
pgrep 根据指定规则找出进程PID,相当于
ps -ef| grep ...
,-l
列出进程名,-lf
列出完整进程名; -
pkill 关闭符合指定规则的PID,相当于"pgrep ...|xargs kill";
-
ps 显示进程信息;
-
pwdx [PID] 显示[PID]指定进程的当前工作目录,可以先用ps命令查到进程的PID,再用这个命令找工作目录;
-
rename 更改文件名。例如将所有
.mkd
文件扩展名改为.md
:rename 's/\.mkd$/\.md/' *.mkd
-
rsync: rsync [options] src dst,
-
"-r": recursive, if src is a directory, "rsync -r src dst" means "src" itself with all things in it will be copied to dst, while "rsync -r src/ dst" will copy all things under "src" except "src" itself to "dst";
-
"-C": If you want avoid copy ".svn" or ".git" folder;
-
"-u" means update, if the file in dst is newer than that in src, it will not be copied;
-
"-a" means archive, keep the meta data (modify date and time, etc) of src files when copy, equals to "-rlptgoD";
-
"-t" keep the modification time of original files;
-
"-v" means verbose;
-
"--delete" means delete files in destination folder which not exist in source folder;
-
"-p" means keep permissions between src and dst;
-
"-l" copy symlinks as symlinks;
-
-
script
开始将屏幕输出记录到 中,输入exit结束日志记录; -
setenv csh中定义环境变量,格式为setenv VAR_NAME var_value(与bash的export不同,变量名与值之间是空格而非等号);
-
sort 以行为单位排序,"-n" 数字排序,例如
du -s <target_path> | sort -n
可以按文件夹大小排序;-k
指定排序的项,例如下面需要对多个文件夹(Common, Element, Service)下的子目录汇总后按文件名排序, 由于文件名是第9项(默认以空格或者tab为分割符,可以用"-t"指定其他分隔符),所以sort的选项设置为"-k 9,9":drwxrwxr-x 7 bvt bvt 4096 Nov 12 10:24 datasource_core $ ll Common Element Service | sort -k 9,9
sort支持用多个-k选项对多个域做不同种类的排序,下面的命令首先对第一个域做字母排序,然后对第二个域做数字排序:
sort -k 1,1 -k 2n distros.txt
-
source .profile 载入环境变量;
-
stat 显示文件详细信息
-
su 参考 Switch User Command in Linux
-
sudo passwd 在新装好系统中为root设置密码;
-
tar -zxvf或者gzip -d加tar -xvf解压缩;
-
tee 将stdin的内容同时重定向到stdout和文件中:
ls /usr/bin|tee ls.txt|grep zip
-
time 计算程序运行时间,输出中的total值是时钟时间,还有一个
/usr/bin/time -p
指令输出的"real"值是实际的时钟时间;实例见 Calculate PI in 3 Languages Dynamically ; -
top 具体功能以及与prstat的关系待查;
-
touch 更改文件的最后修改时间,
-r <filename>
:设置为的时间; -d <timeString>
:从字符串读取时间,可以是相对时间,这二者连用, 可以实现“将A文件的时间设为比B文件早两天”这样的效果:touch -r fileB -d '-2 days' fileA
-
tr 字符变换,例如将多行文本汇总到一行,以逗号分隔:cat
| tr '\n' ',' -
tree 用树状结构显示文件夹,-L 3表示只显示最上面3层目录;-d表示只显示目录,不显示文件;
-
type 显示命令类型,有shell builtin(如type自身),shell function(如cd),以及外部命令,显示命令文件路径;
-
uptime 系统已经运行的时间、用户数、CPU负载量,与top指令的第一行输出相同;
-
whereis 查找可执行文件和文档的位置, 例如Shell中无法执行
ifconfig
时用whereis
可以找到ifconfig
所在的路径; -
which 显示命令在PATH环境变量中第一个出现的位置, 尤其适用于一个命令在PATH中有多个版本,可以用which确定当前执行版本的完整路径;
-
who: list all users logged onto the host
-
whois: get the owner information of a domain, for example: whois boco.com.cn
-
xargs
-
xxd: 以16进制显示文件内容,与UltraEdit的Hex模式类似;
-
zip:
zip <file_name> -r <folder_name>