tar jxvf ****.tar.bz2 //解码.bz2格式的文件
tar cjvf ****.tar.bz2 ***/
tar czvf ****.tar.gz ***/ //打包文件时先是要生成的打包文件的名字,再跟要打包的目录
du -sh //显示当前文件夹下所有文件的总大小
du * -sh //列出当前文件夹下所有单个文件的大小
du ./hellowrorld.elf -sh //列出当前文件夹下指定文件的大小
/dev/cdrom /dev下为主机硬件固有的,/media下为系统自动挂载的
mount -t udf /dev/cdrom /mnt // 其中,udf为光盘的格式
objdump -p libdb-4.6.so //查看某个库所依赖的库
cd /etc/rc.d/rc5.d && ls | grep S80sendmail && mv S80sendmail S80sendmail.bak //禁用sendemail服务,加快redhat server开机速度
Alt+F2,xterm->调出终端,Alt+F10->全屏终端;
!m //执行上一个以m开头的命令
indent file.c //调整.c文件的格式
file ***.tar.bz2 //查看该文件是用什么压缩的
bzip2 -d ***.tar.bz2 //发现是用bzip2时
tar xf ***.tar //解压缩.tar文件
ar crs lib.a foo.o bar.o //c参数表示创建一个档案文件,r参数表示增加文件到所创建的库文件中,s参数是为了生成索引以提高连接速度
ar x lib.a //解压指定静态库
ar -d lib.a foo.o //删除指定静态库中的指定.o文件
ar -t lib.a //查看静态库中包含的内容
man objdump或者objdum --help //查看objdump的使用说明
cp -rv /opt/workspace/* . //拷贝workspace文件夹下的内容,不拷贝workspace文件夹
cp -rv /opt/workspace . //拷贝workspace文件夹及其中的内容
du -sh vmlinux //查看vmlinux文件的大小
unzip ***.zip //.zip文件在linux下的解压
tar x ***.tar //ubuntu下解压.tar文件
卸载优盘命令:umount /media/KINGSTON
tar jxvf /media/KINGSTON/linux.tar.bz2 -C .
:1,$ s/str1/str2/g //将文件中所有行中的str1都替换成str2
init 3 //进入多用户字符界面
init 5 //进入图形界面
init 0 //关机
init 1 //重启并进入单用户字符模式
shutdown -h now //现在立即关机
shutdown -r now //现在立即重启
Ctrl + Alt + 退格键 //redhat下的注销快捷键
xinetd是个超级守护进程,里面有很多子进程依赖于此进程的启动,目的是不把一些很重要的进程独立出来而过多占用系统资源
vim /etc/sudoers //添加某用户root
root ALL=(ALL) ALL
lzh ALL=(ALL) ALL
用netstat -anp | grep873查看端口是否起来,
用ps -aux | grep rsync检查进程是否存在。
/etc/init.d/iptables stop //关闭防火墙,status,查看状态,restart,重启防火墙
netstat -an //查看端口信息
echo
$? 表示返回上条命令执行情况,如果成功则返回0,否则返回非0
which modprobe //查找modprobe所在目录
/etc/rc.d/rc.local
系统启动中最后执行的脚本,常用来设置软件随机自启动,如,echo "/sbin/modprobe nvidia" >>rc.local
硬盘总容量=主分区(包括扩展分区)总容量
扩展分区容量=逻辑分区总容量
cp -rp//-r递归拷贝,-p,preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links, xattr, all
./configure --prfix=/opt/fcitx //将ftix安装在/opt/fctix下
如果想要fcitx只要执行fcitx就能执行,请配置环境变量,或者在/usr/bin中做一个fcitx的软链接
如果要删除fcitx,直接删除/opt/fcitx文件夹即可
把源码包安装的软件,都指定安装在/opt目录下,这样就知道软件安装到哪里了,也方便卸载;
ln -s /opt/fcitx/bin/fcitx /usr/bin/fcitx
fdisk -l //查看分区
df -h //查看文件系统挂载位置
(hd[0-n],y) 硬盘分区的表示方法的用途;主要是用来指定 /boot所在的分区;
ls -lh
ll -a
IDE接口硬盘分区的两种表示方法;
硬盘分区的第一种表示方法/dev/hd[a-z]X;
硬盘的分区也有两种表示方法,一种是/dev/hd[a-z]X,这个a-z表示a、b、c......z ,X是一个从1开始的正整数;比如/dev/hda1,/dev/hda2 .... /dev/hda6,/dev/hda7 ... ... 值得注意的是/dev/hd[a-z]X,如果X的值是1到4,表示硬盘的主分区(包含扩展分区);逻辑分区从是从5开始的,比如/dev/hda5肯定是逻辑分区了;
我 用fdisk -l 就能列出一个硬盘的分区表
硬盘分区的第二种表示方法(hd[0-n],y);
我们前面已经说过了整块硬盘也有两种表示方法,一种是/dev/hd[a-z]的,另种方法是hd[0-n]; 一个硬盘分区首先要大确认在哪个硬盘,然后再确认他所在的位置;做个比喻,比如我住在XXX宾馆YYY号房间,我仅仅是告诉别人我在XXX宾馆不够的,还要告诉他YYY房间,这样来找我的人才能找到我;所以我们要知道一个硬盘分区,除了知道/dev/hd[a-z]以外,还要知道他在哪个位置,也就有前面所说的/dev/hd[a-z]X的说法,确认了分区在/dev/hd[a-z]后,还要通过X来确认具体位置;
本标题中说的是另外一种表示方法 (hd[0-n],y),hd[0-n]我们知道这是硬盘的表示方法之一,如果不懂,请看看前面的东西吧;那这里的y是什么意思呢?y的值是 /dev/hd[a-z]X中的 X-1 ;
/dev/hda1 等同 (hd0,0)
/dev/hda2 等同 (hd0,1) 注:看好了,这个是扩展分区,在Linux还是Windows是不能挂载的; //Extended
/dev/hda5 等同 (hd0,4)
/dev/hda6 等同 (hd0,5)
/dev/hda7 等同 (hd0,6)
/dev/hda8 等同 (hd0,7)
more /etc/fstab
linux分区的硬盘挂载配置文件在/etc/fstab中;
touch /boot/grub/menu.lst
fdisk -l //可以查看到硬盘是/dev/hda还是/dev/hdb
df -lh //查看系统运行所挂载的分区,可以看到/boot是否是独立的分区;
du -sh
su - //切换到root用户,并切换到其家目录
locate grub //查找grub
useradd lzh //默认会/home/lzh
userdel -r lzh //删除用户及其家目录
ll -a //查看隐藏文件
修改/proc/sys/kernel/pid_max修改最大进程数,默认是32768个(short int短整型的最大值)
查看文件格式
file pmon
将本地文件拷贝到远程机器上
scp /path/to/file root@172.16.14.109:/path/to/remote
查看ubuntu和gcc的版本
cat /proc/version
ubuntu进入字符模式:
ctrl+alt+F1~F6
ctrl+alt+F8切换回图形界面
把下载好的文件解压到/tmp目录:
>> tar zxvf samba-xxxxxx.tgz -C /tmp修改环境变量:
vi /etc/profile
export PATH=/opt/gcc-3.4.6-2f/bin:$PATH
环境变量的设置亦可通过修改当前用户根目录下的.bashrc文件来完成,方法是把上述export一句添加至该文件最后,保存退出后,执行命令
source ~/.bashrc
再然后echo查看下刚才设置的环境变量是否生效,如:echo $PATH
修改./banshrc只是修改了当前账户的环境变量
如何挂载磁盘?
mount操作步骤:
fdisk -l:查看U盘文件格式,如/dev/sdb1
mount -t vfat /dev/sdb1 /mnt
cd /mnt
cp * /home
mv * /home
umount /mnt
umount /dev/sdb1
删除文件夹:rmdir mylib/
如何硬盘挂载光驱和软驱?
一般来说CDROM的设备文件是/dev/hdc,软驱的设备名是/dev/fd0
# mkdir /mnt/cdrom
# mount /dev/hdc /mnt/cdrom //硬盘挂载光驱 //
# mkdir /mnt/floppy
# mount /dev/fd0 /mnt/floppy //硬盘挂载软驱 //
mv libmpfr.so.1 libmpfr.so.1.2.0 ..
tar zxvf mylib.tar.gz /opt/gcc-4.3-ls232/mylib/
cp -R ./opt/gcc-3.4.6-2f/ /opt
设置经常使用的路径:
#mine
export SD=/home/lzh/study
然后在终端上输入cd $SD即可到达指定目录
yum list installed firefox//查看已安装的firefox
//This will create a backup of your current firefox user settings and directory and store them in a file firefox-backup.tar.gz in your home directory.
tar cvzf firefox-backup.tar.gz ~/.mozilla
cp -a -p /etc/yum.repos.d/ /etc/yum.repos.d.bak
yum makecache 是 将服务器上的软件包信息 现在本地缓存,以提高 搜索 安装软件的速度
cd -: 回到上一次进入的目录;上一次工作目录
sed? ar? awk?
一般文件的比较用了vim -d
文件夹的比较也用Meld(一款不错的Linux平台下的开源软件)
Ctrl+U:清除当前命令行上的命令
~/.bashrc_history中记录上次登录时使用过的命令;
alias:查看当前的命令别名;
alias lm='ls -al'
name=VBird
bash //进入子程序
echo $name//不现实内容
exit//退出子程序
export name//通过export将变量name变成环境变量后,就能够在子程序下应用了
unset name//取消变量的设定
如何进入到当前核心的模块目录?
cd /lib/modules/`uname -r`/kernel
`:引号;‘':单引号;":双引号;
locate:可以列出所有的相关文件的文件名;
`之内的命令将先执行,而其执行出来的结果将作为外部输入信息:
ls -l `locate crontab`
先用locate将文件名数据都列出来,再用ls命令来处理;
什么情况下设置变量?
1.简化路径名称;
2.脚本里;
当前我的shell环境中,有多少变量?
通过env,export,set命令来查看;
自定义变量转成环境变量:export
如果仅下达export而没有变量,此时,将会把所有的"环境变量"显示出来;
数组的定义与显示:
var[1]="small ming"
var[2]="big ming"
var[3]="good ming"
echo "${var[1]},${var[2]},${var[3]}"
small ming,big ming,good ming
获取变量的两种方法:
echo $HOME
echo ${HOME}
ulimit:限制用户的某些系统资源
alias lm='ls -l | more' //定义命令别名
unlias lm //取消命令别名
alias h='history'
由于系统默认并不主动搜索当前目录下的执行文件,那么要如何执行"当前目录下的执行文件"?
./command
修改~/.bashrc后,不需要注销,立即使用source ~/.bashrc,就可以将刚刚最新设置的内容读进当前环境中;
通配符(wild card)
# 注释,常用在脚本中,视为说明
; 连续命令的分隔
$ 变量之前需要加的变量替换值
' 单引号,不具有变量置换的功能
" 双引号,具有变量置换的功能
`` 两个"`"中间为可以先执行的命令
[] 中间为字符的组合
引号`的功能,也可以利用$()来替换,例如:
cd /lib/modules/'uname -r'/kernel
cd /lib/modules/$(uname -r)/kernel
cp test[1-5] /tmp
#将test1,test2,test3,test4,test5若存在的话,就复制到/tmp
cp test[!1-5] /tmp
#只要不是test1,test2,test3,test4,test5,其之外的其它test?,只要存在的话,就复制到/tmp中
注意,[1-5]里"表示只有一个字符",但范围可以为1~5
#只要文件名里含有至少一个大写字母,就复制
cp *[A-Z]* /tmp
#列出在/etc/下所有含有数字的文件
ls -ald /etc/*[0-9]*
#只想找出含有3及5的文件名的文件
ls -ald /etc/*[35]*
如果是不想要某些范围或字母呢?使用[!]即可。
#不想要有小写字母开头的文件
ls -ald /etc/[!a-z]*
find /home -name testing
Ctrl+D:eof 输入结束
last可以获得最近一个月登录主机的用户信息,但last的最后两行并非帐号内容,请问,如何通过一行命令串取得这个月份登录系统的总人次?
注:由于last会在最下面两行输出空白行与wtmp字样,因此,我们利用grep取出非空白行,以及去除wtmp那一行,再计算行数;
last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l
将ls的数据存一份到~/homefile中,同时屏幕也有输出消息:
ls -l /home | tee ~/homefile | more
将DOS文件的换行符^M符号删除:
cat /home/test/dostxt | tr -d '\r' > dostxt-noM
将/etc/man.config内行首为MANPATH的字样去除,仅取前3行,并将所有符号都列出来:
grep '^MANPATH' /etc/man.config | head -n 3 | cat -A
split可以将一个打文件,根据文件大小或函数来拆分,将大文件拆分为小文件,快速又有效:
split -bl file PREFIX
参数:
-b:后接要拆分的文件大小,可加单位,例如b,k,m等
-l:按行数进行拆分
范例:
/etc/termcap有700多k,想要分成300k一个文件
cd /tmp; split -b 300k /etc/termcap termcap //文件名可以随意取,只要写上前导文字,就会以xxxaa,xxxab,xxxac等方式来建立小文件;
ls -l termcap*
如何将上面的3个小文件合成一个文件,文件名为termcapback
cat termcap* >> termcapback
将/home里面的文件打包,但打包的数据不是记录到文件,而是传送到stdout;
经过管道后,将tar -cvf - /home传送给后面的tar -xvf -;
后面的这个-则是取用前一个命令的stdout,因此,就不需要使用file了
tar -cvf - /home | tar -xvf -
(^)符号,在字符集合符号(括号[])之内与之外是不同的。
在[]之内代表"反向选择",在[]之外则代表定位在行首。要区分清楚。
在shell脚本或设置文件中,空白行与开头为#的那一行是注释,如果要将数据提供给别人参考时,可以将这些数据略掉,以节省纸张
grep -v '^$' /etc/syslog.conf | grep -v '^#'
*表示重复0个或多个前面的字符,因此o*表示拥有空字符或一个o以上的字符;
至少两个o以上的字符串,就需要ooo*;
grep -n 'ooo*' regular_express.txt
g*g里的g*代表空字符或一个以上的g
如何得到g...g呢?g.*g
因为*可以是0或多个重复前面的字符,而.是任意字符,所以.*代表零个或者多个任意字符
如果想限制一个范围内的重复字符数呢?这时就要使用限定范围的字符{}了。
因为({)与(})的符号在shell中有特殊意义,因此,必须要使用转义字符(\)让它失去特殊意义。
找到两个o的字符串:
grep -n 'o\{2\}' regular_express.txt
找出g后面接2~5个o。然后再接一个g的字符串:
grep -n 'go\{2,5\}g' regular_express.txt
想要的是两个o以上的goooo...g?除了可以使用gooo*g,也可以使用:
grep -n 'go\{2,\}g' regular_express.txt
因为*为重复前一个字符的符号,因此,在*之前必须要紧接着一个重复字符。任意字符则为.*
\{n,m\}
连续n到m个的"前一个重复字符"
若为\{n\}则是连续重复n个前一个字符,
若是\{n,\}则是连续重复n个以上前一个字符
注意;
"正则表达式的特殊字符"与一般在命令行输入命令的"通配符"并不相同!!
例如,在通配符中,*代表0到无线多个字符,但在正则表达式中,*则是重复0到多个前一个字符的意思
例如:
不支持正则表达式的ls工具中,若使用"ls -l *"代表任意文件名的文件,而"ls -l a*"代表以a开头的任何文件名的文件。
但在正则表达式中,要找到含有以a开头的文件,则必须要这样做(需搭配支持正则表达式的工具):
ls | grep -n '^a.*'
另外,通配符的反向选择为[!range],正则表达式则是[^range]
鸟哥P268:基础的正则表达式特殊字符
要10位,但小数点有两位,即为%10.2f;
要让某些分区在开机的时候就自动挂载,要记得将其写入/etc/fstab当中,或者是将命令完整地写到/etc/rc.d/rc.local当中;
cd /lib/modules/`uname -r`/kernel/drivers/net
modinfo 3c59x.ko
不管有没有启动网卡,都可以使用ifconfig eth0来查询网卡卡号;
Linux kernel 2.6以后的版本,默认都会将内核源代码放在/usr/src/kernels/(version)目录内;
手动分配一个私有IP:
ifconfig eth0 192.168.1.100
DNS功能就是进行主机名称与IP的对应,而/etc/resolv.conf就是设置DNS IP的文件;
/etc/sysconfig/network-scripts/ifcfg-eth0:设置网卡参数的文件;
网络方面的启动指令:
/etc/init.d/network restart
这个script最重要,因为可以一口气重新启动整个网络的参数;
ifup eth0(ifdown eth0)
启动或者是关闭某个网络接口;
这两个script会主动到/etc/sysconfig/network-scripts/目录下,读取适当的配置文件;
修改主机名称:/etc/sysconfig/network
设置网络参数:/etc/sysconfig/network-scritps/ifcfg-eth0
启动与关闭网卡:ifup/ifdown eth0
设置DNS的IP:/etc/resolv.conf
追查IP:nslookup tw.yahoo.com
more /var/log/messages
nl命令;
仅显示第5~7行:nl /etc/passwd | sed -n '5,7p'
awk的内置变量
NF 每一行($0)拥有的字段总数
NR 当前awk所处理的是"第几行"数据
FS 当前的分隔符,默认空格键
awk是"以行为单位处理",而"以字段为最小的处理单位";
注意,awk后续的所有操作用(')括住,所以,如果想以print显示,记住,非变量的文字部分,都需要使用双引号来定义;
last | awk '{print $1 "\t lines: " NR "\t columes: " NF}'
例:在/etc/passwd中是以冒号(:)来分隔字段的,假设要查看第三栏小于10一下的数据,并且仅列出帐号与第三栏,如下:
cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t " $3}'
第一行没有正确的显示出来,这是因为我们读入第一行的时候,那些变量$1、$2等默认还是以空格键作为分隔的,所以虽然定义了FS=":",却只能在第二行后才开始生效。我们可以使用BEGIN关键词预先设置awk的变量:
cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t" $3}'
假设有一个薪资数据表,内容是这样的:
Name 1st 2nd 3th
VBird 23000 24000 25000
DMTsai 21000 20000 23000
Bird2 43000 42000 41000
如何计算每个人的总额?而且,还想要格式化输出。
可以将上面的数据存储成一个名为pay.txt的文件,则:
cat pay.txt | \
> awk 'NR==1{printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total" }
NR>=2{total = $2 + $3 + $4
printf "%10s %10d %10d %10d %10.2f\n",$1, $2, $3, $4, total}'
diff用于比较两个文件之间的不同,一般用在ASCII纯文本文件的比较;
例:假设要将/etc/passwd的第4行删除,第6行替换成为"no six line",新文件放到/tmp/test里,
mkdir -p /tmp/test
cat /etc/passwd | \
>sed -e '4d' -e '6c no six line' > /tmp/test/passwd
#注意,sed后面如果要有超过两个以上的操作时,每个操作前面需要加-e
比较/tmp/test/passwd与/etc/passwd的不同:
diff /etc/passwd /tmp/test/passwd
cmp主要是用于比较两个文件,它主要用"位"为单位去比较,因此,可以比较二进制文件;
注意:diff主要是以"行"为单位比较,cmp则是以"位"为单位比较;
shell脚本的执行:
sh sh01.sh
chmod a+x sh01.sh; ./sh01.sh
read -p "Please input your first name: " firstname
read -p "Please input your last name: " lastname
echo -e "\nYour full name is: $firstname $lastname"
shell中的运算方式:var=$((运算内容))
例如,13对3取余数,结果是13=4*3+1,所以余数是1;
nu=$((13%3)); echo $nu
判断当前路径下是否存在/drv文件夹:
test -e ./drv && echo "exit" || echo "Not exit"
使用read来读取用户输入的变量内容;
gVim中文件另存为新文件的方法
另存大家经常要用到,这里给出三种方法:
方法一:使用:saveas命令
:saveas <newfilename>
方法二:使用:w命令写入新文件名
:w <newfilename>
:edit #
方法三:使用:file命令
:file <newfilename>
:w
Fedora:
Ctrl+Alt+Shift+F2_F6:进入字符界面
Alt+F7:返回到图形界面
给lzh设定密码:
passwd lzh
4个主要的网络服务端口:
80:www;22:ssh;21:ftp;25:mail;
top:类似windows中的任务管理器
ps aux:列出系统中的所有进程
kill 2683:杀死进程2683
setup==>system services==>寻找有无tftp,nfs等??
察看是否安装并启动tftp服务:
netstat -a | grep tftp
tftp的配置文件:vi /etc/xinetd.d/tftp
tftp服务器的启动:/etc/init.d/xinetd start
察看是否安装NFS服务器:rpm -q nfs-utils
NFS的配置:vi /etc/exports
启动NFS服务器:/etc/init.d/nfs start
重启NFS服务器:/etc/init.d/nfs restart
使用mount命令来挂载NFS服务器上的共享目录
mount -t nfs servername:/shared_dir /localdir
例:
mount -t nfs 10.168.1.100:/home /mnt/nfs
Linux与Linux之间通过NFS实现共享;
Windows与windows之间通过共享目录实现共享;
LInux与Windos之间怎么实现共享?Samba
Samba的配置:/etc/samba/smb.conf
添加samba用户名:smbpasswd -a lzh
设置完毕后:/etc/init.d/smb restart
从Windows中访问Linux:运行==>\\linux的IP==>输入用户名和密码
Samba添加用户
Useradd smb//添加smb系统用户
Smbpasswd -a smb//修改密码
系统设置——setup
Wireshark是一款非常优秀的,可在LInux和Windows上使用的开源网络协议分析器;
开机自动挂载硬盘驱动器至mnt文件夹:
mkdir /mnt/d
mkdir /mnt/e
vi /etc/fstab
who
df -l
函数查找命令:
find /bin -name "*off"
find ./ -name "*.c" | xargs grep avcodec_open
后台运行:
gvim hello.c &
mount smba:
mount -t cifs //192.168.10.103/hivie /mnt/hiview -o username=luzhonghui
mount -t cifs //172.16.14.43/upload /mnt/43 -o username=luzhonghui
./configure && make && make install
ps aux
动态库的路径问题
为了让执行程序顺利找到动态库,有三种方法:
(1)把库拷贝到/usr/lib和/lib目录下。
(2)在LD_LIBRARY_PATH环境变量中加上库所在路径。例如动态库libhello.so在/home/ting/lib目录下,以bash为例,使用命令:
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/ting/lib
(3) 修改/etc/ld.so.conf文件,把库所在的路径加到文件末尾,并执行ldconfig刷新。这样,加入的目录下的所有库文件都可见、
修改环境变量:
方法一、在命令行中运行
XXX@ubuntu:~$ LD_LIBRARY_PATH=/usr/local/lib #设置库文件路径
XXX@ubuntu:~$ export LD_LIBRARY_PATH #export
XXX@ubuntu:~$ gst-editor
这样虽然可以运行,但每次运行时都要在命令行中设置路径,很麻烦
方法二、直接修改环境变量配置文件(推荐)
在ubuntu中,环境变量配置文件所在路径为: /etc中
文件名为: ld.so.conf
修改步骤如下:
XXX@ubuntu:~$ cd etc #进入/etc中
XXX@ubuntu:~$ sudo gedit ld.so.conf #用gedit打开
加入一行
/usr/local/lib
保存并关闭
再在命令行中运行:
XXX@ubuntu:~$ sudo ldconfig
make clean
make distclean
find ./ -name hello
export DISPLAY=:0.0
本文汇总了大量常用的Linux命令,覆盖文件操作、系统管理、网络配置等多个方面,旨在帮助用户更高效地管理和使用Linux系统。

被折叠的 条评论
为什么被折叠?



